
commonMain.io.kotest.data.forAll2.kt Maven / Gradle / Ivy
package io.kotest.data
import io.kotest.mpp.paramNames
import kotlin.jvm.JvmName
suspend fun forAll(vararg rows: Row2, testfn: suspend (A, B) -> Unit) {
val params = testfn.paramNames
val paramA = params.getOrElse(0) { "a" }
val paramB = params.getOrElse(1) { "b" }
table(headers(paramA, paramB), *rows).forAll { a, b -> testfn(a, b) }
}
@JvmName("forall2")
inline fun forAll(table: Table2, testfn: (A, B) -> Unit) = table.forAll(testfn)
inline fun Table2.forAll(fn: (A, B) -> Unit) {
val collector = ErrorCollector()
for (row in rows) {
try {
fn(row.a, row.b)
} catch (e: Throwable) {
collector += error(e, headers.values(), row.values())
}
}
collector.assertAll()
}
suspend fun forNone(vararg rows: Row2, testfn: suspend (A, B) -> Unit) {
val params = testfn.paramNames
val paramA = params.getOrElse(0) { "a" }
val paramB = params.getOrElse(1) { "b" }
table(headers(paramA, paramB), *rows).forNone { a, b -> testfn(a, b) }
}
@JvmName("fornone2")
inline fun forNone(table: Table2, testfn: (A, B) -> Unit) = table.forNone(testfn)
inline fun Table2.forNone(fn: (A, B) -> Unit) {
for (row in rows) {
try {
fn(row.a, row.b)
} catch (e: AssertionError) {
continue
}
throw forNoneError(headers.values(), row.values())
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy