feat: Atom parsing
This commit is contained in:
parent
bd5c825ca2
commit
e749f8c6cb
8 changed files with 212 additions and 11 deletions
76
tests/parser/ParseTests.kt
Normal file
76
tests/parser/ParseTests.kt
Normal file
|
@ -0,0 +1,76 @@
|
|||
package parser
|
||||
|
||||
import lexer.Token
|
||||
import lexer.TokenPosition
|
||||
import lexer.TokenType
|
||||
import org.junit.jupiter.api.Assertions.assertEquals
|
||||
import org.junit.jupiter.api.Assertions.assertTrue
|
||||
import org.junit.jupiter.api.Disabled
|
||||
import org.junit.jupiter.api.Test
|
||||
import prolog.ast.terms.Atom
|
||||
import prolog.ast.terms.CompoundTerm
|
||||
|
||||
class ParseTests {
|
||||
@Test
|
||||
fun `parse atom a`() {
|
||||
val input = Token(TokenType.ALPHANUMERIC, "a", TokenPosition(0, 0, 1))
|
||||
|
||||
val result = Parser(listOf(input)).parse()
|
||||
|
||||
assertEquals(1, result.size, "Expected 1 term")
|
||||
assertEquals(Atom("a"), result[0], "Expected atom 'a'")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `parse atom foo`() {
|
||||
val input = Token(TokenType.ALPHANUMERIC, "foo", TokenPosition(0, 0, 3))
|
||||
|
||||
val result = Parser(listOf(input)).parse()
|
||||
|
||||
assertEquals(1, result.size, "Expected 1 term")
|
||||
assertEquals(Atom("foo"), result[0], "Expected atom 'foo'")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `parse atom foo1`() {
|
||||
val input = Token(TokenType.ALPHANUMERIC, "foo1", TokenPosition(0, 0, 4))
|
||||
|
||||
val result = Parser(listOf(input)).parse()
|
||||
|
||||
assertEquals(1, result.size, "Expected 1 term")
|
||||
assertEquals(Atom("foo1"), result[0], "Expected atom 'foo1'")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `parse atom fooBar`() {
|
||||
val name = "fooBar"
|
||||
val input = Token(TokenType.ALPHANUMERIC, name, TokenPosition(0, 0, 6))
|
||||
|
||||
val result = Parser(listOf(input)).parse()
|
||||
|
||||
assertEquals(1, result.size, "Expected 1 term")
|
||||
assertEquals(Atom(name), result[0], "Expected atom 'fooBar'")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `parse atom foo_bar`() {
|
||||
val name = "foo_bar"
|
||||
val input = Token(TokenType.ALPHANUMERIC, name, TokenPosition(0, 0, 7))
|
||||
|
||||
val result = Parser(listOf(input)).parse()
|
||||
|
||||
assertEquals(1, result.size, "Expected 1 term")
|
||||
assertEquals(Atom(name), result[0], "Expected atom 'foo_bar'")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `parse atom my_FooBar1`() {
|
||||
val name = "my_FooBar1"
|
||||
val input = Token(TokenType.ALPHANUMERIC, name, TokenPosition(0, 0, 11))
|
||||
|
||||
val result = Parser(listOf(input)).parse()
|
||||
|
||||
assertEquals(1, result.size, "Expected 1 term")
|
||||
assertEquals(Atom(name), result[0], "Expected atom 'my_FooBar1'")
|
||||
}
|
||||
}
|
Reference in a new issue