Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(127)

Side by Side Diff: tests/language/regex/assertion_test.dart

Issue 539153002: Port and integrate the irregexp engine from V8 (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Addressed Ivan's comments. Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file.
4
5 import 'util.dart';
6 import 'package:expect/expect.dart';
7
8 void main() {
9 description("This page tests handling of parenthetical assertions.");
10
11 var regex1 = new RegExp(r"(x)(?=\1)x");
12 shouldBe(regex1.firstMatch('xx'), ['xx','x']);
13
14 var regex2 = new RegExp(r"(.*?)a(?!(a+)b\2c)\2(.*)");
15 shouldBe(regex2.firstMatch('baaabaac'), ['baaabaac','ba',null,'abaac']);
16
17 var regex3 = new RegExp(r"(?=(a+?))(\1ab)");
18 shouldBe(regex3.firstMatch('aaab'), ['aab','a','aab']);
19
20 var regex4 = new RegExp(r"(?=(a+?))(\1ab)");
21 shouldBe(regex4.firstMatch('aaab'), ['aab','a','aab']);
22
23 var regex5 = new RegExp(r"^P([1-6])(?=\1)([1-6])$");
24 shouldBe(regex5.firstMatch('P11'), ['P11','1','1']);
25
26 var regex6 = new RegExp(r"(([a-c])b*?\2)*");
27 shouldBe(regex6.firstMatch('ababbbcbc'), ['ababb','bb','b']);
28
29 var regex7 = new RegExp(r"(x)(?=x)x");
30 shouldBe(regex7.firstMatch('xx'), ['xx','x']);
31
32 var regex8 = new RegExp(r"(x)(\1)");
33 shouldBe(regex8.firstMatch('xx'), ['xx','x','x']);
34
35 var regex9 = new RegExp(r"(x)(?=\1)x");
36 shouldBeNull(regex9.firstMatch('xy'));
37
38 var regex10 = new RegExp(r"(x)(?=x)x");
39 shouldBeNull(regex10.firstMatch('xy'));
40
41 var regex11 = new RegExp(r"(x)(\1)");
42 shouldBeNull(regex11.firstMatch('xy'));
43
44 var regex12 = new RegExp(r"(x)(?=\1)x");
45 shouldBeNull(regex12.firstMatch('x'));
46 shouldBe(regex12.firstMatch('xx'), ['xx','x']);
47 shouldBe(regex12.firstMatch('xxy'), ['xx','x']);
48
49 var regex13 = new RegExp(r"(x)zzz(?=\1)x");
50 shouldBe(regex13.firstMatch('xzzzx'), ['xzzzx','x']);
51 shouldBe(regex13.firstMatch('xzzzxy'), ['xzzzx','x']);
52
53 var regex14 = new RegExp(r"(a)\1(?=(b*c))bc");
54 shouldBe(regex14.firstMatch('aabc'), ['aabc','a','bc']);
55 shouldBe(regex14.firstMatch('aabcx'), ['aabc','a','bc']);
56
57 var regex15 = new RegExp(r"(a)a(?=(b*c))bc");
58 shouldBe(regex15.firstMatch('aabc'), ['aabc','a','bc']);
59 shouldBe(regex15.firstMatch('aabcx'), ['aabc','a','bc']);
60
61 var regex16 = new RegExp(r"a(?=(b*c))bc");
62 shouldBeNull(regex16.firstMatch('ab'));
63 shouldBe(regex16.firstMatch('abc'), ['abc','bc']);
64
65 var regex17 = new RegExp(r"(?=((?:ab)*))a");
66 shouldBe(regex17.firstMatch('ab'), ['a','ab']);
67 shouldBe(regex17.firstMatch('abc'), ['a','ab']);
68
69 var regex18 = new RegExp(r"(?=((?:xx)*))x");
70 shouldBe(regex18.firstMatch('x'), ['x','']);
71 shouldBe(regex18.firstMatch('xx'), ['x','xx']);
72 shouldBe(regex18.firstMatch('xxx'), ['x','xx']);
73
74 var regex19 = new RegExp(r"(?=((xx)*))x");
75 shouldBe(regex19.firstMatch('x'), ['x','',null]);
76 shouldBe(regex19.firstMatch('xx'), ['x','xx','xx']);
77 shouldBe(regex19.firstMatch('xxx'), ['x','xx','xx']);
78
79 var regex20 = new RegExp(r"(?=(xx))+x");
80 shouldBeNull(regex20.firstMatch('x'));
81 shouldBe(regex20.firstMatch('xx'), ['x','xx']);
82 shouldBe(regex20.firstMatch('xxx'), ['x','xx']);
83
84 var regex21 = new RegExp(r"(?=a+b)aab");
85 shouldBe(regex21.firstMatch('aab'), ['aab']);
86
87 var regex22 = new RegExp(r"(?!(u|m{0,}g+)u{1,}|2{2,}!1%n|(?!K|(?=y)|(?=ip))+?) (?=(?=(((?:7))*?)*?))p", multiLine: true);
88 shouldBeNull(regex22.firstMatch('55up'));
89
90 var regex23 = new RegExp(r"(?=(a)b|c?)()*d");
91 shouldBeNull(regex23.firstMatch('ax'));
92
93 var regex24 = new RegExp(r"(?=a|b?)c");
94 shouldBeNull(regex24.firstMatch('x'));
95 }
OLDNEW
« no previous file with comments | « tests/language/regex/ascii-regexp-subject_test.dart ('k') | tests/language/regex/backreferences_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698