Skip to content
Snippets Groups Projects
Select Git revision
  • 2d96be59be47a912dbfdfc16b7aa8128d105723a
  • master default protected
  • grasping_sample
3 results

README.md

Blame
  • Forked from CeTI / ROS / ROS Packages / sample_applications
    Source project has a limited visibility.
    ManyTests.kt 1.97 KiB
    package jackrat
    
    import de.timklge.jackrat.AtomParser
    import de.timklge.jackrat.ManyParser
    import de.timklge.jackrat.RegexParser
    import jackrat.de.timklge.jackrat.Scanner
    import kotlin.test.Test
    import kotlin.test.assertEquals
    import kotlin.test.assertNull
    
    class ManyTests {
        @Test
        fun ManyTest(){
            val input = "Hello Hello Hello"
            val scanner = Scanner(input)
            val helloParser = AtomParser("Hello", false)
            val helloManyParser = ManyParser(helloParser)
            val node = helloManyParser.parse(scanner)
            assertEquals(helloManyParser, node.parser)
            assertEquals(3, node.children.count())
        }
    
        @Test
        fun ManySeparatorTest(){
            val input = "Hello, Hello, Hello"
            val scanner = Scanner(input)
            val helloParser = AtomParser("Hello", false)
            val sepParser = AtomParser(",", false)
            val helloManyParser = ManyParser(helloParser, sepParser)
            val node = helloManyParser.parse(scanner)
            assertEquals(helloManyParser, node.parser, "Many combinator creates node with wrong parser")
            assertEquals("Hello,Hello,Hello", node.matched, "Many combinator doesn't match complete input")
            assertEquals(5, node.children.count(), "Many combinator doesn't produce five children")
        }
    
        @Test
        fun ManySeparatorRegexTest(){
            val input = "         23,  45"
            val scanner = Scanner(input)
            val digitParser = RegexParser("""\d+""")
            val digitSepParser = ManyParser(digitParser, AtomParser(","))
            val node = digitSepParser.parse(scanner)
            assertEquals(digitSepParser, node.parser, "Many separator combinator creates node with wrong parser")
            assertEquals("23,45", node.matched)
            assertEquals(3, node.children.count())
        }
    
        @Test
        fun ManyNoKleeneTest(){
            val input = "test"
            val scanner = Scanner(input)
            val helloParser = AtomParser("Hello")
            val node = helloParser.parsePartial(scanner)
            assertNull(node)
        }
    }