test: Cut with disjunction

This commit is contained in:
Tibo De Peuter 2025-04-15 17:03:14 +02:00
parent 2fcab52f65
commit f9950a3fd3
Signed by: tdpeuter
GPG key ID: 38297DE43F75FFE2
2 changed files with 25 additions and 2 deletions

View file

@ -1,2 +1 @@
not_equal(X, Y) :- X = Y, !, fail. choice(X) :- X = 1, !; X = 2.
not_equal(_, _).

View file

@ -177,6 +177,30 @@ class ControlOperatorsTests {
assertEquals(1, result.size, "Expected 1 result") assertEquals(1, result.size, "Expected 1 result")
} }
@Test
fun `cut with disjunction`() {
Program.load(
listOf(
Rule(
CompoundTerm(Atom("choice"), listOf(Variable("X"))),
Conjunction(
Unify(Variable("X"), Integer(1)),
Disjunction(
Cut(),
Unify(Variable("X"), Integer(2))
)
)
)
)
)
val goal = CompoundTerm(Atom("choice"), listOf(Variable("X")))
val result = Program.query(goal).toList()
assertEquals(1, result.size, "Expected 1 result")
}
@Test @Test
fun not_atom() { fun not_atom() {
val success = Fact(Atom("a")) val success = Fact(Atom("a"))