Table driven testing is similar to property-based testing, with the difference being that instead of generators providing random values, the set of input values is manually specified. The way we do this is by declaring a table structure that can be hardcoded into the test or loaded from a file.
The easiest approach is to simply include the table in the test, and this works fine if we have a small range of input values or edge cases that we want to test. For example, we may have a function with three Boolean input values and want to test the combinations. The first step is to define the table that contains the combinations we want to test:
val table = table( headers("a", "b", "c"), row(true, true, true), row(true, false, true), row(true, false, false) )
Notice that we use the headers and row...