OILS
/
frontend
/
lexer_gen_test.py
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()
|