Disable tests without answers
This commit is contained in:
parent
5c94aed258
commit
81a488aaee
@ -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<String, (BaseDayTest) -> 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<Any, Any>(instance, method).get().invoke()
|
||||
|
||||
@Test
|
||||
fun `part1 example result`() {
|
||||
Assertions.assertThat(exampleInstance.part1()).isEqualTo(part1Example)
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user