Skip to content
Snippets Groups Projects
Select Git revision
  • 59a22b099a3d52101cec6500aeddf4dd3fdcfd2a
  • master default
2 results

EmptyTests.kt

Blame
  • EmptyTests.kt 1.33 KiB
    package jackrat
    
    import de.timklge.jackrat.AndParser
    import de.timklge.jackrat.AtomParser
    import de.timklge.jackrat.EmptyParser
    import jackrat.de.timklge.jackrat.Scanner
    import kotlin.test.Test
    import kotlin.test.fail
    
    class EmptyTests {
        @Test
        fun TestEmpty() {
            val input = "Hello"
            val scanner = Scanner(input)
            val emptyParser = EmptyParser()
            val helloParser = AtomParser("Hello")
            val emptyAndHelloParser = AndParser(listOf(emptyParser, helloParser))
    
            val node = emptyAndHelloParser.parse(scanner)
            if(node.parser != emptyAndHelloParser) fail("Empty Test combinator creates node with wrong parser")
            if(node.matched != "Hello") fail("Empty Test combinator doesn't match complete input")
            if(node.children.count() != 2) fail("Empty Test combinator child count doesn't match")
            if(node.children[0].parser != emptyParser || node.children[1].parser != helloParser) fail("Empty Test combinator children do not match")
        }
    
        @Test
        fun TestDoubleEmpty(){
            val input = ""
            val scanner = Scanner(input)
            val emptyParser = EmptyParser()
            val termParser = AndParser(listOf(emptyParser, emptyParser))
            val node = termParser.parse(scanner)
            if(node.parser != termParser) fail("Double empty parser creates node with wrong parser")
        }
    }