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