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

Side by Side Diff: tests/language/regex/pcre-test-4_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
« no previous file with comments | « tests/language/regex/parentheses_test.dart ('k') | tests/language/regex/pcre_test.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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(
10 "A chunk of our port of PCRE's test suite, adapted to be more applicable to Ja vaScript."
11 );
12
13 var regex0 = new RegExp(r"a.b");
14 var input0 = "acb";
15 var results = ["acb"];
16 shouldBe(regex0.firstMatch(input0), results);
17 var input1 = "a\x7fb";
18 results = ["a\u007fb"];
19 shouldBe(regex0.firstMatch(input1), results);
20 var input2 = "a\u0100b";
21 results = ["a\u0100b"];
22 shouldBe(regex0.firstMatch(input2), results);
23 // Failers
24 var input3 = "a\nb";
25 results = null;
26 shouldBe(regex0.firstMatch(input3), results);
27
28 var regex1 = new RegExp(r"a(.{3})b");
29 input0 = "a\u4000xyb";
30 results = ["a\u4000xyb", "\u4000xy"];
31 shouldBe(regex1.firstMatch(input0), results);
32 input1 = "a\u4000\x7fyb";
33 results = ["a\u4000\u007fyb", "\u4000\u007fy"];
34 shouldBe(regex1.firstMatch(input1), results);
35 input2 = "a\u4000\u0100yb";
36 results = ["a\u4000\u0100yb", "\u4000\u0100y"];
37 shouldBe(regex1.firstMatch(input2), results);
38 // Failers
39 input3 = "a\u4000b";
40 results = null;
41 shouldBe(regex1.firstMatch(input3), results);
42 var input4 = "ac\ncb";
43 results = null;
44 shouldBe(regex1.firstMatch(input4), results);
45
46 var regex2 = new RegExp(r"a(.*?)(.)");
47 input0 = "a\xc0\x88b";
48 results = ["a\xc0", "", "\xc0"];
49 shouldBe(regex2.firstMatch(input0), results);
50
51 var regex3 = new RegExp(r"a(.*?)(.)");
52 input0 = "a\u0100b";
53 results = ["a\u0100", "", "\u0100"];
54 shouldBe(regex3.firstMatch(input0), results);
55
56 var regex4 = new RegExp(r"a(.*)(.)");
57 input0 = "a\xc0\x88b";
58 results = ["a\xc0\x88b", "\xc0\x88", "b"];
59 shouldBe(regex4.firstMatch(input0), results);
60
61 var regex5 = new RegExp(r"a(.*)(.)");
62 input0 = "a\u0100b";
63 results = ["a\u0100b", "\u0100", "b"];
64 shouldBe(regex5.firstMatch(input0), results);
65
66 var regex6 = new RegExp(r"a(.)(.)");
67 input0 = "a\xc0\x92bcd";
68 results = ["a\xc0\x92", "\xc0", "\x92"];
69 shouldBe(regex6.firstMatch(input0), results);
70
71 var regex7 = new RegExp(r"a(.)(.)");
72 input0 = "a\u0240bcd";
73 results = ["a\u0240b", "\u0240", "b"];
74 shouldBe(regex7.firstMatch(input0), results);
75
76 var regex8 = new RegExp(r"a(.?)(.)");
77 input0 = "a\xc0\x92bcd";
78 results = ["a\xc0\x92", "\xc0", "\x92"];
79 shouldBe(regex8.firstMatch(input0), results);
80
81 var regex9 = new RegExp(r"a(.?)(.)");
82 input0 = "a\u0240bcd";
83 results = ["a\u0240b", "\u0240", "b"];
84 shouldBe(regex9.firstMatch(input0), results);
85
86 var regex10 = new RegExp(r"a(.??)(.)");
87 input0 = "a\xc0\x92bcd";
88 results = ["a\xc0", "", "\xc0"];
89 shouldBe(regex10.firstMatch(input0), results);
90
91 var regex11 = new RegExp(r"a(.??)(.)");
92 input0 = "a\u0240bcd";
93 results = ["a\u0240", "", "\u0240"];
94 shouldBe(regex11.firstMatch(input0), results);
95
96 var regex12 = new RegExp(r"a(.{3})b");
97 input0 = "a\u1234xyb";
98 results = ["a\u1234xyb", "\u1234xy"];
99 shouldBe(regex12.firstMatch(input0), results);
100 input1 = "a\u1234\u4321yb";
101 results = ["a\u1234\u4321yb", "\u1234\u4321y"];
102 shouldBe(regex12.firstMatch(input1), results);
103 input2 = "a\u1234\u4321\u3412b";
104 results = ["a\u1234\u4321\u3412b", "\u1234\u4321\u3412"];
105 shouldBe(regex12.firstMatch(input2), results);
106 // Failers
107 input3 = "a\u1234b";
108 results = null;
109 shouldBe(regex12.firstMatch(input3), results);
110 input4 = "ac\ncb";
111 results = null;
112 shouldBe(regex12.firstMatch(input4), results);
113
114 var regex13 = new RegExp(r"a(.{3,})b");
115 input0 = "a\u1234xyb";
116 results = ["a\u1234xyb", "\u1234xy"];
117 shouldBe(regex13.firstMatch(input0), results);
118 input1 = "a\u1234\u4321yb";
119 results = ["a\u1234\u4321yb", "\u1234\u4321y"];
120 shouldBe(regex13.firstMatch(input1), results);
121 input2 = "a\u1234\u4321\u3412b";
122 results = ["a\u1234\u4321\u3412b", "\u1234\u4321\u3412"];
123 shouldBe(regex13.firstMatch(input2), results);
124 input3 = "axxxxbcdefghijb";
125 results = ["axxxxbcdefghijb", "xxxxbcdefghij"];
126 shouldBe(regex13.firstMatch(input3), results);
127 input4 = "a\u1234\u4321\u3412\u3421b";
128 results = ["a\u1234\u4321\u3412\u3421b", "\u1234\u4321\u3412\u3421"];
129 shouldBe(regex13.firstMatch(input4), results);
130 // Failers
131 var input5 = "a\u1234b";
132 results = null;
133 shouldBe(regex13.firstMatch(input5), results);
134
135 var regex14 = new RegExp(r"a(.{3,}?)b");
136 input0 = "a\u1234xyb";
137 results = ["a\u1234xyb", "\u1234xy"];
138 shouldBe(regex14.firstMatch(input0), results);
139 input1 = "a\u1234\u4321yb";
140 results = ["a\u1234\u4321yb", "\u1234\u4321y"];
141 shouldBe(regex14.firstMatch(input1), results);
142 input2 = "a\u1234\u4321\u3412b";
143 results = ["a\u1234\u4321\u3412b", "\u1234\u4321\u3412"];
144 shouldBe(regex14.firstMatch(input2), results);
145 input3 = "axxxxbcdefghijb";
146 results = ["axxxxb", "xxxx"];
147 shouldBe(regex14.firstMatch(input3), results);
148 input4 = "a\u1234\u4321\u3412\u3421b";
149 results = ["a\u1234\u4321\u3412\u3421b", "\u1234\u4321\u3412\u3421"];
150 shouldBe(regex14.firstMatch(input4), results);
151 // Failers
152 input5 = "a\u1234b";
153 results = null;
154 shouldBe(regex14.firstMatch(input5), results);
155
156 var regex15 = new RegExp(r"a(.{3,5})b");
157 input0 = "a\u1234xyb";
158 results = ["a\u1234xyb", "\u1234xy"];
159 shouldBe(regex15.firstMatch(input0), results);
160 input1 = "a\u1234\u4321yb";
161 results = ["a\u1234\u4321yb", "\u1234\u4321y"];
162 shouldBe(regex15.firstMatch(input1), results);
163 input2 = "a\u1234\u4321\u3412b";
164 results = ["a\u1234\u4321\u3412b", "\u1234\u4321\u3412"];
165 shouldBe(regex15.firstMatch(input2), results);
166 input3 = "axxxxbcdefghijb";
167 results = ["axxxxb", "xxxx"];
168 shouldBe(regex15.firstMatch(input3), results);
169 input4 = "a\u1234\u4321\u3412\u3421b";
170 results = ["a\u1234\u4321\u3412\u3421b", "\u1234\u4321\u3412\u3421"];
171 shouldBe(regex15.firstMatch(input4), results);
172 input5 = "axbxxbcdefghijb";
173 results = ["axbxxb", "xbxx"];
174 shouldBe(regex15.firstMatch(input5), results);
175 var input6 = "axxxxxbcdefghijb";
176 results = ["axxxxxb", "xxxxx"];
177 shouldBe(regex15.firstMatch(input6), results);
178 // Failers
179 var input7 = "a\u1234b";
180 results = null;
181 shouldBe(regex15.firstMatch(input7), results);
182 var input8 = "axxxxxxbcdefghijb";
183 results = null;
184 shouldBe(regex15.firstMatch(input8), results);
185
186 var regex16 = new RegExp(r"a(.{3,5}?)b");
187 input0 = "a\u1234xyb";
188 results = ["a\u1234xyb", "\u1234xy"];
189 shouldBe(regex16.firstMatch(input0), results);
190 input1 = "a\u1234\u4321yb";
191 results = ["a\u1234\u4321yb", "\u1234\u4321y"];
192 shouldBe(regex16.firstMatch(input1), results);
193 input2 = "a\u1234\u4321\u3412b";
194 results = ["a\u1234\u4321\u3412b", "\u1234\u4321\u3412"];
195 shouldBe(regex16.firstMatch(input2), results);
196 input3 = "axxxxbcdefghijb";
197 results = ["axxxxb", "xxxx"];
198 shouldBe(regex16.firstMatch(input3), results);
199 input4 = "a\u1234\u4321\u3412\u3421b";
200 results = ["a\u1234\u4321\u3412\u3421b", "\u1234\u4321\u3412\u3421"];
201 shouldBe(regex16.firstMatch(input4), results);
202 input5 = "axbxxbcdefghijb";
203 results = ["axbxxb", "xbxx"];
204 shouldBe(regex16.firstMatch(input5), results);
205 input6 = "axxxxxbcdefghijb";
206 results = ["axxxxxb", "xxxxx"];
207 shouldBe(regex16.firstMatch(input6), results);
208 // Failers
209 input7 = "a\u1234b";
210 results = null;
211 shouldBe(regex16.firstMatch(input7), results);
212 input8 = "axxxxxxbcdefghijb";
213 results = null;
214 shouldBe(regex16.firstMatch(input8), results);
215
216 var regex17 = new RegExp(r"^[a\u00c0]");
217 // Failers
218 input0 = "\u0100";
219 results = null;
220 shouldBe(regex17.firstMatch(input0), results);
221
222 var regex21 = new RegExp(r"(?:\u0100){3}b");
223 input0 = "\u0100\u0100\u0100b";
224 results = ["\u0100\u0100\u0100b"];
225 shouldBe(regex21.firstMatch(input0), results);
226 // Failers
227 input1 = "\u0100\u0100b";
228 results = null;
229 shouldBe(regex21.firstMatch(input1), results);
230
231 var regex22 = new RegExp(r"\u00ab");
232 input0 = "\u00ab";
233 results = ["\u00ab"];
234 shouldBe(regex22.firstMatch(input0), results);
235 input1 = "\xc2\xab";
236 results = ["\u00ab"];
237 shouldBe(regex22.firstMatch(input1), results);
238 // Failers
239 input2 = "\x00{ab}";
240 results = null;
241 shouldBe(regex22.firstMatch(input2), results);
242
243 var regex30 = new RegExp(r"^[^a]{2}");
244 input0 = "\u0100bc";
245 results = ["\u0100b"];
246 shouldBe(regex30.firstMatch(input0), results);
247
248 var regex31 = new RegExp(r"^[^a]{2,}");
249 input0 = "\u0100bcAa";
250 results = ["\u0100bcA"];
251 shouldBe(regex31.firstMatch(input0), results);
252
253 var regex32 = new RegExp(r"^[^a]{2,}?");
254 input0 = "\u0100bca";
255 results = ["\u0100b"];
256 shouldBe(regex32.firstMatch(input0), results);
257
258 var regex33 = new RegExp(r"^[^a]{2}", caseSensitive: false);
259 input0 = "\u0100bc";
260 results = ["\u0100b"];
261 shouldBe(regex33.firstMatch(input0), results);
262
263 var regex34 = new RegExp(r"^[^a]{2,}", caseSensitive: false);
264 input0 = "\u0100bcAa";
265 results = ["\u0100bc"];
266 shouldBe(regex34.firstMatch(input0), results);
267
268 var regex35 = new RegExp(r"^[^a]{2,}?", caseSensitive: false);
269 input0 = "\u0100bca";
270 results = ["\u0100b"];
271 shouldBe(regex35.firstMatch(input0), results);
272
273 var regex36 = new RegExp(r"\u0100{0,0}");
274 input0 = "abcd";
275 results = [""];
276 shouldBe(regex36.firstMatch(input0), results);
277
278 var regex37 = new RegExp(r"\u0100?");
279 input0 = "abcd";
280 results = [""];
281 shouldBe(regex37.firstMatch(input0), results);
282 input1 = "\u0100\u0100";
283 results = ["\u0100"];
284 shouldBe(regex37.firstMatch(input1), results);
285
286 var regex38 = new RegExp(r"\u0100{0,3}");
287 input0 = "\u0100\u0100";
288 results = ["\u0100\u0100"];
289 shouldBe(regex38.firstMatch(input0), results);
290 input1 = "\u0100\u0100\u0100\u0100";
291 results = ["\u0100\u0100\u0100"];
292 shouldBe(regex38.firstMatch(input1), results);
293
294 var regex39 = new RegExp(r"\u0100*");
295 input0 = "abce";
296 results = [""];
297 shouldBe(regex39.firstMatch(input0), results);
298 input1 = "\u0100\u0100\u0100\u0100";
299 results = ["\u0100\u0100\u0100\u0100"];
300 shouldBe(regex39.firstMatch(input1), results);
301
302 var regex40 = new RegExp(r"\u0100{1,1}");
303 input0 = "abcd\u0100\u0100\u0100\u0100";
304 results = ["\u0100"];
305 shouldBe(regex40.firstMatch(input0), results);
306
307 var regex41 = new RegExp(r"\u0100{1,3}");
308 input0 = "abcd\u0100\u0100\u0100\u0100";
309 results = ["\u0100\u0100\u0100"];
310 shouldBe(regex41.firstMatch(input0), results);
311
312 var regex42 = new RegExp(r"\u0100+");
313 input0 = "abcd\u0100\u0100\u0100\u0100";
314 results = ["\u0100\u0100\u0100\u0100"];
315 shouldBe(regex42.firstMatch(input0), results);
316
317 var regex43 = new RegExp(r"\u0100{3}");
318 input0 = "abcd\u0100\u0100\u0100XX";
319 results = ["\u0100\u0100\u0100"];
320 shouldBe(regex43.firstMatch(input0), results);
321
322 var regex44 = new RegExp(r"\u0100{3,5}");
323 input0 = "abcd\u0100\u0100\u0100\u0100\u0100\u0100\u0100XX";
324 results = ["\u0100\u0100\u0100\u0100\u0100"];
325 shouldBe(regex44.firstMatch(input0), results);
326
327 var regex45 = new RegExp(r"\u0100{3,}");
328 input0 = "abcd\u0100\u0100\u0100\u0100\u0100\u0100\u0100XX";
329 results = ["\u0100\u0100\u0100\u0100\u0100\u0100\u0100"];
330 shouldBe(regex45.firstMatch(input0), results);
331
332 var regex47 = new RegExp(r"\D*");
333 input0 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
334 results = ["aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"];
335 shouldBe(regex47.firstMatch(input0), results);
336
337 var regex48 = new RegExp(r"\D*");
338 input0 = "\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u 0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u01 00\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100 \u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u 0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u01 00\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100 \u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u 0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u01 00\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100 \u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u 0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u01 00\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100 \u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u 0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u01 00\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100 \u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u 0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100";
339 results = ["\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100 \u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u 0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u01 00\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100 \u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u 0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u01 00\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100 \u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u 0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u01 00\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100 \u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u 0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u01 00\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100 \u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u 0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u01 00\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100 \u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100"];
340 shouldBe(regex48.firstMatch(input0), results);
341
342 var regex49 = new RegExp(r"\D");
343 input0 = "1X2";
344 results = ["X"];
345 shouldBe(regex49.firstMatch(input0), results);
346 input1 = "1\u01002";
347 results = ["\u0100"];
348 shouldBe(regex49.firstMatch(input1), results);
349
350 var regex50 = new RegExp(r">\S");
351 input0 = "> >X Y";
352 results = [">X"];
353 shouldBe(regex50.firstMatch(input0), results);
354 input1 = "> >\u0100 Y";
355 results = [">\u0100"];
356 shouldBe(regex50.firstMatch(input1), results);
357
358 var regex51 = new RegExp(r"\d");
359 input0 = "\u01003";
360 results = ["3"];
361 shouldBe(regex51.firstMatch(input0), results);
362
363 var regex52 = new RegExp(r"\s");
364 input0 = "\u0100 X";
365 results = [" "];
366 shouldBe(regex52.firstMatch(input0), results);
367
368 var regex53 = new RegExp(r"\D+");
369 input0 = "12abcd34";
370 results = ["abcd"];
371 shouldBe(regex53.firstMatch(input0), results);
372 // Failers
373 input1 = "1234";
374 results = null;
375 shouldBe(regex53.firstMatch(input1), results);
376
377 var regex54 = new RegExp(r"\D{2,3}");
378 input0 = "12abcd34";
379 results = ["abc"];
380 shouldBe(regex54.firstMatch(input0), results);
381 input1 = "12ab34";
382 results = ["ab"];
383 shouldBe(regex54.firstMatch(input1), results);
384 // Failers
385 input2 = "1234";
386 results = null;
387 shouldBe(regex54.firstMatch(input2), results);
388 input3 = "12a34";
389 results = null;
390 shouldBe(regex54.firstMatch(input3), results);
391
392 var regex55 = new RegExp(r"\D{2,3}?");
393 input0 = "12abcd34";
394 results = ["ab"];
395 shouldBe(regex55.firstMatch(input0), results);
396 input1 = "12ab34";
397 results = ["ab"];
398 shouldBe(regex55.firstMatch(input1), results);
399 // Failers
400 input2 = "1234";
401 results = null;
402 shouldBe(regex55.firstMatch(input2), results);
403 input3 = "12a34";
404 results = null;
405 shouldBe(regex55.firstMatch(input3), results);
406
407 var regex56 = new RegExp(r"\d+");
408 input0 = "12abcd34";
409 results = ["12"];
410 shouldBe(regex56.firstMatch(input0), results);
411
412 var regex57 = new RegExp(r"\d{2,3}");
413 input0 = "12abcd34";
414 results = ["12"];
415 shouldBe(regex57.firstMatch(input0), results);
416 input1 = "1234abcd";
417 results = ["123"];
418 shouldBe(regex57.firstMatch(input1), results);
419 // Failers
420 input2 = "1.4";
421 results = null;
422 shouldBe(regex57.firstMatch(input2), results);
423
424 var regex58 = new RegExp(r"\d{2,3}?");
425 input0 = "12abcd34";
426 results = ["12"];
427 shouldBe(regex58.firstMatch(input0), results);
428 input1 = "1234abcd";
429 results = ["12"];
430 shouldBe(regex58.firstMatch(input1), results);
431 // Failers
432 input2 = "1.4";
433 results = null;
434 shouldBe(regex58.firstMatch(input2), results);
435
436 var regex59 = new RegExp(r"\S+");
437 input0 = "12abcd34";
438 results = ["12abcd34"];
439 shouldBe(regex59.firstMatch(input0), results);
440 // Failers
441 input1 = " ";
442 results = null;
443 shouldBe(regex59.firstMatch(input1), results);
444
445 var regex60 = new RegExp(r"\S{2,3}");
446 input0 = "12abcd34";
447 results = ["12a"];
448 shouldBe(regex60.firstMatch(input0), results);
449 input1 = "1234abcd";
450 results = ["123"];
451 shouldBe(regex60.firstMatch(input1), results);
452 // Failers
453 input2 = " ";
454 results = null;
455 shouldBe(regex60.firstMatch(input2), results);
456
457 var regex61 = new RegExp(r"\S{2,3}?");
458 input0 = "12abcd34";
459 results = ["12"];
460 shouldBe(regex61.firstMatch(input0), results);
461 input1 = "1234abcd";
462 results = ["12"];
463 shouldBe(regex61.firstMatch(input1), results);
464 // Failers
465 input2 = " ";
466 results = null;
467 shouldBe(regex61.firstMatch(input2), results);
468
469 var regex62 = new RegExp(r">\s+<");
470 input0 = "12> <34";
471 results = ["> <"];
472 shouldBe(regex62.firstMatch(input0), results);
473
474 var regex63 = new RegExp(r">\s{2,3}<");
475 input0 = "ab> <cd";
476 results = ["> <"];
477 shouldBe(regex63.firstMatch(input0), results);
478 input1 = "ab> <ce";
479 results = ["> <"];
480 shouldBe(regex63.firstMatch(input1), results);
481 // Failers
482 input2 = "ab> <cd";
483 results = null;
484 shouldBe(regex63.firstMatch(input2), results);
485
486 var regex64 = new RegExp(r">\s{2,3}?<");
487 input0 = "ab> <cd";
488 results = ["> <"];
489 shouldBe(regex64.firstMatch(input0), results);
490 input1 = "ab> <ce";
491 results = ["> <"];
492 shouldBe(regex64.firstMatch(input1), results);
493 // Failers
494 input2 = "ab> <cd";
495 results = null;
496 shouldBe(regex64.firstMatch(input2), results);
497
498 var regex65 = new RegExp(r"\w+");
499 input0 = "12 34";
500 results = ["12"];
501 shouldBe(regex65.firstMatch(input0), results);
502 // Failers
503 input1 = "+++=*!";
504 results = null;
505 shouldBe(regex65.firstMatch(input1), results);
506
507 var regex66 = new RegExp(r"\w{2,3}");
508 input0 = "ab cd";
509 results = ["ab"];
510 shouldBe(regex66.firstMatch(input0), results);
511 input1 = "abcd ce";
512 results = ["abc"];
513 shouldBe(regex66.firstMatch(input1), results);
514 // Failers
515 input2 = "a.b.c";
516 results = null;
517 shouldBe(regex66.firstMatch(input2), results);
518
519 var regex67 = new RegExp(r"\w{2,3}?");
520 input0 = "ab cd";
521 results = ["ab"];
522 shouldBe(regex67.firstMatch(input0), results);
523 input1 = "abcd ce";
524 results = ["ab"];
525 shouldBe(regex67.firstMatch(input1), results);
526 // Failers
527 input2 = "a.b.c";
528 results = null;
529 shouldBe(regex67.firstMatch(input2), results);
530
531 var regex68 = new RegExp(r"\W+");
532 input0 = "12====34";
533 results = ["===="];
534 shouldBe(regex68.firstMatch(input0), results);
535 // Failers
536 input1 = "abcd";
537 results = null;
538 shouldBe(regex68.firstMatch(input1), results);
539
540 var regex69 = new RegExp(r"\W{2,3}");
541 input0 = "ab====cd";
542 results = ["==="];
543 shouldBe(regex69.firstMatch(input0), results);
544 input1 = "ab==cd";
545 results = ["=="];
546 shouldBe(regex69.firstMatch(input1), results);
547 // Failers
548 input2 = "a.b.c";
549 results = null;
550 shouldBe(regex69.firstMatch(input2), results);
551
552 var regex70 = new RegExp(r"\W{2,3}?");
553 input0 = "ab====cd";
554 results = ["=="];
555 shouldBe(regex70.firstMatch(input0), results);
556 input1 = "ab==cd";
557 results = ["=="];
558 shouldBe(regex70.firstMatch(input1), results);
559 // Failers
560 input2 = "a.b.c";
561 results = null;
562 shouldBe(regex70.firstMatch(input2), results);
563
564 var regex71 = new RegExp(r"[\u0100]");
565 input0 = "\u0100";
566 results = ["\u0100"];
567 shouldBe(regex71.firstMatch(input0), results);
568 input1 = "Z\u0100";
569 results = ["\u0100"];
570 shouldBe(regex71.firstMatch(input1), results);
571 input2 = "\u0100Z";
572 results = ["\u0100"];
573 shouldBe(regex71.firstMatch(input2), results);
574
575 var regex72 = new RegExp(r"[Z\u0100]");
576 input0 = "Z\u0100";
577 results = ["Z"];
578 shouldBe(regex72.firstMatch(input0), results);
579 input1 = "\u0100";
580 results = ["\u0100"];
581 shouldBe(regex72.firstMatch(input1), results);
582 input2 = "\u0100Z";
583 results = ["\u0100"];
584 shouldBe(regex72.firstMatch(input2), results);
585
586 var regex73 = new RegExp(r"[\u0100\u0200]");
587 input0 = "ab\u0100cd";
588 results = ["\u0100"];
589 shouldBe(regex73.firstMatch(input0), results);
590 input1 = "ab\u0200cd";
591 results = ["\u0200"];
592 shouldBe(regex73.firstMatch(input1), results);
593
594 var regex74 = new RegExp(r"[\u0100-\u0200]");
595 input0 = "ab\u0100cd";
596 results = ["\u0100"];
597 shouldBe(regex74.firstMatch(input0), results);
598 input1 = "ab\u0200cd";
599 results = ["\u0200"];
600 shouldBe(regex74.firstMatch(input1), results);
601 input2 = "ab\u0111cd";
602 results = ["\u0111"];
603 shouldBe(regex74.firstMatch(input2), results);
604
605 var regex75 = new RegExp(r"[z-\u0200]");
606 input0 = "ab\u0100cd";
607 results = ["\u0100"];
608 shouldBe(regex75.firstMatch(input0), results);
609 input1 = "ab\u0200cd";
610 results = ["\u0200"];
611 shouldBe(regex75.firstMatch(input1), results);
612 input2 = "ab\u0111cd";
613 results = ["\u0111"];
614 shouldBe(regex75.firstMatch(input2), results);
615 input3 = "abzcd";
616 results = ["z"];
617 shouldBe(regex75.firstMatch(input3), results);
618 input4 = "ab|cd";
619 results = ["|"];
620 shouldBe(regex75.firstMatch(input4), results);
621
622 var regex76 = new RegExp(r"[Q\u0100\u0200]");
623 input0 = "ab\u0100cd";
624 results = ["\u0100"];
625 shouldBe(regex76.firstMatch(input0), results);
626 input1 = "ab\u0200cd";
627 results = ["\u0200"];
628 shouldBe(regex76.firstMatch(input1), results);
629 input2 = "Q?";
630 results = ["Q"];
631 shouldBe(regex76.firstMatch(input2), results);
632
633 var regex77 = new RegExp(r"[Q\u0100-\u0200]");
634 input0 = "ab\u0100cd";
635 results = ["\u0100"];
636 shouldBe(regex77.firstMatch(input0), results);
637 input1 = "ab\u0200cd";
638 results = ["\u0200"];
639 shouldBe(regex77.firstMatch(input1), results);
640 input2 = "ab\u0111cd";
641 results = ["\u0111"];
642 shouldBe(regex77.firstMatch(input2), results);
643 input3 = "Q?";
644 results = ["Q"];
645 shouldBe(regex77.firstMatch(input3), results);
646
647 var regex78 = new RegExp(r"[Qz-\u0200]");
648 input0 = "ab\u0100cd";
649 results = ["\u0100"];
650 shouldBe(regex78.firstMatch(input0), results);
651 input1 = "ab\u0200cd";
652 results = ["\u0200"];
653 shouldBe(regex78.firstMatch(input1), results);
654 input2 = "ab\u0111cd";
655 results = ["\u0111"];
656 shouldBe(regex78.firstMatch(input2), results);
657 input3 = "abzcd";
658 results = ["z"];
659 shouldBe(regex78.firstMatch(input3), results);
660 input4 = "ab|cd";
661 results = ["|"];
662 shouldBe(regex78.firstMatch(input4), results);
663 input5 = "Q?";
664 results = ["Q"];
665 shouldBe(regex78.firstMatch(input5), results);
666
667 var regex79 = new RegExp(r"[\u0100\u0200]{1,3}");
668 input0 = "ab\u0100cd";
669 results = ["\u0100"];
670 shouldBe(regex79.firstMatch(input0), results);
671 input1 = "ab\u0200cd";
672 results = ["\u0200"];
673 shouldBe(regex79.firstMatch(input1), results);
674 input2 = "ab\u0200\u0100\u0200\u0100cd";
675 results = ["\u0200\u0100\u0200"];
676 shouldBe(regex79.firstMatch(input2), results);
677
678 var regex80 = new RegExp(r"[\u0100\u0200]{1,3}?");
679 input0 = "ab\u0100cd";
680 results = ["\u0100"];
681 shouldBe(regex80.firstMatch(input0), results);
682 input1 = "ab\u0200cd";
683 results = ["\u0200"];
684 shouldBe(regex80.firstMatch(input1), results);
685 input2 = "ab\u0200\u0100\u0200\u0100cd";
686 results = ["\u0200"];
687 shouldBe(regex80.firstMatch(input2), results);
688
689 var regex81 = new RegExp(r"[Q\u0100\u0200]{1,3}");
690 input0 = "ab\u0100cd";
691 results = ["\u0100"];
692 shouldBe(regex81.firstMatch(input0), results);
693 input1 = "ab\u0200cd";
694 results = ["\u0200"];
695 shouldBe(regex81.firstMatch(input1), results);
696 input2 = "ab\u0200\u0100\u0200\u0100cd";
697 results = ["\u0200\u0100\u0200"];
698 shouldBe(regex81.firstMatch(input2), results);
699
700 var regex82 = new RegExp(r"[Q\u0100\u0200]{1,3}?");
701 input0 = "ab\u0100cd";
702 results = ["\u0100"];
703 shouldBe(regex82.firstMatch(input0), results);
704 input1 = "ab\u0200cd";
705 results = ["\u0200"];
706 shouldBe(regex82.firstMatch(input1), results);
707 input2 = "ab\u0200\u0100\u0200\u0100cd";
708 results = ["\u0200"];
709 shouldBe(regex82.firstMatch(input2), results);
710
711 var regex86 = new RegExp(r"[^\u0100\u0200]X");
712 input0 = "AX";
713 results = ["AX"];
714 shouldBe(regex86.firstMatch(input0), results);
715 input1 = "\u0150X";
716 results = ["\u0150X"];
717 shouldBe(regex86.firstMatch(input1), results);
718 input2 = "\u0500X";
719 results = ["\u0500X"];
720 shouldBe(regex86.firstMatch(input2), results);
721 // Failers
722 input3 = "\u0100X";
723 results = null;
724 shouldBe(regex86.firstMatch(input3), results);
725 input4 = "\u0200X";
726 results = null;
727 shouldBe(regex86.firstMatch(input4), results);
728
729 var regex87 = new RegExp(r"[^Q\u0100\u0200]X");
730 input0 = "AX";
731 results = ["AX"];
732 shouldBe(regex87.firstMatch(input0), results);
733 input1 = "\u0150X";
734 results = ["\u0150X"];
735 shouldBe(regex87.firstMatch(input1), results);
736 input2 = "\u0500X";
737 results = ["\u0500X"];
738 shouldBe(regex87.firstMatch(input2), results);
739 // Failers
740 input3 = "\u0100X";
741 results = null;
742 shouldBe(regex87.firstMatch(input3), results);
743 input4 = "\u0200X";
744 results = null;
745 shouldBe(regex87.firstMatch(input4), results);
746 input5 = "QX";
747 results = null;
748 shouldBe(regex87.firstMatch(input5), results);
749
750 var regex88 = new RegExp(r"[^\u0100-\u0200]X");
751 input0 = "AX";
752 results = ["AX"];
753 shouldBe(regex88.firstMatch(input0), results);
754 input1 = "\u0500X";
755 results = ["\u0500X"];
756 shouldBe(regex88.firstMatch(input1), results);
757 // Failers
758 input2 = "\u0100X";
759 results = null;
760 shouldBe(regex88.firstMatch(input2), results);
761 input3 = "\u0150X";
762 results = null;
763 shouldBe(regex88.firstMatch(input3), results);
764 input4 = "\u0200X";
765 results = null;
766 shouldBe(regex88.firstMatch(input4), results);
767
768 var regex91 = new RegExp(r"[z-\u0100]", caseSensitive: false);
769 input0 = "z";
770 results = ["z"];
771 shouldBe(regex91.firstMatch(input0), results);
772 input1 = "Z";
773 results = ["Z"];
774 shouldBe(regex91.firstMatch(input1), results);
775 input2 = "\u0100";
776 results = ["\u0100"];
777 shouldBe(regex91.firstMatch(input2), results);
778 // Failers
779 input3 = "\u0102";
780 results = null;
781 shouldBe(regex91.firstMatch(input3), results);
782 input4 = "y";
783 results = null;
784 shouldBe(regex91.firstMatch(input4), results);
785
786 var regex92 = new RegExp(r"[\xFF]");
787 input0 = ">\xff<";
788 results = ["\xff"];
789 shouldBe(regex92.firstMatch(input0), results);
790
791 var regex93 = new RegExp(r"[\xff]");
792 input0 = ">\u00ff<";
793 results = ["\u00ff"];
794 shouldBe(regex93.firstMatch(input0), results);
795
796 var regex94 = new RegExp(r"[^\xFF]");
797 input0 = "XYZ";
798 results = ["X"];
799 shouldBe(regex94.firstMatch(input0), results);
800
801 var regex95 = new RegExp(r"[^\xff]");
802 input0 = "XYZ";
803 results = ["X"];
804 shouldBe(regex95.firstMatch(input0), results);
805 input1 = "\u0123";
806 results = ["\u0123"];
807 shouldBe(regex95.firstMatch(input1), results);
808
809 var regex96 = new RegExp(r"^[ac]*b");
810 input0 = "xb";
811 results = null;
812 shouldBe(regex96.firstMatch(input0), results);
813
814 var regex97 = new RegExp(r"^[ac\u0100]*b");
815 input0 = "xb";
816 results = null;
817 shouldBe(regex97.firstMatch(input0), results);
818
819 var regex98 = new RegExp(r"^[^x]*b", caseSensitive: false);
820 input0 = "xb";
821 results = null;
822 shouldBe(regex98.firstMatch(input0), results);
823
824 var regex99 = new RegExp(r"^[^x]*b");
825 input0 = "xb";
826 results = null;
827 shouldBe(regex99.firstMatch(input0), results);
828
829 var regex100 = new RegExp(r"^\d*b");
830 input0 = "xb";
831 results = null;
832 shouldBe(regex100.firstMatch(input0), results);
833
834 var regex102 = new RegExp(r"^\u0085$", caseSensitive: false);
835 input0 = "\u0085";
836 results = ["\u0085"];
837 shouldBe(regex102.firstMatch(input0), results);
838
839 var regex103 = new RegExp(r"^\xe1\x88\xb4");
840 input0 = "\xe1\x88\xb4";
841 results = ["\xe1\x88\xb4"];
842 shouldBe(regex103.firstMatch(input0), results);
843
844 var regex104 = new RegExp(r"^\xe1\x88\xb4");
845 input0 = "\xe1\x88\xb4";
846 results = ["\xe1\x88\xb4"];
847 shouldBe(regex104.firstMatch(input0), results);
848
849 var regex105 = new RegExp(r"(.{1,5})");
850 input0 = "abcdefg";
851 results = ["abcde", "abcde"];
852 shouldBe(regex105.firstMatch(input0), results);
853 input1 = "ab";
854 results = ["ab", "ab"];
855 shouldBe(regex105.firstMatch(input1), results);
856
857 var regex106 = new RegExp(r"a*\u0100*\w");
858 input0 = "a";
859 results = ["a"];
860 shouldBe(regex106.firstMatch(input0), results);
861
862 var regex107 = new RegExp(r"[\S\s]*");
863 input0 = "abc\n\r\u0442\u0435\u0441\u0442xyz";
864 results = ["abc\u000a\u000d\u0442\u0435\u0441\u0442xyz"];
865 shouldBe(regex107.firstMatch(input0), results);
866
867 var regexGlobal0 = new RegExp(r"[^a]+");
868 input0 = "bcd";
869 results = ["bcd"];
870 shouldBe(firstMatch(input0, regexGlobal0), results);
871 input1 = "\u0100aY\u0256Z";
872 results = ["\u0100", "Y\u0256Z"];
873 Expect.listEquals(regexGlobal0.allMatches(input1)
874 .map((m) => m.group(0)).toList(),
875 results);
876
877 var regexGlobal1 = new RegExp(r"\S\S");
878 input0 = "A\u00a3BC";
879 results = ["A\u00a3", "BC"];
880 Expect.listEquals(allStringMatches(input0, regexGlobal1), results);
881
882 var regexGlobal2 = new RegExp(r"\S{2}");
883 input0 = "A\u00a3BC";
884 results = ["A\u00a3", "BC"];
885 Expect.listEquals(allStringMatches(input0, regexGlobal2), results);
886
887 var regexGlobal3 = new RegExp(r"\W\W");
888 input0 = "+\u00a3==";
889 results = ["+\u00a3", "=="];
890 Expect.listEquals(allStringMatches(input0, regexGlobal3), results);
891
892 var regexGlobal4 = new RegExp(r"\W{2}");
893 input0 = "+\u00a3==";
894 results = ["+\u00a3", "=="];
895 Expect.listEquals(allStringMatches(input0, regexGlobal4), results);
896
897 var regexGlobal5 = new RegExp(r"\S");
898 input0 = "\u0442\u0435\u0441\u0442";
899 results = ["\u0442", "\u0435", "\u0441", "\u0442"];
900 Expect.listEquals(allStringMatches(input0, regexGlobal5), results);
901
902 var regexGlobal6 = new RegExp(r"[\S]");
903 input0 = "\u0442\u0435\u0441\u0442";
904 results = ["\u0442", "\u0435", "\u0441", "\u0442"];
905 Expect.listEquals(allStringMatches(input0, regexGlobal6), results);
906
907 var regexGlobal7 = new RegExp(r"\D");
908 input0 = "\u0442\u0435\u0441\u0442";
909 results = ["\u0442", "\u0435", "\u0441", "\u0442"];
910 Expect.listEquals(allStringMatches(input0, regexGlobal7), results);
911
912 var regexGlobal8 = new RegExp(r"[\D]");
913 input0 = "\u0442\u0435\u0441\u0442";
914 results = ["\u0442", "\u0435", "\u0441", "\u0442"];
915 Expect.listEquals(allStringMatches(input0, regexGlobal8), results);
916
917 var regexGlobal9 = new RegExp(r"\W");
918 input0 = "\u2442\u2435\u2441\u2442";
919 results = ["\u2442", "\u2435", "\u2441", "\u2442"];
920 Expect.listEquals(allStringMatches(input0, regexGlobal9), results);
921
922 var regexGlobal10 = new RegExp(r"[\W]");
923 input0 = "\u2442\u2435\u2441\u2442";
924 results = ["\u2442", "\u2435", "\u2441", "\u2442"];
925 Expect.listEquals(allStringMatches(input0, regexGlobal10), results);
926
927 var regexGlobal11 = new RegExp(r"[\u041f\S]");
928 input0 = "\u0442\u0435\u0441\u0442";
929 results = ["\u0442", "\u0435", "\u0441", "\u0442"];
930 Expect.listEquals(allStringMatches(input0, regexGlobal11), results);
931
932 var regexGlobal12 = new RegExp(r".[^\S].");
933 input0 = "abc def\u0442\u0443xyz\npqr";
934 results = ["c d", "z\u000ap"];
935 Expect.listEquals(allStringMatches(input0, regexGlobal12), results);
936
937 var regexGlobal13 = new RegExp(r".[^\S\n].");
938 input0 = "abc def\u0442\u0443xyz\npqr";
939 results = ["c d"];
940 Expect.listEquals(allStringMatches(input0, regexGlobal13), results);
941
942 var regexGlobal14 = new RegExp(r"[\W]");
943 input0 = "+\u2442";
944 results = ["+", "\u2442"];
945 Expect.listEquals(allStringMatches(input0, regexGlobal14), results);
946
947 var regexGlobal15 = new RegExp(r"[^a-zA-Z]");
948 input0 = "+\u2442";
949 results = ["+", "\u2442"];
950 Expect.listEquals(allStringMatches(input0, regexGlobal15), results);
951
952 var regexGlobal16 = new RegExp(r"[^a-zA-Z]");
953 input0 = "A\u0442";
954 results = ["\u0442"];
955 Expect.listEquals(allStringMatches(input0, regexGlobal16), results);
956
957 var regexGlobal17 = new RegExp(r"[\S]");
958 input0 = "A\u0442";
959 results = ["A", "\u0442"];
960 Expect.listEquals(allStringMatches(input0, regexGlobal17), results);
961
962 var regexGlobal19 = new RegExp(r"[\D]");
963 input0 = "A\u0442";
964 results = ["A", "\u0442"];
965 Expect.listEquals(allStringMatches(input0, regexGlobal19), results);
966
967 var regexGlobal21 = new RegExp(r"[^a-z]");
968 input0 = "A\u0422";
969 results = ["A", "\u0422"];
970 Expect.listEquals(allStringMatches(input0, regexGlobal21), results);
971
972 var regexGlobal24 = new RegExp(r"[\S]");
973 input0 = "A\u0442";
974 results = ["A", "\u0442"];
975 Expect.listEquals(allStringMatches(input0, regexGlobal24), results);
976
977 var regexGlobal25 = new RegExp(r"[^A-Z]");
978 input0 = "a\u0442";
979 results = ["a", "\u0442"];
980 Expect.listEquals(allStringMatches(input0, regexGlobal25), results);
981
982 var regexGlobal26 = new RegExp(r"[\W]");
983 input0 = "+\u2442";
984 results = ["+", "\u2442"];
985 Expect.listEquals(allStringMatches(input0, regexGlobal26), results);
986
987 var regexGlobal27 = new RegExp(r"[\D]");
988 input0 = "M\u0442";
989 results = ["M", "\u0442"];
990 Expect.listEquals(allStringMatches(input0, regexGlobal27), results);
991
992 var regexGlobal28 = new RegExp(r"[^a]+", caseSensitive: false);
993 input0 = "bcd";
994 results = ["bcd"];
995 Expect.listEquals(allStringMatches(input0, regexGlobal28), results);
996 input1 = "\u0100aY\u0256Z";
997 results = ["\u0100", "Y\u0256Z"];
998 Expect.listEquals(allStringMatches(input1, regexGlobal28), results);
999
1000 var regexGlobal29 = new RegExp(r"(a|)");
1001 input0 = "catac";
1002 results = ["", "a", "", "a", "", ""];
1003 Expect.listEquals(allStringMatches(input0, regexGlobal29), results);
1004 input1 = "a\u0256a";
1005 results = ["a", "", "a", ""];
1006 Expect.listEquals(allStringMatches(input1, regexGlobal29), results);
1007 }
OLDNEW
« no previous file with comments | « tests/language/regex/parentheses_test.dart ('k') | tests/language/regex/pcre_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698