Checkpoint
This commit is contained in:
parent
e749f8c6cb
commit
48f94c30df
15 changed files with 175 additions and 67 deletions
|
@ -1,5 +1,6 @@
|
|||
package lexer
|
||||
|
||||
import lexer.errors.LexingError
|
||||
import org.junit.jupiter.api.Test
|
||||
import org.junit.jupiter.api.assertThrows
|
||||
import kotlin.test.assertEquals
|
||||
|
@ -56,6 +57,6 @@ class ScanPrologTests {
|
|||
|
||||
@Test
|
||||
fun scan_variable_that_starts_with_a_number() {
|
||||
assertThrows<Error> { Lexer("1X.").scan() }
|
||||
assertThrows<LexingError> { Lexer("1X.").scan() }
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package lexer
|
||||
|
||||
import lexer.errors.LexingError
|
||||
import org.junit.jupiter.api.Test
|
||||
import org.junit.jupiter.api.assertThrows
|
||||
import org.junit.jupiter.api.Assertions.*
|
||||
|
@ -14,7 +15,7 @@ class ScanTests {
|
|||
|
||||
@Test
|
||||
fun scan_unknownSymbol_returns_Error() {
|
||||
assertThrows<Error> { Lexer("€").scan() }
|
||||
assertThrows<LexingError> { Lexer("€").scan() }
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -127,12 +128,12 @@ class ScanTests {
|
|||
assertEquals(3, tokens.size)
|
||||
|
||||
assertEquals(
|
||||
TokenType.LEFT_PARENTHESIS,
|
||||
TokenType.PARENTHESIS_LEFT,
|
||||
tokens[0].type,
|
||||
"Expected LEFT_PARENTHESES token, got ${tokens[0].type}"
|
||||
)
|
||||
assertEquals(
|
||||
TokenType.RIGHT_PARENTHESIS,
|
||||
TokenType.PARENTHESIS_RIGHT,
|
||||
tokens[1].type,
|
||||
"Expected RIGHT_PARENTHESES token, got ${tokens[1].type}"
|
||||
)
|
||||
|
|
|
@ -1,11 +1,10 @@
|
|||
package parser
|
||||
|
||||
import lexer.Token
|
||||
import lexer.TokenPosition
|
||||
import lexer.state.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
|
||||
|
@ -73,4 +72,20 @@ class ParseTests {
|
|||
assertEquals(1, result.size, "Expected 1 term")
|
||||
assertEquals(Atom(name), result[0], "Expected atom 'my_FooBar1'")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `parse compound term f()`() {
|
||||
val input = listOf(
|
||||
Token(TokenType.ALPHANUMERIC, "f", TokenPosition(0, 0, 1)),
|
||||
Token(TokenType.PARENTHESIS_LEFT, "(", TokenPosition(0, 1, 2)),
|
||||
Token(TokenType.PARENTHESIS_RIGHT, ")", TokenPosition(0, 3, 4))
|
||||
)
|
||||
|
||||
val result = Parser(input).parse()
|
||||
|
||||
assertEquals(1, result.size, "Expected 1 term")
|
||||
assertTrue(result[0] is CompoundTerm)
|
||||
assertEquals("f", (result[0] as CompoundTerm).name)
|
||||
assertEquals(0, (result[0] as CompoundTerm).arguments.size)
|
||||
}
|
||||
}
|
Reference in a new issue