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         self.assertEqual(parser.reportedErrors, [])
     18         self.assertEqual(parser.events,
     19                          [('decl', 'foobar'), ('call', 'gnarz'),
     20                           ('decl', 'blupp'), ('call', 'flupp')])
     21 
     22 
     23     def testMalformedInput1(self):
     24         cStream = antlr3.StringStream('var; foo();')
     25         lexer = self.getLexer(cStream)
     26         tStream = antlr3.CommonTokenStream(lexer)
     27         parser = self.getParser(tStream)
     28 
     29         parser.document()
     30 
     31         # FIXME: currently strings with formatted errors are collected
     32         # can't check error locations yet
     33         self.assertEqual(len(parser.reportedErrors), 1, parser.reportedErrors)
     34         self.assertEqual(parser.events, [])
     35 
     36 
     37     def testMalformedInput2(self):
     38         cStream = antlr3.StringStream('var foobar(); gnarz();')
     39         lexer = self.getLexer(cStream)
     40         tStream = antlr3.CommonTokenStream(lexer)
     41         parser = self.getParser(tStream)
     42 
     43         parser.document()
     44 
     45         # FIXME: currently strings with formatted errors are collected
     46         # can't check error locations yet
     47         self.assertEqual(len(parser.reportedErrors), 1, parser.reportedErrors)
     48         self.assertEqual(parser.events, [('call', 'gnarz')])
     49 
     50 
     51     def testMalformedInput3(self):
     52         cStream = antlr3.StringStream('gnarz(; flupp();')
     53         lexer = self.getLexer(cStream)
     54         tStream = antlr3.CommonTokenStream(lexer)
     55         parser = self.getParser(tStream)
     56 
     57         parser.document()
     58 
     59         # FIXME: currently strings with formatted errors are collected
     60         # can't check error locations yet
     61         self.assertEqual(len(parser.reportedErrors), 1, parser.reportedErrors)
     62         self.assertEqual(parser.events, [('call', 'gnarz'), ('call', 'flupp')])
     63             
     64 
     65 if __name__ == '__main__':
     66     unittest.main()
     67