5 class TestLexer(unittest.TestCase):
6 def test_01_import(self):
8 from parser import lexer
10 def test_02_tag(self):
12 from ply.lex import LexToken
15 self.assertEqual(len(tokens), 1)
17 self.assertEqual(lextoken.type, 'NAME')
18 self.assertEqual(lextoken.value, 'xxx')
19 self.assertEqual(lextoken.lineno, 1)
20 self.assertEqual(lextoken.lexpos, 0)
22 def test_03_bad_tag(self):
23 from ply.lex import LexError
25 self.assertRaises(LexError, list, lexer)
27 def test_04_expression(self):
28 lexer.input('!(xxx&yyy)')
30 self.assertEqual(len(tokens), 6)
32 self.assertEqual(lextoken.type, 'NOT_OP')
33 self.assertEqual(lextoken.value, '!')
34 self.assertEqual(lextoken.lineno, 1)
35 self.assertEqual(lextoken.lexpos, 0)
37 self.assertEqual(lextoken.type, '(')
38 self.assertEqual(lextoken.value, '(')
39 self.assertEqual(lextoken.lineno, 1)
40 self.assertEqual(lextoken.lexpos, 1)
42 self.assertEqual(lextoken.type, 'NAME')
43 self.assertEqual(lextoken.value, 'xxx')
44 self.assertEqual(lextoken.lineno, 1)
45 self.assertEqual(lextoken.lexpos, 2)
47 self.assertEqual(lextoken.type, 'AND_OP')
48 self.assertEqual(lextoken.value, '&')
49 self.assertEqual(lextoken.lineno, 1)
50 self.assertEqual(lextoken.lexpos, 5)
52 self.assertEqual(lextoken.type, 'NAME')
53 self.assertEqual(lextoken.value, 'yyy')
54 self.assertEqual(lextoken.lineno, 1)
55 self.assertEqual(lextoken.lexpos, 6)
57 self.assertEqual(lextoken.type, ')')
58 self.assertEqual(lextoken.value, ')')
59 self.assertEqual(lextoken.lineno, 1)
60 self.assertEqual(lextoken.lexpos, 9)
62 if __name__ == "__main__":