diff --git a/2021/src/test/kotlin/BaseDayTest.kt b/2021/src/test/kotlin/BaseDayTest.kt index 9d22acd..811510b 100644 --- a/2021/src/test/kotlin/BaseDayTest.kt +++ b/2021/src/test/kotlin/BaseDayTest.kt @@ -7,17 +7,40 @@ import org.assertj.core.api.Assertions import org.junit.jupiter.api.AfterAll import org.junit.jupiter.api.Test import org.junit.jupiter.api.TestInstance +import org.junit.jupiter.api.extension.ConditionEvaluationResult +import org.junit.jupiter.api.extension.ExecutionCondition +import org.junit.jupiter.api.extension.ExtendWith +import org.junit.jupiter.api.extension.ExtensionContext + +class Condition : ExecutionCondition { + private val methods: Map Any?> = mapOf( + "part1 example result" to { it.part1Example }, + "part1 result" to { it.part1Answer }, + "part2 example result" to { it.part2Example }, + "part2 result" to { it.part2Answer }, + ) + + override fun evaluateExecutionCondition(context: ExtensionContext): ConditionEvaluationResult { + val methodName = context.testMethod.orElseGet { null }?.name + methods[methodName]?.let { + val instance = context.testInstance.get() as BaseDayTest + if (it(instance) == null) return ConditionEvaluationResult.disabled("") + } + return ConditionEvaluationResult.enabled("") + } +} @TestInstance(TestInstance.Lifecycle.PER_CLASS) +@ExtendWith(Condition::class) abstract class BaseDayTest(day: Int) { abstract val example: String - abstract val part1Example: Any - abstract val part2Example: Any + abstract val part1Example: Any? + abstract val part1Answer: Any? - abstract val part1Answer: Any - abstract val part2Answer: Any + abstract val part2Example: Any? + abstract val part2Answer: Any? private val ctx = lazy { BeanContext.run() @@ -25,7 +48,6 @@ abstract class BaseDayTest(day: Int) { val instance by lazy { ctx.value.getBean(ctx.value.findDayDefinition(day)) } - private val exampleCtx = lazy { BeanContext.build() .apply { registerExampleLoader(example) } @@ -39,9 +61,6 @@ abstract class BaseDayTest(day: Int) { arrayOf(ctx, exampleCtx).filter { it.isInitialized() }.forEach { it.value.stop() } } - private fun BeanContext.run(instance: Any, method: String) = - findExecutionHandle(instance, method).get().invoke() - @Test fun `part1 example result`() { Assertions.assertThat(exampleInstance.part1()).isEqualTo(part1Example) diff --git a/2021/src/test/kotlin/Day04Test.kt b/2021/src/test/kotlin/Day04Test.kt index 83468ea..2356327 100644 --- a/2021/src/test/kotlin/Day04Test.kt +++ b/2021/src/test/kotlin/Day04Test.kt @@ -24,8 +24,8 @@ class Day04Test : BaseDayTest(4) { """.trimIndent() override val part1Example = 4512 - override val part2Example = 1924 - override val part1Answer = 87456 + + override val part2Example = 1924 override val part2Answer = 15561 }