Checkpoint
This commit is contained in:
parent
973365e2ec
commit
3724ac72f9
13 changed files with 659 additions and 29 deletions
|
@ -19,6 +19,8 @@ import prolog.ast.terms.Term
|
|||
import prolog.ast.terms.Variable
|
||||
import prolog.builtins.Is
|
||||
import prolog.logic.equivalent
|
||||
import prolog.ast.lists.List.Empty
|
||||
import prolog.ast.lists.List.Cons
|
||||
|
||||
class TermsGrammarTests {
|
||||
private lateinit var parser: Grammar<Term>
|
||||
|
@ -352,4 +354,49 @@ class TermsGrammarTests {
|
|||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Nested
|
||||
class Lists {
|
||||
private lateinit var parser: Grammar<Term>
|
||||
|
||||
@BeforeEach
|
||||
fun setup() {
|
||||
parser = TermsGrammar() as Grammar<Term>
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `parse empty list`() {
|
||||
val input = "[]"
|
||||
|
||||
val result = parser.parseToEnd(input)
|
||||
|
||||
assertEquals(Empty, result, "Expected empty list")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `parse non-empty list`() {
|
||||
val input = "[a, b, c]"
|
||||
|
||||
val result = parser.parseToEnd(input)
|
||||
|
||||
assertEquals(
|
||||
Cons(Atom("a"), Cons(Atom("b"), Cons(Atom("c"), Empty))),
|
||||
result,
|
||||
"Expected non-empty list"
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `parse nested lists`() {
|
||||
val input = "[a, [b, c], d]"
|
||||
|
||||
val result = parser.parseToEnd(input)
|
||||
|
||||
assertEquals(
|
||||
Cons(Atom("a"), Cons(Cons(Atom("b"), Cons(Atom("c"), Empty)), Cons(Atom("d"), Empty))),
|
||||
result,
|
||||
"Expected nested lists"
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
Reference in a new issue