fix(day): refactor tests
• Fix a bug that caused ‹precompute()› not to be run if tests were run only for the second part. • Merge the ‹test()› overloads into one function: · bugs in one place · DRY Signed-off-by: Matej Focko <me@mfocko.xyz>
This commit is contained in:
parent
7341109f4d
commit
1613941d96
1 changed files with 15 additions and 19 deletions
34
src/Day.kt
34
src/Day.kt
|
@ -8,35 +8,31 @@ abstract class Day<Part1Answer, Part2Answer> {
|
|||
*/
|
||||
abstract fun precompute()
|
||||
|
||||
/**
|
||||
* Tests the first part of the challenge.
|
||||
*
|
||||
* @param part1Answer Expected answer to the 1º part of the challenge
|
||||
*/
|
||||
fun test(part1Answer: Part1Answer) {
|
||||
precompute()
|
||||
|
||||
print("Checking part 1:\t")
|
||||
check(part1() == part1Answer)
|
||||
println("[OK]")
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests both parts of the challenge.
|
||||
*
|
||||
* @param part1Answer Expected answer to the 1º part of the challenge;
|
||||
* also can be `null`, in such case, the 1º part is not being tested
|
||||
* @param part2Answer Expected answer to the 2º part of the challenge
|
||||
* @param part2Answer Expected answer to the 2º part of the challenge;
|
||||
* also can be `null`, in such case, the 2º part is not being tested
|
||||
*/
|
||||
fun test(
|
||||
part1Answer: Part1Answer?,
|
||||
part2Answer: Part2Answer,
|
||||
part2Answer: Part2Answer? = null,
|
||||
) {
|
||||
part1Answer?.let { test(it) }
|
||||
precompute()
|
||||
|
||||
print("Checking part 2:\t")
|
||||
check(part2() == part2Answer) { "Given answer: ${part2()}" }
|
||||
println("[OK]")
|
||||
part1Answer?.let {
|
||||
print("Checking part 1:\t")
|
||||
check(part1() == it) { "Given answer: ${part1()}" }
|
||||
println("[OK]")
|
||||
}
|
||||
|
||||
part2Answer?.let {
|
||||
print("Checking part 2:\t")
|
||||
check(part2() == it) { "Given answer: ${part2()}" }
|
||||
println("[OK]")
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in a new issue