Run the same check over several input rows.

testing Table-driven tests keep repeated examples compact by storing inputs and expected outputs together.

Case Table

bonus
CaseTable.cs
Replay: real traced execution (multi-file project)
using System;

class Program
{
    static int AddBonus(int value, int bonus)
    {
        return value + bonus;
    }

    static void Main()
    {
        int bonus = 1;
        int[] inputs = { 2, 4, 6 };
        int[] expected = { 3, 5, 7 };
        int passed = 0;

        for (int i = 0; i < inputs.Length; i++)
        {
            int actual = AddBonus(inputs[i], bonus);
            bool ok = actual == expected[i];

            if (ok)
            {
                passed++;
            }

            Console.WriteLine($"case={i}, ok={ok}");
        }

        Console.WriteLine($"passed={passed}");
    }
}
using System;

class Program
{
    static int AddBonus(int value, int bonus)
    {
        return value + bonus;
    }

    static void Main()
    {
        int bonus = 0;
        int[] inputs = { 2, 4, 6 };
        int[] expected = { 3, 5, 7 };
        int passed = 0;

        for (int i = 0; i < inputs.Length; i++)
        {
            int actual = AddBonus(inputs[i], bonus);
            bool ok = actual == expected[i];

            if (ok)
            {
                passed++;
            }

            Console.WriteLine($"case={i}, ok={ok}");
        }

        Console.WriteLine($"passed={passed}");
    }
}
using System;

class Program
{
    static int AddBonus(int value, int bonus)
    {
        return value + bonus;
    }

    static void Main()
    {
        int bonus = 3;
        int[] inputs = { 2, 4, 6 };
        int[] expected = { 3, 5, 7 };
        int passed = 0;

        for (int i = 0; i < inputs.Length; i++)
        {
            int actual = AddBonus(inputs[i], bonus);
            bool ok = actual == expected[i];

            if (ok)
            {
                passed++;
            }

            Console.WriteLine($"case={i}, ok={ok}");
        }

        Console.WriteLine($"passed={passed}");
    }
}
  1. bonus ← 1, passed ← 0

    10static void Main()11{12    int bonus→ 1 = 1; //@bonus=0, 313    int[] inputs = { 2, 4, 6 };14    int[] expected = { 3, 5, 7 };15    int passed→ 0 = 0;
  2. for (int i = 0; i < inputs.Length; i++)

    pass 1 of 3
    17for (int i0 = 0; i < inputs.Length3; i++)18{19    int actual = AddBonus(inputs[i]2, bonus1);20    bool ok = actual == expected[i];
    All 3 passes — pass 1 is the card above
    passiinputs[i]
    102
    214
    326
  3. static int AddBonus(int value, int bonus)

    pass 1 of 3
    4{5    static int AddBonus(int value2, int bonus1)6    {7        return value2 + bonus1;8    }
    All 3 passes — pass 1 is the card above
    passvalue
    12
    24
    36
  4. actual ← 3, ok ← True

    18{19    int actual→ 3 = AddBonus(inputs[i]2, bonus1);20    bool ok→ True = actual3 == expected[i]3;
  5. passed ← 1

    pass 1 of 3
    22if (okTrue)23{24    passed→ 1++;25}
    All 3 passes — pass 1 is the card above
    passpassed
    10 1
    21 2
    32 3
  6. Console.WriteLine($"case={i}, ok={ok}");

    27    Console.WriteLine($"case={i0}, ok={okTrue}");28}
    outputcase=0, ok=True
  7. actual ← 5, ok ← True

    18{19    int actual→ 5 = AddBonus(inputs[i]4, bonus1);20    bool ok→ True = actual5 == expected[i]5;
  8. Console.WriteLine($"case={i}, ok={ok}");

    27    Console.WriteLine($"case={i1}, ok={okTrue}");28}
    outputcase=1, ok=True
  9. actual ← 7, ok ← True

    18{19    int actual→ 7 = AddBonus(inputs[i]6, bonus1);20    bool ok→ True = actual7 == expected[i]7;
  10. Console.WriteLine($"case={i}, ok={ok}");

    27    Console.WriteLine($"case={i2}, ok={okTrue}");28}
    outputcase=2, ok=True
  11. Console.WriteLine($"passed={passed}");

    30    Console.WriteLine($"passed={passed3}");31}
    outputpassed=3
  1. bonus ← 0, passed ← 0

    10static void Main()11{12    int bonus→ 0 = 0;13    int[] inputs = { 2, 4, 6 };14    int[] expected = { 3, 5, 7 };15    int passed→ 0 = 0;
  2. for (int i = 0; i < inputs.Length; i++)

    pass 1 of 3
    17for (int i0 = 0; i < inputs.Length3; i++)18{19    int actual = AddBonus(inputs[i]2, bonus0);20    bool ok = actual == expected[i];
    All 3 passes — pass 1 is the card above
    passiinputs[i]
    102
    214
    326
  3. static int AddBonus(int value, int bonus)

    pass 1 of 3
    4{5    static int AddBonus(int value2, int bonus0)6    {7        return value2 + bonus0;8    }
    All 3 passes — pass 1 is the card above
    passvalue
    12
    24
    36
  4. actual ← 2, ok ← False

    18{19    int actual→ 2 = AddBonus(inputs[i]2, bonus0);20    bool ok→ False = actual2 == expected[i]3;2122    if (ok)23    {24        passed++;25    }2627    Console.WriteLine($"case={i0}, ok={okFalse}");28}
    outputcase=0, ok=False
  5. actual ← 4, ok ← False

    18{19    int actual→ 4 = AddBonus(inputs[i]4, bonus0);20    bool ok→ False = actual4 == expected[i]5;2122    if (ok)23    {24        passed++;25    }2627    Console.WriteLine($"case={i1}, ok={okFalse}");28}
    outputcase=1, ok=False
  6. actual ← 6, ok ← False

    18{19    int actual→ 6 = AddBonus(inputs[i]6, bonus0);20    bool ok→ False = actual6 == expected[i]7;2122    if (ok)23    {24        passed++;25    }2627    Console.WriteLine($"case={i2}, ok={okFalse}");28}
    outputcase=2, ok=False
  7. Console.WriteLine($"passed={passed}");

    30    Console.WriteLine($"passed={passed0}");31}
    outputpassed=0
  1. bonus ← 3, passed ← 0

    10static void Main()11{12    int bonus→ 3 = 3;13    int[] inputs = { 2, 4, 6 };14    int[] expected = { 3, 5, 7 };15    int passed→ 0 = 0;
  2. for (int i = 0; i < inputs.Length; i++)

    pass 1 of 3
    17for (int i0 = 0; i < inputs.Length3; i++)18{19    int actual = AddBonus(inputs[i]2, bonus3);20    bool ok = actual == expected[i];
    All 3 passes — pass 1 is the card above
    passiinputs[i]
    102
    214
    326
  3. static int AddBonus(int value, int bonus)

    pass 1 of 3
    4{5    static int AddBonus(int value2, int bonus3)6    {7        return value2 + bonus3;8    }
    All 3 passes — pass 1 is the card above
    passvalue
    12
    24
    36
  4. actual ← 5, ok ← False

    18{19    int actual→ 5 = AddBonus(inputs[i]2, bonus3);20    bool ok→ False = actual5 == expected[i]3;2122    if (ok)23    {24        passed++;25    }2627    Console.WriteLine($"case={i0}, ok={okFalse}");28}
    outputcase=0, ok=False
  5. actual ← 7, ok ← False

    18{19    int actual→ 7 = AddBonus(inputs[i]4, bonus3);20    bool ok→ False = actual7 == expected[i]5;2122    if (ok)23    {24        passed++;25    }2627    Console.WriteLine($"case={i1}, ok={okFalse}");28}
    outputcase=1, ok=False
  6. actual ← 9, ok ← False

    18{19    int actual→ 9 = AddBonus(inputs[i]6, bonus3);20    bool ok→ False = actual9 == expected[i]7;2122    if (ok)23    {24        passed++;25    }2627    Console.WriteLine($"case={i2}, ok={okFalse}");28}
    outputcase=2, ok=False
  7. Console.WriteLine($"passed={passed}");

    30    Console.WriteLine($"passed={passed0}");31}
    outputpassed=0