|
2 | 2 | # -*- mode: python -*- |
3 | 3 | # $Id$ |
4 | 4 |
|
5 | | -# Re test suite and benchmark suite v1.5a2 |
| 5 | +# Re test suite and benchmark suite v1.5b2 |
6 | 6 |
|
7 | 7 | # The 3 possible outcomes for each pattern |
8 | 8 | [SUCCEED, FAIL, SYNTAX_ERROR] = range(3) |
|
47 | 47 | # |
48 | 48 | # If the regex isn't expected to work, the latter two elements can be omitted. |
49 | 49 |
|
50 | | -tests = [ |
| 50 | +tests = [ |
| 51 | + # Test ?P< and ?P= extensions |
| 52 | + ('(?P<foo_123', '', SYNTAX_ERROR), # Unterminated group identifier |
| 53 | + ('(?P<1>a)', '', SYNTAX_ERROR), # Begins with a digit |
| 54 | + ('(?P<!>a)', '', SYNTAX_ERROR), # Begins with an illegal char |
| 55 | + ('(?P<foo!>a)', '', SYNTAX_ERROR), # Begins with an illegal char |
| 56 | + |
| 57 | + # Same tests, for the ?P= form |
| 58 | + ('(?P<foo_123>a)(?P=foo_123', 'aa', SYNTAX_ERROR), |
| 59 | + ('(?P<foo_123>a)(?P=1)', 'aa', SYNTAX_ERROR), |
| 60 | + ('(?P<foo_123>a)(?P=!)', 'aa', SYNTAX_ERROR), |
| 61 | + ('(?P<foo_123>a)(?P=foo_124', 'aa', SYNTAX_ERROR), # Backref to undefined group |
| 62 | + |
| 63 | + ('(?P<foo_123>a)', 'a', SUCCEED, 'g1', 'a'), |
| 64 | + ('(?P<foo_123>a)(?P=foo_123)', 'aa', SUCCEED, 'g1', 'a'), |
| 65 | + |
| 66 | + # Test octal escapes |
| 67 | + ('\\1', 'a', SYNTAX_ERROR), |
| 68 | + ('\\09', chr(0) + '9', SUCCEED, 'found', chr(0) + '9'), |
| 69 | + ('\\141', 'a', SUCCEED, 'found', 'a'), |
| 70 | + ('(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)\\119', 'abcdefghijklk9', SUCCEED, 'found+"-"+g11', 'abcdefghijklk9-k'), |
| 71 | + |
| 72 | + # Test that a literal \0 is handled everywhere |
| 73 | + ('\0', '\0', SUCCEED, 'found', '\0'), |
| 74 | + (r'\0', '\0', SUCCEED, 'found', '\0'), |
| 75 | + ('[\0a]', '\0', SUCCEED, 'found', '\0'), |
| 76 | + ('[a\0]', '\0', SUCCEED, 'found', '\0'), |
| 77 | + ('[^a\0]', '\0', FAIL), |
| 78 | + (r'[\0a]', '\0', SUCCEED, 'found', '\0'), |
| 79 | + (r'[a\0]', '\0', SUCCEED, 'found', '\0'), |
| 80 | + (r'[^a\0]', '\0', FAIL), |
| 81 | + |
| 82 | + # Test various letter escapes |
| 83 | + (r'\a[\b]\f\n\r\t\v', '\a\b\f\n\r\t\v', SUCCEED, 'found', '\a\b\f\n\r\t\v'), |
| 84 | + (r'[\a][\b][\f][\n][\r][\t][\v]', '\a\b\f\n\r\t\v', SUCCEED, 'found', '\a\b\f\n\r\t\v'), |
| 85 | + (r'\u', '', SYNTAX_ERROR), # A Perl escape |
| 86 | + (r'\c\e\g\h\i\j\k\m\o\p\q\y\z', 'ceghijkmopqyz', SUCCEED, 'found', 'ceghijkmopqyz'), |
| 87 | + (r'\xff', '\377', SUCCEED, 'found', chr(255)), |
| 88 | + (r'\x00ffffffffffffff', '\377', SUCCEED, 'found', chr(255)), |
| 89 | + (r'\x00f', '\017', SUCCEED, 'found', chr(15)), |
| 90 | + (r'\x00fe', '\376', SUCCEED, 'found', chr(254)), |
| 91 | + |
| 92 | + (r"^\w+=(\\[\000-\277]|[^\n\\])*", "SRC=eval.c g.c blah blah blah \\\\\n\tapes.c", |
| 93 | + SUCCEED, 'found', "SRC=eval.c g.c blah blah blah \\\\"), |
| 94 | + |
| 95 | + # Test that . only matches \n in DOTALL mode |
| 96 | + ('a.b', 'acb', SUCCEED, 'found', 'acb'), |
| 97 | + ('a.b', 'a\nb', FAIL), |
| 98 | + ('a.*b', 'acc\nccb', FAIL), |
| 99 | + ('a.{4,5}b', 'acc\nccb', FAIL), |
| 100 | + ('a.b', 'a\rb', SUCCEED, 'found', 'a\rb'), |
| 101 | + ('a.b(?s)', 'a\nb', SUCCEED, 'found', 'a\nb'), |
| 102 | + ('a.*(?s)b', 'acc\nccb', SUCCEED, 'found', 'acc\nccb'), |
| 103 | + ('(?s)a.{4,5}b', 'acc\nccb', SUCCEED, 'found', 'acc\nccb'), |
| 104 | + ('(?s)a.b', 'a\nb', SUCCEED, 'found', 'a\nb'), |
| 105 | + |
51 | 106 | ('abc', 'abc', SUCCEED, 'found', 'abc'), |
52 | 107 | ('abc', 'xbc', FAIL), |
53 | 108 | ('abc', 'axc', FAIL), |
|
338 | 393 | ('(.*)c(.*)', 'abcde', SUCCEED, 'found+"-"+g1+"-"+g2', 'abcde-ab-de'), |
339 | 394 | ('\\((.*), (.*)\\)', '(a, b)', SUCCEED, 'g2+"-"+g1', 'b-a'), |
340 | 395 | ('[k]', 'ab', FAIL), |
341 | | - ##('abcd', 'abcd', SUCCEED, 'found+"-"+\\found+"-"+\\\\found', 'abcd-$&-\\abcd'), |
342 | | - ##('a(bc)d', 'abcd', SUCCEED, 'g1+"-"+\\g1+"-"+\\\\g1', 'bc-$1-\\bc'), |
| 396 | +# XXX |
| 397 | +# ('abcd', 'abcd', SUCCEED, 'found+"-"+\\found+"-"+\\\\found', 'abcd-$&-\\abcd'), |
| 398 | +# ('a(bc)d', 'abcd', SUCCEED, 'g1+"-"+\\g1+"-"+\\\\g1', 'bc-$1-\\bc'), |
343 | 399 | ('a[-]?c', 'ac', SUCCEED, 'found', 'ac'), |
344 | 400 | ('(abc)\\1', 'abcabc', SUCCEED, 'g1', 'abc'), |
345 | 401 | ('([a-c]*)\\1', 'abcabc', SUCCEED, 'g1', 'abc'), |
|
470 | 526 | ('(?i)(.*)c(.*)', 'ABCDE', SUCCEED, 'found+"-"+g1+"-"+g2', 'ABCDE-AB-DE'), |
471 | 527 | ('(?i)\\((.*), (.*)\\)', '(A, B)', SUCCEED, 'g2+"-"+g1', 'B-A'), |
472 | 528 | ('(?i)[k]', 'AB', FAIL), |
473 | | - ##('(?i)abcd', 'ABCD', SUCCEED, 'found+"-"+\\found+"-"+\\\\found', 'ABCD-$&-\\ABCD'), |
474 | | - ##('(?i)a(bc)d', 'ABCD', SUCCEED, 'g1+"-"+\\g1+"-"+\\\\g1', 'BC-$1-\\BC'), |
| 529 | +# ('(?i)abcd', 'ABCD', SUCCEED, 'found+"-"+\\found+"-"+\\\\found', 'ABCD-$&-\\ABCD'), |
| 530 | +# ('(?i)a(bc)d', 'ABCD', SUCCEED, 'g1+"-"+\\g1+"-"+\\\\g1', 'BC-$1-\\BC'), |
475 | 531 | ('(?i)a[-]?c', 'AC', SUCCEED, 'found', 'AC'), |
476 | 532 | ('(?i)(abc)\\1', 'ABCABC', SUCCEED, 'g1', 'ABC'), |
477 | 533 | ('(?i)([a-c]*)\\1', 'ABCABC', SUCCEED, 'g1', 'ABC'), |
478 | | - # these zero-width assertions are not supported |
479 | | - #('a(?!b).', 'abad', SUCCEED, 'found', 'ad'), |
480 | | - #('a(?=d).', 'abad', SUCCEED, 'found', 'ad'), |
481 | | - #('a(?=c|d).', 'abad', SUCCEED, 'found', 'ad'), |
| 534 | + ('a(?!b).', 'abad', SUCCEED, 'found', 'ad'), |
| 535 | + ('a(?=d).', 'abad', SUCCEED, 'found', 'ad'), |
| 536 | + ('a(?=c|d).', 'abad', SUCCEED, 'found', 'ad'), |
482 | 537 | ('a(?:b|c|d)(.)', 'ace', SUCCEED, 'g1', 'e'), |
483 | 538 | ('a(?:b|c|d)*(.)', 'ace', SUCCEED, 'g1', 'e'), |
484 | 539 | ('a(?:b|c|d)+?(.)', 'ace', SUCCEED, 'g1', 'e'), |
|
535 | 590 | (r'\t\n\v\r\f\a\g', '\t\n\v\r\f\ag', SUCCEED, 'found', '\t\n\v\r\f\ag'), |
536 | 591 | ('\t\n\v\r\f\a\g', '\t\n\v\r\f\ag', SUCCEED, 'found', '\t\n\v\r\f\ag'), |
537 | 592 | (r'\t\n\v\r\f\a', '\t\n\v\r\f\a', SUCCEED, 'found', chr(9)+chr(10)+chr(11)+chr(13)+chr(12)+chr(7)), |
538 | | - (r'[\t][\n][\v][\r][\f][\a][\A][\b][\B][\Z][\g]', '\t\n\v\r\f\aA\bBZg', SUCCEED, 'found', '\t\n\v\r\f\aA\bBZg'), |
| 593 | + (r'[\t][\n][\v][\r][\f][\b]', '\t\n\v\r\f\b', SUCCEED, 'found', '\t\n\v\r\f\b'), |
539 | 594 | ] |
0 commit comments