diff options
Diffstat (limited to 'runtime/Python/tests/t014parser.py')
-rw-r--r-- | runtime/Python/tests/t014parser.py | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/runtime/Python/tests/t014parser.py b/runtime/Python/tests/t014parser.py new file mode 100644 index 0000000..e2965a4 --- /dev/null +++ b/runtime/Python/tests/t014parser.py @@ -0,0 +1,74 @@ +import antlr3 +import testbase +import unittest + +class t014parser(testbase.ANTLRTest): + def setUp(self): + self.compileGrammar() + + + def testValid(self): + cStream = antlr3.StringStream('var foobar; gnarz(); var blupp; flupp ( ) ;') + lexer = self.getLexer(cStream) + tStream = antlr3.CommonTokenStream(lexer) + parser = self.getParser(tStream) + parser.document() + + assert len(parser.reportedErrors) == 0, parser.reportedErrors + assert parser.events == [ + ('decl', 'foobar'), + ('call', 'gnarz'), + ('decl', 'blupp'), + ('call', 'flupp') + ], parser.events + + + def testMalformedInput1(self): + cStream = antlr3.StringStream('var; foo();') + lexer = self.getLexer(cStream) + tStream = antlr3.CommonTokenStream(lexer) + parser = self.getParser(tStream) + + parser.document() + + # FIXME: currently strings with formatted errors are collected + # can't check error locations yet + assert len(parser.reportedErrors) == 1, parser.reportedErrors + assert parser.events == [], parser.events + + + def testMalformedInput2(self): + cStream = antlr3.StringStream('var foobar(); gnarz();') + lexer = self.getLexer(cStream) + tStream = antlr3.CommonTokenStream(lexer) + parser = self.getParser(tStream) + + parser.document() + + # FIXME: currently strings with formatted errors are collected + # can't check error locations yet + assert len(parser.reportedErrors) == 1, parser.reportedErrors + assert parser.events == [ + ('call', 'gnarz'), + ], parser.events + + + def testMalformedInput3(self): + cStream = antlr3.StringStream('gnarz(; flupp();') + lexer = self.getLexer(cStream) + tStream = antlr3.CommonTokenStream(lexer) + parser = self.getParser(tStream) + + parser.document() + + # FIXME: currently strings with formatted errors are collected + # can't check error locations yet + assert len(parser.reportedErrors) == 1, parser.reportedErrors + assert parser.events == [ + ('call', 'gnarz'), + ('call', 'flupp'), + ], parser.events + + +if __name__ == '__main__': + unittest.main() |