65 lines
1.6 KiB
Kotlin
65 lines
1.6 KiB
Kotlin
package parser.builtins
|
|
|
|
import com.github.h0tk3y.betterParse.grammar.Grammar
|
|
import com.github.h0tk3y.betterParse.grammar.parseToEnd
|
|
import org.junit.jupiter.api.BeforeEach
|
|
import org.junit.jupiter.api.Test
|
|
import parser.grammars.TermsGrammar
|
|
import prolog.ast.terms.Atom
|
|
import prolog.ast.terms.Structure
|
|
import prolog.ast.terms.Term
|
|
import kotlin.test.assertEquals
|
|
|
|
class DatabaseOperatorsParserTests {
|
|
private lateinit var parser: Grammar<Term>
|
|
|
|
@BeforeEach
|
|
fun setup() {
|
|
parser = TermsGrammar() as Grammar<Term>
|
|
}
|
|
|
|
@Test
|
|
fun `parse assert(rule)`() {
|
|
val input = "assert((a :- b))"
|
|
val expected = Structure(Atom("assert"), listOf(
|
|
Structure(Atom(":-"), listOf(
|
|
Atom("a"),
|
|
Atom("b")
|
|
))
|
|
))
|
|
|
|
val result = parser.parseToEnd(input)
|
|
|
|
assertEquals(expected, result)
|
|
}
|
|
|
|
@Test
|
|
fun `parse assertA(rule)`() {
|
|
val input = "assertA((a :- b))"
|
|
val expected = Structure(Atom("assertA"), listOf(
|
|
Structure(Atom(":-"), listOf(
|
|
Atom("a"),
|
|
Atom("b")
|
|
))
|
|
))
|
|
|
|
val result = parser.parseToEnd(input)
|
|
|
|
assertEquals(expected, result)
|
|
}
|
|
|
|
@Test
|
|
fun `parse assertZ(rule)`() {
|
|
val input = "assertZ((a :- b))"
|
|
val expected = Structure(Atom("assertZ"), listOf(
|
|
Structure(Atom(":-"), listOf(
|
|
Atom("a"),
|
|
Atom("b")
|
|
))
|
|
))
|
|
|
|
val result = parser.parseToEnd(input)
|
|
|
|
assertEquals(expected, result)
|
|
}
|
|
}
|