diff --git a/tests/prolog/builtins/ControlOperatorsTests.kt b/tests/prolog/builtins/ControlOperatorsTests.kt index 15ad926..2ffc38c 100644 --- a/tests/prolog/builtins/ControlOperatorsTests.kt +++ b/tests/prolog/builtins/ControlOperatorsTests.kt @@ -17,6 +17,24 @@ class ControlOperatorsTests { Program.clear() } + @Test + fun `rule with cut as body`() { + Program.load( + listOf( + Rule(Atom("foo"), Cut()), + Fact(Atom("foo")) + ) + ) + + val goal = Atom("foo") + + val result = Program.query(goal).toList() + + assertEquals(1, result.size, "Expected 1 result") + assertTrue(result[0].isSuccess, "Expected success") + assertTrue(result[0].getOrNull()!!.isEmpty(), "Expected empty substitutions") + } + // See also: https://stackoverflow.com/a/23292126 @Test