
commonMain.io.kotest.matchers.collections.contain.kt Maven / Gradle / Ivy
package io.kotest.matchers.collections
import io.kotest.assertions.print.print
import io.kotest.equals.Equality
import io.kotest.matchers.Matcher
import io.kotest.matchers.MatcherResult
import io.kotest.matchers.should
import io.kotest.matchers.shouldNot
// Infix
infix fun Iterable.shouldNotContain(t: T): Iterable = shouldNotContain(t, Equality.default())
infix fun Array.shouldNotContain(t: T): Array = shouldNotContain(t, Equality.default())
infix fun Iterable.shouldContain(t: T): Iterable = shouldContain(t, Equality.default())
infix fun Array.shouldContain(t: T): Array = shouldContain(t, Equality.default())
// Should not
fun Iterable.shouldNotContain(t: T, comparator: Equality): Iterable = apply {
toList() shouldNot contain(t, comparator)
}
fun Array.shouldNotContain(t: T, comparator: Equality): Array = apply {
asList().shouldNotContain(t, comparator)
}
// Should
fun Iterable.shouldContain(t: T, comparator: Equality): Iterable = apply {
toList() should contain(t, comparator)
}
fun Array.shouldContain(t: T, comparator: Equality): Array = apply {
asList().shouldContain(t, comparator)
}
// Matcher
fun > contain(t: T, verifier: Equality = Equality.default()) = object : Matcher {
override fun test(value: C) = MatcherResult(
value.any { verifier.verify(it, t).areEqual() },
{
"Collection should contain element ${t.print().value} based on ${verifier.name()}; " +
"but the collection is ${value.print().value}"
},
{ "Collection should not contain element ${t.print().value} based on ${verifier.name()}" }
)
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy