Testing Basics
Table Cases
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
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")
}
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 = 0for (index in inputs.indices)
pass 1 of 311for (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 pass indexinputs[index]1 0 2 2 1 4 3 2 6 fun addBonus(value: Int, bonus: Int): Int
pass 1 of 31fun addBonus(value2: Int, bonus1: Int): Int {2 return value2 + bonus13}All 3 passes — pass 1 is the card above pass value1 2 2 4 3 6 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]3values this step[2, 4, 6]inputs0index[3, 5, 7]expectedif (ok)
pass 1 of 315if (oktrue) {16 passed0++17}All 3 passes — pass 1 is the card above pass passed1 0 2 1 3 2 println("case=$index, ok=$ok")
19 println("case=$index0, ok=$oktrue")20}outputcase=0, ok=trueactual ← 5, ok ← true
11for (index in inputs.indices) {12 val actual→ 5 = addBonus(inputs[index]4, bonus1)13 val ok→ true = actual5 == expected[index]5values this step[2, 4, 6]inputs1index[3, 5, 7]expectedprintln("case=$index, ok=$ok")
19 println("case=$index1, ok=$oktrue")20}outputcase=1, ok=trueactual ← 7, ok ← true
11for (index in inputs.indices) {12 val actual→ 7 = addBonus(inputs[index]6, bonus1)13 val ok→ true = actual7 == expected[index]7values this step[2, 4, 6]inputs2index[3, 5, 7]expectedprintln("case=$index, ok=$ok")
19 println("case=$index2, ok=$oktrue")20}outputcase=2, ok=trueprintln("passed=$passed")
22 println("passed=$passed3")23}outputpassed=3
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 = 0for (index in inputs.indices)
pass 1 of 311for (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 pass indexinputs[index]1 0 2 2 1 4 3 2 6 fun addBonus(value: Int, bonus: Int): Int
pass 1 of 31fun addBonus(value2: Int, bonus0: Int): Int {2 return value2 + bonus03}All 3 passes — pass 1 is the card above pass value1 2 2 4 3 6 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=falsevalues this step[2, 4, 6]inputs[3, 5, 7]expectedactual ← 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=falsevalues this step[2, 4, 6]inputs[3, 5, 7]expectedactual ← 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=falsevalues this step[2, 4, 6]inputs[3, 5, 7]expectedprintln("passed=$passed")
22 println("passed=$passed0")23}outputpassed=0
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 = 0for (index in inputs.indices)
pass 1 of 311for (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 pass indexinputs[index]1 0 2 2 1 4 3 2 6 fun addBonus(value: Int, bonus: Int): Int
pass 1 of 31fun addBonus(value2: Int, bonus3: Int): Int {2 return value2 + bonus33}All 3 passes — pass 1 is the card above pass value1 2 2 4 3 6 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=falsevalues this step[2, 4, 6]inputs[3, 5, 7]expectedactual ← 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=falsevalues this step[2, 4, 6]inputs[3, 5, 7]expectedactual ← 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=falsevalues this step[2, 4, 6]inputs[3, 5, 7]expectedprintln("passed=$passed")
22 println("passed=$passed0")23}outputpassed=0