Run the same check over a small table of inputs.

Table Cases

TableCases.kt
fun addBonus(value: Int, bonus: Int): Int {
    return value + bonus
}

fun main() {
    val bonus = 
    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 = 
    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 = 
    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")
}
testing Table-driven tests keep inputs and expected outputs close together so the same assertion can run repeatedly.