Run the same check over a small table of inputs.

testing Table-driven tests keep inputs and expected outputs close together so the same assertion can run repeatedly.

Table Cases

bonus
TableCases.kt
Replay: real traced execution (multi-file project)
fun addBonus(value: Int, bonus: Int): Int {
    return value + bonus
}

fun main() {
    val bonus = 1
    val inputs = listOf(2, 4, 6)
    val expected = listOf(3, 5, 7)
    var passed = 0

    for (index in inputs.indices) {
        val actual = addBonus(inputs[index], bonus)
        val ok = actual == expected[index]

        if (ok) {
            passed++
        }

        println("case=$index, ok=$ok")
    }

    println("passed=$passed")
}
fun addBonus(value: Int, bonus: Int): Int {
    return value + bonus
}

fun main() {
    val bonus = 0
    val inputs = listOf(2, 4, 6)
    val expected = listOf(3, 5, 7)
    var passed = 0

    for (index in inputs.indices) {
        val actual = addBonus(inputs[index], bonus)
        val ok = actual == expected[index]

        if (ok) {
            passed++
        }

        println("case=$index, ok=$ok")
    }

    println("passed=$passed")
}
fun addBonus(value: Int, bonus: Int): Int {
    return value + bonus
}

fun main() {
    val bonus = 3
    val inputs = listOf(2, 4, 6)
    val expected = listOf(3, 5, 7)
    var passed = 0

    for (index in inputs.indices) {
        val actual = addBonus(inputs[index], bonus)
        val ok = actual == expected[index]

        if (ok) {
            passed++
        }

        println("case=$index, ok=$ok")
    }

    println("passed=$passed")
}
  1. bonus ← 1, inputs ← [2, 4, 6], expected ← [3, 5, 7], passed ← 0

    5fun main() {6    val bonus→ 1 = 1 //@bonus=0, 37    val inputs→ [2, 4, 6] = listOf(2, 4, 6)8    val expected→ [3, 5, 7] = listOf(3, 5, 7)9    var passed→ 0 = 0
  2. for (index in inputs.indices)

    pass 1 of 3
    11for (index0 in inputs.indices0..2) {12    val actual = addBonus(inputs[index]2, bonus1)13    val ok = actual == expected[index]
    All 3 passes — pass 1 is the card above
    passindexinputs[index]
    102
    214
    326
  3. fun addBonus(value: Int, bonus: Int): Int

    pass 1 of 3
    1fun addBonus(value2: Int, bonus1: Int): Int {2    return value2 + bonus13}
    All 3 passes — pass 1 is the card above
    passvalue
    12
    24
    36
  4. actual ← 3, ok ← true

    11for (index in inputs.indices) {12    val actual→ 3 = addBonus(inputs[index]2, bonus1)13    val ok→ true = actual3 == expected[index]3
    values this step[2, 4, 6]inputs0index[3, 5, 7]expected
  5. if (ok)

    pass 1 of 3
    15if (oktrue) {16    passed0++17}
    All 3 passes — pass 1 is the card above
    passpassed
    10
    21
    32
  6. println("case=$index, ok=$ok")

    19    println("case=$index0, ok=$oktrue")20}
    outputcase=0, ok=true
  7. actual ← 5, ok ← true

    11for (index in inputs.indices) {12    val actual→ 5 = addBonus(inputs[index]4, bonus1)13    val ok→ true = actual5 == expected[index]5
    values this step[2, 4, 6]inputs1index[3, 5, 7]expected
  8. println("case=$index, ok=$ok")

    19    println("case=$index1, ok=$oktrue")20}
    outputcase=1, ok=true
  9. actual ← 7, ok ← true

    11for (index in inputs.indices) {12    val actual→ 7 = addBonus(inputs[index]6, bonus1)13    val ok→ true = actual7 == expected[index]7
    values this step[2, 4, 6]inputs2index[3, 5, 7]expected
  10. println("case=$index, ok=$ok")

    19    println("case=$index2, ok=$oktrue")20}
    outputcase=2, ok=true
  11. println("passed=$passed")

    22    println("passed=$passed3")23}
    outputpassed=3
  1. bonus ← 0, inputs ← [2, 4, 6], expected ← [3, 5, 7], passed ← 0

    5fun main() {6    val bonus→ 0 = 07    val inputs→ [2, 4, 6] = listOf(2, 4, 6)8    val expected→ [3, 5, 7] = listOf(3, 5, 7)9    var passed→ 0 = 0
  2. for (index in inputs.indices)

    pass 1 of 3
    11for (index0 in inputs.indices0..2) {12    val actual = addBonus(inputs[index]2, bonus0)13    val ok = actual == expected[index]
    All 3 passes — pass 1 is the card above
    passindexinputs[index]
    102
    214
    326
  3. fun addBonus(value: Int, bonus: Int): Int

    pass 1 of 3
    1fun addBonus(value2: Int, bonus0: Int): Int {2    return value2 + bonus03}
    All 3 passes — pass 1 is the card above
    passvalue
    12
    24
    36
  4. actual ← 2, ok ← false

    11for (index in inputs.indices) {12    val actual→ 2 = addBonus(inputs[index]2, bonus0)13    val ok→ false = actual2 == expected[index]31415    if (ok) {16        passed++17    }1819    println("case=$index0, ok=$okfalse")20}
    outputcase=0, ok=false
    values this step[2, 4, 6]inputs[3, 5, 7]expected
  5. actual ← 4, ok ← false

    11for (index in inputs.indices) {12    val actual→ 4 = addBonus(inputs[index]4, bonus0)13    val ok→ false = actual4 == expected[index]51415    if (ok) {16        passed++17    }1819    println("case=$index1, ok=$okfalse")20}
    outputcase=1, ok=false
    values this step[2, 4, 6]inputs[3, 5, 7]expected
  6. actual ← 6, ok ← false

    11for (index in inputs.indices) {12    val actual→ 6 = addBonus(inputs[index]6, bonus0)13    val ok→ false = actual6 == expected[index]71415    if (ok) {16        passed++17    }1819    println("case=$index2, ok=$okfalse")20}
    outputcase=2, ok=false
    values this step[2, 4, 6]inputs[3, 5, 7]expected
  7. println("passed=$passed")

    22    println("passed=$passed0")23}
    outputpassed=0
  1. bonus ← 3, inputs ← [2, 4, 6], expected ← [3, 5, 7], passed ← 0

    5fun main() {6    val bonus→ 3 = 37    val inputs→ [2, 4, 6] = listOf(2, 4, 6)8    val expected→ [3, 5, 7] = listOf(3, 5, 7)9    var passed→ 0 = 0
  2. for (index in inputs.indices)

    pass 1 of 3
    11for (index0 in inputs.indices0..2) {12    val actual = addBonus(inputs[index]2, bonus3)13    val ok = actual == expected[index]
    All 3 passes — pass 1 is the card above
    passindexinputs[index]
    102
    214
    326
  3. fun addBonus(value: Int, bonus: Int): Int

    pass 1 of 3
    1fun addBonus(value2: Int, bonus3: Int): Int {2    return value2 + bonus33}
    All 3 passes — pass 1 is the card above
    passvalue
    12
    24
    36
  4. actual ← 5, ok ← false

    11for (index in inputs.indices) {12    val actual→ 5 = addBonus(inputs[index]2, bonus3)13    val ok→ false = actual5 == expected[index]31415    if (ok) {16        passed++17    }1819    println("case=$index0, ok=$okfalse")20}
    outputcase=0, ok=false
    values this step[2, 4, 6]inputs[3, 5, 7]expected
  5. actual ← 7, ok ← false

    11for (index in inputs.indices) {12    val actual→ 7 = addBonus(inputs[index]4, bonus3)13    val ok→ false = actual7 == expected[index]51415    if (ok) {16        passed++17    }1819    println("case=$index1, ok=$okfalse")20}
    outputcase=1, ok=false
    values this step[2, 4, 6]inputs[3, 5, 7]expected
  6. actual ← 9, ok ← false

    11for (index in inputs.indices) {12    val actual→ 9 = addBonus(inputs[index]6, bonus3)13    val ok→ false = actual9 == expected[index]71415    if (ok) {16        passed++17    }1819    println("case=$index2, ok=$okfalse")20}
    outputcase=2, ok=false
    values this step[2, 4, 6]inputs[3, 5, 7]expected
  7. println("passed=$passed")

    22    println("passed=$passed0")23}
    outputpassed=0