Testing Basics
Case Table
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
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}");
}
}
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;for (int i = 0; i < inputs.Length; i++)
pass 1 of 317for (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 pass iinputs[i]1 0 2 2 1 4 3 2 6 static int AddBonus(int value, int bonus)
pass 1 of 34{5 static int AddBonus(int value2, int bonus1)6 {7 return value2 + bonus1;8 }All 3 passes — pass 1 is the card above pass value1 2 2 4 3 6 actual ← 3, ok ← True
18{19 int actual→ 3 = AddBonus(inputs[i]2, bonus1);20 bool ok→ True = actual3 == expected[i]3;passed ← 1
pass 1 of 322if (okTrue)23{24 passed→ 1++;25}All 3 passes — pass 1 is the card above pass passed1 0 → 1 2 1 → 2 3 2 → 3 Console.WriteLine($"case={i}, ok={ok}");
27 Console.WriteLine($"case={i0}, ok={okTrue}");28}outputcase=0, ok=Trueactual ← 5, ok ← True
18{19 int actual→ 5 = AddBonus(inputs[i]4, bonus1);20 bool ok→ True = actual5 == expected[i]5;Console.WriteLine($"case={i}, ok={ok}");
27 Console.WriteLine($"case={i1}, ok={okTrue}");28}outputcase=1, ok=Trueactual ← 7, ok ← True
18{19 int actual→ 7 = AddBonus(inputs[i]6, bonus1);20 bool ok→ True = actual7 == expected[i]7;Console.WriteLine($"case={i}, ok={ok}");
27 Console.WriteLine($"case={i2}, ok={okTrue}");28}outputcase=2, ok=TrueConsole.WriteLine($"passed={passed}");
30 Console.WriteLine($"passed={passed3}");31}outputpassed=3
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;for (int i = 0; i < inputs.Length; i++)
pass 1 of 317for (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 pass iinputs[i]1 0 2 2 1 4 3 2 6 static int AddBonus(int value, int bonus)
pass 1 of 34{5 static int AddBonus(int value2, int bonus0)6 {7 return value2 + bonus0;8 }All 3 passes — pass 1 is the card above pass value1 2 2 4 3 6 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=Falseactual ← 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=Falseactual ← 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=FalseConsole.WriteLine($"passed={passed}");
30 Console.WriteLine($"passed={passed0}");31}outputpassed=0
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;for (int i = 0; i < inputs.Length; i++)
pass 1 of 317for (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 pass iinputs[i]1 0 2 2 1 4 3 2 6 static int AddBonus(int value, int bonus)
pass 1 of 34{5 static int AddBonus(int value2, int bonus3)6 {7 return value2 + bonus3;8 }All 3 passes — pass 1 is the card above pass value1 2 2 4 3 6 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=Falseactual ← 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=Falseactual ← 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=FalseConsole.WriteLine($"passed={passed}");
30 Console.WriteLine($"passed={passed0}");31}outputpassed=0