Skip to content

Commit b6bc864

Browse files
committed
Create a generic test runner
1 parent ec5e23f commit b6bc864

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package nl.fifthpostulate
2+
3+
import nl.fifthpostulate.radix.Radix
4+
import nl.fifthpostulate.standard.Standard
5+
import org.junit.jupiter.api.BeforeEach
6+
import kotlin.test.Test
7+
import kotlin.test.assertEquals
8+
9+
class FizzBuzzTest {
10+
lateinit var fizzbuzz : FizzBuzz
11+
12+
@BeforeEach
13+
fun createFizzBuzz() {
14+
fizzbuzz = Radix()
15+
}
16+
17+
@Test
18+
fun verify_fizzbuzz() {
19+
listOf(Standard(), Radix()).forEach { subject ->
20+
with(subject) {
21+
verify().fizzbuzzOf(1).shouldEqual("1")
22+
verify().fizzbuzzOf(2).shouldEqual("2")
23+
verify().fizzbuzzOf(3).shouldEqual("Fizz")
24+
verify().fizzbuzzOf(5).shouldEqual("Buzz")
25+
verify().fizzbuzzOf(6).shouldEqual("Fizz")
26+
verify().fizzbuzzOf(10).shouldEqual("Buzz")
27+
verify().fizzbuzzOf(15).shouldEqual("FizzBuzz")
28+
}
29+
30+
}
31+
}
32+
}
33+
34+
fun FizzBuzz.verify(): FizzBuzzTestCase =
35+
FizzBuzzTestCase(this)
36+
37+
class FizzBuzzTestCase(val fizzbuzz: FizzBuzz) {
38+
fun fizzbuzzOf(n : Int): FizzBuzzExpectation =
39+
FizzBuzzExpectation(fizzbuzz, n)
40+
41+
}
42+
43+
class FizzBuzzExpectation(val fizzbuzz: FizzBuzz, val n : Int) {
44+
fun shouldEqual(expected: String) {
45+
val actual = fizzbuzz.of(n)
46+
assertEquals(actual, expected, "fizzbuzz.of($n) should equal \"$expected\", but was \"$actual\"")
47+
}
48+
}

0 commit comments

Comments
 (0)