AbstractLogicProgrammingScopeTest
Base class for test suites exercising a BaseLogicProgrammingScope subtype S (e.g. MinimalLogicProgrammingScope, LogicProgrammingScopeWithOperators, or any richer mixin combination assembled downstream, such as LogicProgrammingScopeWithUnification in :dsl-unify or LogicProgrammingScopeWithTheories in :dsl-theory): concrete subclasses only need to implement createLogicProgrammingScope and then write @Test methods using the helpers below to build and assert on DSL expressions.
A typical concrete test looks like:
class TestLogicProgrammingScopeWithUnification :
AbstractLogicProgrammingScopeTest<LogicProgrammingScopeWithUnification<*>>() {
override fun createLogicProgrammingScope(): LogicProgrammingScopeWithUnification<*> = LogicProgrammingScope.empty()
@Test
fun testUnify() =
logicProgramming {
assertEquals(unified, unify(term1, term2))
}
}Content copied to clipboard