5 class TestParser(unittest.TestCase):
6 def test_01_import(self):
8 from parser import parser
10 def test_02_tag(self):
11 self.assertEqual(parser.parse('xxx'), ('NAME', 'xxx'))
13 def test_03_bad_tag(self):
14 from ply.lex import LexError
15 self.assertRaises(LexError, parser.parse, 'XXX')
17 def test_04_expression(self):
18 self.assertEqual(parser.parse('!(xxx&yyy)'),
19 ('NOT', ('PARENS', ('AND', ('NAME', 'xxx'), ('NAME', 'yyy'))))
21 self.assertEqual(parser.parse('!(xxx & yyy)'),
22 ('NOT', ('PARENS', ('AND', ('NAME', 'xxx'), ('NAME', 'yyy'))))
24 self.assertEqual(parser.parse('!xxx&yyy&zzz|ooo'),
25 ('OR', ('AND', ('AND', ('NOT', ('NAME', 'xxx')), ('NAME', 'yyy')), ('NAME', 'zzz')), ('NAME', 'ooo'))
27 self.assertEqual(parser.parse('!(xxx && yyy)'),
28 ('NOT', ('PARENS', ('AND', ('NAME', 'xxx'), ('NAME', 'yyy'))))
30 self.assertEqual(parser.parse('!(xxx || yyy)'),
31 ('NOT', ('PARENS', ('OR', ('NAME', 'xxx'), ('NAME', 'yyy'))))
33 self.assertEqual(parser.parse('xxx and yyy'),
34 ('AND', ('NAME', 'xxx'), ('NAME', 'yyy'))
36 self.assertEqual(parser.parse('xxx or yyy'),
37 ('OR', ('NAME', 'xxx'), ('NAME', 'yyy'))
39 self.assertEqual(parser.parse('xxx OR yyy'),
40 ('OR', ('NAME', 'xxx'), ('NAME', 'yyy'))
43 def test_05_bad_expression(self):
44 self.assertIs(parser.parse('!(xxx&yyy'), None)
46 if __name__ == "__main__":