1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 '''
31 Tests for the lepl.regexp.interval module.
32 '''
33
34 from logging import basicConfig, DEBUG
35 from unittest import TestCase, TestLoader, TextTestRunner
36
37 from lepl.lexer.matchers import Token
38 from lepl.matchers.core import Any
39 from lepl.matchers.derived import Eos, Word
40 from lepl.regexp.interval import IntervalMap, TaggedFragments, Character
41 from lepl.regexp.unicode import UnicodeAlphabet
42
43
44 UNICODE = UnicodeAlphabet.instance()
45
46
47
48
49
50
52
54 m = IntervalMap()
55 m[(1,2)] = 12
56 assert m[0] == None, m[0]
57 assert m[1] == 12, m[1]
58 assert m[1.5] == 12, m[1.5]
59 assert m[2] == 12, m[2]
60 assert m[3] == None, m[3]
61
63 m = IntervalMap()
64 m[(1,2)] = 12
65 m[(4,5)] = 45
66 for (i, v) in [(0, None), (1, 12), (2, 12),
67 (3, None), (4, 45), (5, 45), (6, None)]:
68 assert m[i] == v, (i, m[i])
69
71 m = IntervalMap()
72 m[(1,2)] = 12
73 m[(4,5)] = 45
74 for (i, v) in [(0, None), (1, 12), (2, 12),
75 (3, None), (4, 45), (5, 45), (6, None)]:
76 assert m[i] == v, (i, m[i])
77 del m[(1,2)]
78 for (i, v) in [(0, None), (1, None), (2, None),
79 (3, None), (4, 45), (5, 45), (6, None)]:
80 assert m[i] == v, (i, m[i])
81
82
84
90
92 m = TaggedFragments(UNICODE)
93 m.append(Character([('b', 'd')], UNICODE), 'bd')
94 m.append(Character([('c', 'e')], UNICODE), 'ce')
95 l = list(m)
96 assert l == [(('b', 'b'), ['bd']),
97 (('c', 'd'), ['bd', 'ce']),
98 (('e', 'e'), ['ce'])], l
99
100
107
108
109 if __name__ == '__main__':
110 suite = TestLoader().loadTestsFromTestCase(UnicodeBugTest)
111 TextTestRunner(verbosity=2).run(suite)
112