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.AfterAll
|
||||||
import org.junit.jupiter.api.Test
|
import org.junit.jupiter.api.Test
|
||||||
import org.junit.jupiter.api.TestInstance
|
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)
|
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
|
||||||
|
@ExtendWith(Condition::class)
|
||||||
abstract class BaseDayTest(day: Int) {
|
abstract class BaseDayTest(day: Int) {
|
||||||
|
|
||||||
abstract val example: String
|
abstract val example: String
|
||||||
|
|
||||||
abstract val part1Example: Any
|
abstract val part1Example: Any?
|
||||||
abstract val part2Example: Any
|
abstract val part1Answer: Any?
|
||||||
|
|
||||||
abstract val part1Answer: Any
|
abstract val part2Example: Any?
|
||||||
abstract val part2Answer: Any
|
abstract val part2Answer: Any?
|
||||||
|
|
||||||
private val ctx = lazy {
|
private val ctx = lazy {
|
||||||
BeanContext.run()
|
BeanContext.run()
|
||||||
@ -25,7 +48,6 @@ abstract class BaseDayTest(day: Int) {
|
|||||||
|
|
||||||
val instance by lazy { ctx.value.getBean(ctx.value.findDayDefinition(day)) }
|
val instance by lazy { ctx.value.getBean(ctx.value.findDayDefinition(day)) }
|
||||||
|
|
||||||
|
|
||||||
private val exampleCtx = lazy {
|
private val exampleCtx = lazy {
|
||||||
BeanContext.build()
|
BeanContext.build()
|
||||||
.apply { registerExampleLoader(example) }
|
.apply { registerExampleLoader(example) }
|
||||||
@ -39,9 +61,6 @@ abstract class BaseDayTest(day: Int) {
|
|||||||
arrayOf(ctx, exampleCtx).filter { it.isInitialized() }.forEach { it.value.stop() }
|
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
|
@Test
|
||||||
fun `part1 example result`() {
|
fun `part1 example result`() {
|
||||||
Assertions.assertThat(exampleInstance.part1()).isEqualTo(part1Example)
|
Assertions.assertThat(exampleInstance.part1()).isEqualTo(part1Example)
|
||||||
|
|||||||
@ -24,8 +24,8 @@ class Day04Test : BaseDayTest(4) {
|
|||||||
""".trimIndent()
|
""".trimIndent()
|
||||||
|
|
||||||
override val part1Example = 4512
|
override val part1Example = 4512
|
||||||
override val part2Example = 1924
|
|
||||||
|
|
||||||
override val part1Answer = 87456
|
override val part1Answer = 87456
|
||||||
|
|
||||||
|
override val part2Example = 1924
|
||||||
override val part2Answer = 15561
|
override val part2Answer = 15561
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user