Example #1
0
 def test_empty_minuntil(self):
     r_code, r = get_code_and_re(r'(a?)+?y')
     #assert not r.match('z') -- CPython bug (at least 2.5) eats all memory
     res = rsre_core.match(r_code, 'z')
     assert not res
     #
     r_code, r = get_code_and_re(r'(a?){4,6}?y')
     assert not r.match('z')
     res = rsre_core.match(r_code, 'z')
     assert not res
     #
     r_code, r = get_code_and_re(r'(a?)*?y')
     #assert not r.match('z') -- CPython bug (at least 2.5) eats all memory
     res = rsre_core.match(r_code, 'z')
     assert not res
Example #2
0
 def test_empty_minuntil(self):
     r_code, r = get_code_and_re(r'(a?)+?y')
     #assert not r.match('z') -- CPython bug (at least 2.5) eats all memory
     res = rsre_core.match(r_code, 'z')
     assert not res
     #
     r_code, r = get_code_and_re(r'(a?){4,6}?y')
     assert not r.match('z')
     res = rsre_core.match(r_code, 'z')
     assert not res
     #
     r_code, r = get_code_and_re(r'(a?)*?y')
     #assert not r.match('z') -- CPython bug (at least 2.5) eats all memory
     res = rsre_core.match(r_code, 'z')
     assert not res
Example #3
0
 def test_empty_maxuntil(self):
     r_code, r = get_code_and_re(r'(a?)+y')
     assert r.match('y')
     res = rsre_core.match(r_code, 'y')
     assert res
     #
     r_code, r = get_code_and_re(r'(a?){4,6}y')
     assert r.match('y')
     res = rsre_core.match(r_code, 'y')
     assert res
     #
     r_code, r = get_code_and_re(r'(a?)*y')
     assert r.match('y')
     res = rsre_core.match(r_code, 'y')
     assert res
Example #4
0
 def test_empty_maxuntil(self):
     r_code, r = get_code_and_re(r'(a?)+y')
     assert r.match('y')
     res = rsre_core.match(r_code, 'y')
     assert res
     #
     r_code, r = get_code_and_re(r'(a?){4,6}y')
     assert r.match('y')
     res = rsre_core.match(r_code, 'y')
     assert res
     #
     r_code, r = get_code_and_re(r'(a?)*y')
     assert r.match('y')
     res = rsre_core.match(r_code, 'y')
     assert res
Example #5
0
 def test_min_until_3_5(self):
     r_code2, r = get_code_and_re(r'<abc>(?:xy){3,5}?xy</abc>')
     for i in range(8):
         s = '<abc>' + 'xy'*i + '</abc>defdefdefdefdef'
         assert (r.match(s) is not None) is (3 <= i-1 <= 5)
         res = rsre_core.match(r_code2, s)
         assert (res is not None) is (3 <= i-1 <= 5)
Example #6
0
 def test_min_until_3_5(self):
     r_code2, r = get_code_and_re(r'<abc>(?:xy){3,5}?xy</abc>')
     for i in range(8):
         s = '<abc>' + 'xy' * i + '</abc>defdefdefdefdef'
         assert (r.match(s) is not None) is (3 <= i - 1 <= 5)
         res = rsre_core.match(r_code2, s)
         assert (res is not None) is (3 <= i - 1 <= 5)
Example #7
0
 def test_minuntil_bug(self):
     r_code9, r9 = get_code_and_re(r'((x|yz)+?(y)??c)*')
     match = r9.match('xycxyzxc')
     assert match.span(2) == (6, 7)
     #assert match.span(3) == (1, 2) --- bug of CPython
     res = rsre_core.match(r_code9, 'xycxyzxc')
     assert (res.get_mark(2), res.get_mark(3)) == (6, 7)
     assert (res.get_mark(4), res.get_mark(5)) == (1, 2)
Example #8
0
 def test_minuntil_lastmark_restore(self):
     r_code9, r9 = get_code_and_re(r'(x|yz)+?(y)??c')
     match = r9.match('xyzxc')
     assert match.span(1) == (3, 4)
     assert match.span(2) == (-1, -1)
     res = rsre_core.match(r_code9, 'xyzxc')
     assert (res.get_mark(0), res.get_mark(1)) == (3, 4)
     assert (res.get_mark(2), res.get_mark(3)) == (-1, -1)
Example #9
0
 def test_minuntil_bug(self):
     r_code9, r9 = get_code_and_re(r'((x|yz)+?(y)??c)*')
     match = r9.match('xycxyzxc')
     assert match.span(2) == (6, 7)
     #assert match.span(3) == (1, 2) --- bug of CPython
     res = rsre_core.match(r_code9, 'xycxyzxc')
     assert (res.get_mark(2), res.get_mark(3)) == (6, 7)
     assert (res.get_mark(4), res.get_mark(5)) == (1, 2)
Example #10
0
 def test_minuntil_lastmark_restore(self):
     r_code9, r9 = get_code_and_re(r'(x|yz)+?(y)??c')
     match = r9.match('xyzxc')
     assert match.span(1) == (3, 4)
     assert match.span(2) == (-1, -1)
     res = rsre_core.match(r_code9, 'xyzxc')
     assert (res.get_mark(0), res.get_mark(1)) == (3, 4)
     assert (res.get_mark(2), res.get_mark(3)) == (-1, -1)
Example #11
0
 def test_group_branch_repeat_complex_case(self):
     r_code8, r8 = get_code_and_re(r'<abc>((a)|(b))*</abc>')
     match = r8.match('<abc>ab</abc>')
     assert match.span(1) == (6, 7)
     assert match.span(3) == (6, 7)
     assert match.span(2) == (5, 6)
     res = rsre_core.match(r_code8, '<abc>ab</abc>')
     assert (res.get_mark(0), res.get_mark(1)) == (6, 7)
     assert (res.get_mark(4), res.get_mark(5)) == (6, 7)
     assert (res.get_mark(2), res.get_mark(3)) == (5, 6)
Example #12
0
 def test_group_7(self):
     r_code7, r7 = get_code_and_re(r'<abc>((a)?(b))*</abc>')
     match = r7.match('<abc>bbbabbbb</abc>')
     assert match.span(1) == (12, 13)
     assert match.span(3) == (12, 13)
     assert match.span(2) == (8, 9)
     res = rsre_core.match(r_code7, '<abc>bbbabbbb</abc>')
     assert (res.get_mark(0), res.get_mark(1)) == (12, 13)
     assert (res.get_mark(4), res.get_mark(5)) == (12, 13)
     assert (res.get_mark(2), res.get_mark(3)) == (8, 9)
Example #13
0
 def test_group_branch_repeat_complex_case(self):
     r_code8, r8 = get_code_and_re(r'<abc>((a)|(b))*</abc>')
     match = r8.match('<abc>ab</abc>')
     assert match.span(1) == (6, 7)
     assert match.span(3) == (6, 7)
     assert match.span(2) == (5, 6)
     res = rsre_core.match(r_code8, '<abc>ab</abc>')
     assert (res.get_mark(0), res.get_mark(1)) == (6, 7)
     assert (res.get_mark(4), res.get_mark(5)) == (6, 7)
     assert (res.get_mark(2), res.get_mark(3)) == (5, 6)
Example #14
0
 def test_group_7(self):
     r_code7, r7 = get_code_and_re(r'<abc>((a)?(b))*</abc>')
     match = r7.match('<abc>bbbabbbb</abc>')
     assert match.span(1) == (12, 13)
     assert match.span(3) == (12, 13)
     assert match.span(2) == (8, 9)
     res = rsre_core.match(r_code7, '<abc>bbbabbbb</abc>')
     assert (res.get_mark(0), res.get_mark(1)) == (12, 13)
     assert (res.get_mark(4), res.get_mark(5)) == (12, 13)
     assert (res.get_mark(2), res.get_mark(3)) == (8, 9)
Example #15
0
 def test_empty_search(self):
     r_code, r = get_code_and_re(r'')
     for j in range(-2, 6):
         for i in range(-2, 6):
             match = r.search('abc', i, j)
             res = rsre_core.search(r_code, 'abc', i, j)
             jk = min(max(j, 0), 3)
             ik = min(max(i, 0), 3)
             if ik <= jk:
                 assert match is not None
                 assert match.span() == (ik, ik)
                 assert res is not None
                 assert res.match_start == ik and res.match_end == ik
             else:
                 assert match is None
                 assert res is None
Example #16
0
 def test_empty_search(self):
     r_code, r = get_code_and_re(r'')
     for j in range(-2, 6):
         for i in range(-2, 6):
             match = r.search('abc', i, j)
             res = rsre_core.search(r_code, 'abc', i, j)
             jk = min(max(j, 0), 3)
             ik = min(max(i, 0), 3)
             if ik <= jk:
                 assert match is not None
                 assert match.span() == (ik, ik)
                 assert res is not None
                 assert res.match_start == ik and res.match_end == ik
             else:
                 assert match is None
                 assert res is None