1import antlr3 2import testbase 3import unittest 4 5class t014parser(testbase.ANTLRTest): 6 def setUp(self): 7 self.compileGrammar() 8 9 10 def testValid(self): 11 cStream = antlr3.StringStream('var foobar; gnarz(); var blupp; flupp ( ) ;') 12 lexer = self.getLexer(cStream) 13 tStream = antlr3.CommonTokenStream(lexer) 14 parser = self.getParser(tStream) 15 parser.document() 16 17 assert len(parser.reportedErrors) == 0, parser.reportedErrors 18 assert parser.events == [ 19 ('decl', 'foobar'), 20 ('call', 'gnarz'), 21 ('decl', 'blupp'), 22 ('call', 'flupp') 23 ], parser.events 24 25 26 def testMalformedInput1(self): 27 cStream = antlr3.StringStream('var; foo();') 28 lexer = self.getLexer(cStream) 29 tStream = antlr3.CommonTokenStream(lexer) 30 parser = self.getParser(tStream) 31 32 parser.document() 33 34 # FIXME: currently strings with formatted errors are collected 35 # can't check error locations yet 36 assert len(parser.reportedErrors) == 1, parser.reportedErrors 37 assert parser.events == [], parser.events 38 39 40 def testMalformedInput2(self): 41 cStream = antlr3.StringStream('var foobar(); gnarz();') 42 lexer = self.getLexer(cStream) 43 tStream = antlr3.CommonTokenStream(lexer) 44 parser = self.getParser(tStream) 45 46 parser.document() 47 48 # FIXME: currently strings with formatted errors are collected 49 # can't check error locations yet 50 assert len(parser.reportedErrors) == 1, parser.reportedErrors 51 assert parser.events == [ 52 ('call', 'gnarz'), 53 ], parser.events 54 55 56 def testMalformedInput3(self): 57 cStream = antlr3.StringStream('gnarz(; flupp();') 58 lexer = self.getLexer(cStream) 59 tStream = antlr3.CommonTokenStream(lexer) 60 parser = self.getParser(tStream) 61 62 parser.document() 63 64 # FIXME: currently strings with formatted errors are collected 65 # can't check error locations yet 66 assert len(parser.reportedErrors) == 1, parser.reportedErrors 67 assert parser.events == [ 68 ('call', 'gnarz'), 69 ('call', 'flupp'), 70 ], parser.events 71 72 73if __name__ == '__main__': 74 unittest.main() 75