Home | History | Annotate | Download | only in tests
      1 import antlr3
      2 import testbase
      3 import unittest
      4 
      5 class 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 
     73 if __name__ == '__main__':
     74     unittest.main()
     75