1 #!/usr/bin/env python2
2 """
3 lexer_gen_test.py: Tests for lexer_gen.py
4 """
5 from __future__ import print_function
6
7 import unittest
8
9 from frontend import lexer_gen # module under test
10 from core import test_lib
11
12
13 class LexerGenTest(unittest.TestCase):
14 def testTranslateRegex(self):
15 PAIRS = [
16 (r'a', r'"a" '),
17 (r'[a-z]', r'[a-z]'),
18 (r'[a-zA-Z.]+', r'[a-zA-Z.]+ '),
19 (r'[a-zA-Z_][a-zA-Z0-9_]*\+?=',
20 r'[a-zA-Z_][a-zA-Z0-9_]* "+" ? "=" '),
21 (r'[."]*', r'[."]* '),
22 (r'\$', r'"$" '),
23 (r'.*', r'.* '),
24
25 # Both of these accepted?
26 ('\0', r'"\x00" '),
27 (r'\0', r'"\x00" '),
28 (r'\\', r'"\\" '),
29 (r'[\\]', r'"\\" '),
30 (r'.', r'.'),
31 (r'[^a]', r'[^a]'),
32 (r'[^a-z]', r'[^a-z]'),
33 # . isn't special inside
34 (r'[a\.]', r'[a.]'),
35 (r'[0-7]{1,3}', r'[0-7]{1,3} '),
36 ]
37 for py, expected in PAIRS:
38 #self.assertEqual(expected, lexer_gen.TranslateRegex(py))
39 print('--- %s' % test_lib.PrintableString(py))
40 actual = lexer_gen.TranslateRegex(py)
41 print(repr(actual))
42 self.assertEqual(expected, actual)
43 print()
44 print()
45
46
47 if __name__ == '__main__':
48 unittest.main()