]>
Commit | Line | Data |
---|---|---|
b37bf2e1 A |
1 | /* ***** BEGIN LICENSE BLOCK ***** |
2 | * Version: NPL 1.1/GPL 2.0/LGPL 2.1 | |
3 | * | |
4 | * The contents of this file are subject to the Netscape Public License | |
5 | * Version 1.1 (the "License"); you may not use this file except in | |
6 | * compliance with the License. You may obtain a copy of the License at | |
7 | * http://www.mozilla.org/NPL/ | |
8 | * | |
9 | * Software distributed under the License is distributed on an "AS IS" basis, | |
10 | * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License | |
11 | * for the specific language governing rights and limitations under the | |
12 | * License. | |
13 | * | |
14 | * The Original Code is JavaScript Engine testing utilities. | |
15 | * | |
16 | * The Initial Developer of the Original Code is Netscape Communications Corp. | |
17 | * Portions created by the Initial Developer are Copyright (C) 2002 | |
18 | * the Initial Developer. All Rights Reserved. | |
19 | * | |
20 | * Contributor(s): pschwartau@netscape.com, rogerl@netscape.com | |
21 | * | |
22 | * Alternatively, the contents of this file may be used under the terms of | |
23 | * either the GNU General Public License Version 2 or later (the "GPL"), or | |
24 | * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), | |
25 | * in which case the provisions of the GPL or the LGPL are applicable instead | |
26 | * of those above. If you wish to allow use of your version of this file only | |
27 | * under the terms of either the GPL or the LGPL, and not to allow others to | |
28 | * use your version of this file under the terms of the NPL, indicate your | |
29 | * decision by deleting the provisions above and replace them with the notice | |
30 | * and other provisions required by the GPL or the LGPL. If you do not delete | |
31 | * the provisions above, a recipient may use your version of this file under | |
32 | * the terms of any one of the NPL, the GPL or the LGPL. | |
33 | * | |
34 | * ***** END LICENSE BLOCK ***** | |
35 | * | |
36 | * | |
37 | * Date: 2002-07-07 | |
38 | * SUMMARY: Testing JS RegExp engine against Perl 5 RegExp engine. | |
39 | * Adjust cnLBOUND, cnUBOUND below to restrict which sections are tested. | |
40 | * | |
41 | * This test was created by running various patterns and strings through the | |
42 | * Perl 5 RegExp engine. We saved the results below to test the JS engine. | |
43 | * | |
44 | * Each of the examples below is a negative test; that is, each produces a | |
45 | * null match in Perl. Thus we set |expectedmatch| = |null| in each section. | |
46 | * | |
47 | * NOTE: ECMA/JS and Perl do differ on certain points. We have either commented | |
48 | * out such sections altogether, or modified them to fit what we expect from JS. | |
49 | * | |
50 | * EXAMPLES: | |
51 | * | |
52 | * - ECMA does support (?: (?= and (?! operators, but doesn't support (?< etc. | |
53 | * | |
54 | * - ECMA doesn't support (?(condition) | |
55 | * | |
56 | */ | |
57 | //----------------------------------------------------------------------------- | |
58 | var i = 0; | |
59 | var bug = 85721; | |
60 | var summary = 'Testing regular expression edge cases'; | |
61 | var cnSingleSpace = ' '; | |
62 | var status = ''; | |
63 | var statusmessages = new Array(); | |
64 | var pattern = ''; | |
65 | var patterns = new Array(); | |
66 | var string = ''; | |
67 | var strings = new Array(); | |
68 | var actualmatch = ''; | |
69 | var actualmatches = new Array(); | |
70 | var expectedmatch = ''; | |
71 | var expectedmatches = new Array(); | |
72 | var cnLBOUND = 0; | |
73 | var cnUBOUND = 1000; | |
74 | ||
75 | ||
76 | status = inSection(1); | |
77 | pattern = /abc/; | |
78 | string = 'xbc'; | |
79 | actualmatch = string.match(pattern); | |
80 | expectedmatch = null; | |
81 | addThis(); | |
82 | ||
83 | status = inSection(2); | |
84 | pattern = /abc/; | |
85 | string = 'axc'; | |
86 | actualmatch = string.match(pattern); | |
87 | expectedmatch = null; | |
88 | addThis(); | |
89 | ||
90 | status = inSection(3); | |
91 | pattern = /abc/; | |
92 | string = 'abx'; | |
93 | actualmatch = string.match(pattern); | |
94 | expectedmatch = null; | |
95 | addThis(); | |
96 | ||
97 | status = inSection(4); | |
98 | pattern = /ab+bc/; | |
99 | string = 'abc'; | |
100 | actualmatch = string.match(pattern); | |
101 | expectedmatch = null; | |
102 | addThis(); | |
103 | ||
104 | status = inSection(5); | |
105 | pattern = /ab+bc/; | |
106 | string = 'abq'; | |
107 | actualmatch = string.match(pattern); | |
108 | expectedmatch = null; | |
109 | addThis(); | |
110 | ||
111 | status = inSection(6); | |
112 | pattern = /ab{1,}bc/; | |
113 | string = 'abq'; | |
114 | actualmatch = string.match(pattern); | |
115 | expectedmatch = null; | |
116 | addThis(); | |
117 | ||
118 | status = inSection(7); | |
119 | pattern = /ab{4,5}bc/; | |
120 | string = 'abbbbc'; | |
121 | actualmatch = string.match(pattern); | |
122 | expectedmatch = null; | |
123 | addThis(); | |
124 | ||
125 | status = inSection(8); | |
126 | pattern = /ab?bc/; | |
127 | string = 'abbbbc'; | |
128 | actualmatch = string.match(pattern); | |
129 | expectedmatch = null; | |
130 | addThis(); | |
131 | ||
132 | status = inSection(9); | |
133 | pattern = /^abc$/; | |
134 | string = 'abcc'; | |
135 | actualmatch = string.match(pattern); | |
136 | expectedmatch = null; | |
137 | addThis(); | |
138 | ||
139 | status = inSection(10); | |
140 | pattern = /^abc$/; | |
141 | string = 'aabc'; | |
142 | actualmatch = string.match(pattern); | |
143 | expectedmatch = null; | |
144 | addThis(); | |
145 | ||
146 | status = inSection(11); | |
147 | pattern = /abc$/; | |
148 | string = 'aabcd'; | |
149 | actualmatch = string.match(pattern); | |
150 | expectedmatch = null; | |
151 | addThis(); | |
152 | ||
153 | status = inSection(12); | |
154 | pattern = /a.*c/; | |
155 | string = 'axyzd'; | |
156 | actualmatch = string.match(pattern); | |
157 | expectedmatch = null; | |
158 | addThis(); | |
159 | ||
160 | status = inSection(13); | |
161 | pattern = /a[bc]d/; | |
162 | string = 'abc'; | |
163 | actualmatch = string.match(pattern); | |
164 | expectedmatch = null; | |
165 | addThis(); | |
166 | ||
167 | status = inSection(14); | |
168 | pattern = /a[b-d]e/; | |
169 | string = 'abd'; | |
170 | actualmatch = string.match(pattern); | |
171 | expectedmatch = null; | |
172 | addThis(); | |
173 | ||
174 | status = inSection(15); | |
175 | pattern = /a[^bc]d/; | |
176 | string = 'abd'; | |
177 | actualmatch = string.match(pattern); | |
178 | expectedmatch = null; | |
179 | addThis(); | |
180 | ||
181 | status = inSection(16); | |
182 | pattern = /a[^-b]c/; | |
183 | string = 'a-c'; | |
184 | actualmatch = string.match(pattern); | |
185 | expectedmatch = null; | |
186 | addThis(); | |
187 | ||
188 | status = inSection(17); | |
189 | pattern = /a[^]b]c/; | |
190 | string = 'a]c'; | |
191 | actualmatch = string.match(pattern); | |
192 | expectedmatch = null; | |
193 | addThis(); | |
194 | ||
195 | status = inSection(18); | |
196 | pattern = /\by\b/; | |
197 | string = 'xy'; | |
198 | actualmatch = string.match(pattern); | |
199 | expectedmatch = null; | |
200 | addThis(); | |
201 | ||
202 | status = inSection(19); | |
203 | pattern = /\by\b/; | |
204 | string = 'yz'; | |
205 | actualmatch = string.match(pattern); | |
206 | expectedmatch = null; | |
207 | addThis(); | |
208 | ||
209 | status = inSection(20); | |
210 | pattern = /\by\b/; | |
211 | string = 'xyz'; | |
212 | actualmatch = string.match(pattern); | |
213 | expectedmatch = null; | |
214 | addThis(); | |
215 | ||
216 | status = inSection(21); | |
217 | pattern = /\Ba\B/; | |
218 | string = 'a-'; | |
219 | actualmatch = string.match(pattern); | |
220 | expectedmatch = null; | |
221 | addThis(); | |
222 | ||
223 | status = inSection(22); | |
224 | pattern = /\Ba\B/; | |
225 | string = '-a'; | |
226 | actualmatch = string.match(pattern); | |
227 | expectedmatch = null; | |
228 | addThis(); | |
229 | ||
230 | status = inSection(23); | |
231 | pattern = /\Ba\B/; | |
232 | string = '-a-'; | |
233 | actualmatch = string.match(pattern); | |
234 | expectedmatch = null; | |
235 | addThis(); | |
236 | ||
237 | status = inSection(24); | |
238 | pattern = /\w/; | |
239 | string = '-'; | |
240 | actualmatch = string.match(pattern); | |
241 | expectedmatch = null; | |
242 | addThis(); | |
243 | ||
244 | status = inSection(25); | |
245 | pattern = /\W/; | |
246 | string = 'a'; | |
247 | actualmatch = string.match(pattern); | |
248 | expectedmatch = null; | |
249 | addThis(); | |
250 | ||
251 | status = inSection(26); | |
252 | pattern = /a\sb/; | |
253 | string = 'a-b'; | |
254 | actualmatch = string.match(pattern); | |
255 | expectedmatch = null; | |
256 | addThis(); | |
257 | ||
258 | status = inSection(27); | |
259 | pattern = /\d/; | |
260 | string = '-'; | |
261 | actualmatch = string.match(pattern); | |
262 | expectedmatch = null; | |
263 | addThis(); | |
264 | ||
265 | status = inSection(28); | |
266 | pattern = /\D/; | |
267 | string = '1'; | |
268 | actualmatch = string.match(pattern); | |
269 | expectedmatch = null; | |
270 | addThis(); | |
271 | ||
272 | status = inSection(29); | |
273 | pattern = /[\w]/; | |
274 | string = '-'; | |
275 | actualmatch = string.match(pattern); | |
276 | expectedmatch = null; | |
277 | addThis(); | |
278 | ||
279 | status = inSection(30); | |
280 | pattern = /[\W]/; | |
281 | string = 'a'; | |
282 | actualmatch = string.match(pattern); | |
283 | expectedmatch = null; | |
284 | addThis(); | |
285 | ||
286 | status = inSection(31); | |
287 | pattern = /a[\s]b/; | |
288 | string = 'a-b'; | |
289 | actualmatch = string.match(pattern); | |
290 | expectedmatch = null; | |
291 | addThis(); | |
292 | ||
293 | status = inSection(32); | |
294 | pattern = /[\d]/; | |
295 | string = '-'; | |
296 | actualmatch = string.match(pattern); | |
297 | expectedmatch = null; | |
298 | addThis(); | |
299 | ||
300 | status = inSection(33); | |
301 | pattern = /[\D]/; | |
302 | string = '1'; | |
303 | actualmatch = string.match(pattern); | |
304 | expectedmatch = null; | |
305 | addThis(); | |
306 | ||
307 | status = inSection(34); | |
308 | pattern = /$b/; | |
309 | string = 'b'; | |
310 | actualmatch = string.match(pattern); | |
311 | expectedmatch = null; | |
312 | addThis(); | |
313 | ||
314 | status = inSection(35); | |
315 | pattern = /^(ab|cd)e/; | |
316 | string = 'abcde'; | |
317 | actualmatch = string.match(pattern); | |
318 | expectedmatch = null; | |
319 | addThis(); | |
320 | ||
321 | status = inSection(36); | |
322 | pattern = /a[bcd]+dcdcde/; | |
323 | string = 'adcdcde'; | |
324 | actualmatch = string.match(pattern); | |
325 | expectedmatch = null; | |
326 | addThis(); | |
327 | ||
328 | status = inSection(37); | |
329 | pattern = /(bc+d$|ef*g.|h?i(j|k))/; | |
330 | string = 'effg'; | |
331 | actualmatch = string.match(pattern); | |
332 | expectedmatch = null; | |
333 | addThis(); | |
334 | ||
335 | status = inSection(38); | |
336 | pattern = /(bc+d$|ef*g.|h?i(j|k))/; | |
337 | string = 'bcdd'; | |
338 | actualmatch = string.match(pattern); | |
339 | expectedmatch = null; | |
340 | addThis(); | |
341 | ||
342 | status = inSection(39); | |
343 | pattern = /[k]/; | |
344 | string = 'ab'; | |
345 | actualmatch = string.match(pattern); | |
346 | expectedmatch = null; | |
347 | addThis(); | |
348 | ||
349 | // MODIFIED - ECMA has different rules for paren contents. | |
350 | status = inSection(40); | |
351 | pattern = /(a)|\1/; | |
352 | string = 'x'; | |
353 | actualmatch = string.match(pattern); | |
354 | //expectedmatch = null; | |
355 | expectedmatch = Array("", undefined); | |
356 | addThis(); | |
357 | ||
358 | // MODIFIED - ECMA has different rules for paren contents. | |
359 | status = inSection(41); | |
360 | pattern = /((\3|b)\2(a)x)+/; | |
361 | string = 'aaxabxbaxbbx'; | |
362 | actualmatch = string.match(pattern); | |
363 | //expectedmatch = null; | |
364 | expectedmatch = Array("ax", "ax", "", "a"); | |
365 | addThis(); | |
366 | ||
367 | status = inSection(42); | |
368 | pattern = /abc/i; | |
369 | string = 'XBC'; | |
370 | actualmatch = string.match(pattern); | |
371 | expectedmatch = null; | |
372 | addThis(); | |
373 | ||
374 | status = inSection(43); | |
375 | pattern = /abc/i; | |
376 | string = 'AXC'; | |
377 | actualmatch = string.match(pattern); | |
378 | expectedmatch = null; | |
379 | addThis(); | |
380 | ||
381 | status = inSection(44); | |
382 | pattern = /abc/i; | |
383 | string = 'ABX'; | |
384 | actualmatch = string.match(pattern); | |
385 | expectedmatch = null; | |
386 | addThis(); | |
387 | ||
388 | status = inSection(45); | |
389 | pattern = /ab+bc/i; | |
390 | string = 'ABC'; | |
391 | actualmatch = string.match(pattern); | |
392 | expectedmatch = null; | |
393 | addThis(); | |
394 | ||
395 | status = inSection(46); | |
396 | pattern = /ab+bc/i; | |
397 | string = 'ABQ'; | |
398 | actualmatch = string.match(pattern); | |
399 | expectedmatch = null; | |
400 | addThis(); | |
401 | ||
402 | status = inSection(47); | |
403 | pattern = /ab{1,}bc/i; | |
404 | string = 'ABQ'; | |
405 | actualmatch = string.match(pattern); | |
406 | expectedmatch = null; | |
407 | addThis(); | |
408 | ||
409 | status = inSection(48); | |
410 | pattern = /ab{4,5}?bc/i; | |
411 | string = 'ABBBBC'; | |
412 | actualmatch = string.match(pattern); | |
413 | expectedmatch = null; | |
414 | addThis(); | |
415 | ||
416 | status = inSection(49); | |
417 | pattern = /ab??bc/i; | |
418 | string = 'ABBBBC'; | |
419 | actualmatch = string.match(pattern); | |
420 | expectedmatch = null; | |
421 | addThis(); | |
422 | ||
423 | status = inSection(50); | |
424 | pattern = /^abc$/i; | |
425 | string = 'ABCC'; | |
426 | actualmatch = string.match(pattern); | |
427 | expectedmatch = null; | |
428 | addThis(); | |
429 | ||
430 | status = inSection(51); | |
431 | pattern = /^abc$/i; | |
432 | string = 'AABC'; | |
433 | actualmatch = string.match(pattern); | |
434 | expectedmatch = null; | |
435 | addThis(); | |
436 | ||
437 | status = inSection(52); | |
438 | pattern = /a.*c/i; | |
439 | string = 'AXYZD'; | |
440 | actualmatch = string.match(pattern); | |
441 | expectedmatch = null; | |
442 | addThis(); | |
443 | ||
444 | status = inSection(53); | |
445 | pattern = /a[bc]d/i; | |
446 | string = 'ABC'; | |
447 | actualmatch = string.match(pattern); | |
448 | expectedmatch = null; | |
449 | addThis(); | |
450 | ||
451 | status = inSection(54); | |
452 | pattern = /a[b-d]e/i; | |
453 | string = 'ABD'; | |
454 | actualmatch = string.match(pattern); | |
455 | expectedmatch = null; | |
456 | addThis(); | |
457 | ||
458 | status = inSection(55); | |
459 | pattern = /a[^bc]d/i; | |
460 | string = 'ABD'; | |
461 | actualmatch = string.match(pattern); | |
462 | expectedmatch = null; | |
463 | addThis(); | |
464 | ||
465 | status = inSection(56); | |
466 | pattern = /a[^-b]c/i; | |
467 | string = 'A-C'; | |
468 | actualmatch = string.match(pattern); | |
469 | expectedmatch = null; | |
470 | addThis(); | |
471 | ||
472 | status = inSection(57); | |
473 | pattern = /a[^]b]c/i; | |
474 | string = 'A]C'; | |
475 | actualmatch = string.match(pattern); | |
476 | expectedmatch = null; | |
477 | addThis(); | |
478 | ||
479 | status = inSection(58); | |
480 | pattern = /$b/i; | |
481 | string = 'B'; | |
482 | actualmatch = string.match(pattern); | |
483 | expectedmatch = null; | |
484 | addThis(); | |
485 | ||
486 | status = inSection(59); | |
487 | pattern = /^(ab|cd)e/i; | |
488 | string = 'ABCDE'; | |
489 | actualmatch = string.match(pattern); | |
490 | expectedmatch = null; | |
491 | addThis(); | |
492 | ||
493 | status = inSection(60); | |
494 | pattern = /a[bcd]+dcdcde/i; | |
495 | string = 'ADCDCDE'; | |
496 | actualmatch = string.match(pattern); | |
497 | expectedmatch = null; | |
498 | addThis(); | |
499 | ||
500 | status = inSection(61); | |
501 | pattern = /(bc+d$|ef*g.|h?i(j|k))/i; | |
502 | string = 'EFFG'; | |
503 | actualmatch = string.match(pattern); | |
504 | expectedmatch = null; | |
505 | addThis(); | |
506 | ||
507 | status = inSection(62); | |
508 | pattern = /(bc+d$|ef*g.|h?i(j|k))/i; | |
509 | string = 'BCDD'; | |
510 | actualmatch = string.match(pattern); | |
511 | expectedmatch = null; | |
512 | addThis(); | |
513 | ||
514 | status = inSection(63); | |
515 | pattern = /[k]/i; | |
516 | string = 'AB'; | |
517 | actualmatch = string.match(pattern); | |
518 | expectedmatch = null; | |
519 | addThis(); | |
520 | ||
521 | status = inSection(64); | |
522 | pattern = /^(a\1?){4}$/; | |
523 | string = 'aaaaaaaaa'; | |
524 | actualmatch = string.match(pattern); | |
525 | expectedmatch = null; | |
526 | addThis(); | |
527 | ||
528 | status = inSection(65); | |
529 | pattern = /^(a\1?){4}$/; | |
530 | string = 'aaaaaaaaaaa'; | |
531 | actualmatch = string.match(pattern); | |
532 | expectedmatch = null; | |
533 | addThis(); | |
534 | ||
535 | /* ECMA doesn't support (?( | |
536 | status = inSection(66); | |
537 | pattern = /^(a(?(1)\1)){4}$/; | |
538 | string = 'aaaaaaaaa'; | |
539 | actualmatch = string.match(pattern); | |
540 | expectedmatch = null; | |
541 | addThis(); | |
542 | ||
543 | status = inSection(67); | |
544 | pattern = /^(a(?(1)\1)){4}$/; | |
545 | string = 'aaaaaaaaaaa'; | |
546 | actualmatch = string.match(pattern); | |
547 | expectedmatch = null; | |
548 | addThis(); | |
549 | */ | |
550 | ||
551 | /* ECMA doesn't support (?< | |
552 | status = inSection(68); | |
553 | pattern = /(?<=a)b/; | |
554 | string = 'cb'; | |
555 | actualmatch = string.match(pattern); | |
556 | expectedmatch = null; | |
557 | addThis(); | |
558 | ||
559 | status = inSection(69); | |
560 | pattern = /(?<=a)b/; | |
561 | string = 'b'; | |
562 | actualmatch = string.match(pattern); | |
563 | expectedmatch = null; | |
564 | addThis(); | |
565 | ||
566 | status = inSection(70); | |
567 | pattern = /(?<!c)b/; | |
568 | string = 'cb'; | |
569 | actualmatch = string.match(pattern); | |
570 | expectedmatch = null; | |
571 | addThis(); | |
572 | */ | |
573 | ||
574 | /* ECMA doesn't support (?(condition) | |
575 | status = inSection(71); | |
576 | pattern = /(?:(?i)a)b/; | |
577 | string = 'aB'; | |
578 | actualmatch = string.match(pattern); | |
579 | expectedmatch = null; | |
580 | addThis(); | |
581 | ||
582 | status = inSection(72); | |
583 | pattern = /((?i)a)b/; | |
584 | string = 'aB'; | |
585 | actualmatch = string.match(pattern); | |
586 | expectedmatch = null; | |
587 | addThis(); | |
588 | ||
589 | status = inSection(73); | |
590 | pattern = /(?i:a)b/; | |
591 | string = 'aB'; | |
592 | actualmatch = string.match(pattern); | |
593 | expectedmatch = null; | |
594 | addThis(); | |
595 | ||
596 | status = inSection(74); | |
597 | pattern = /((?i:a))b/; | |
598 | string = 'aB'; | |
599 | actualmatch = string.match(pattern); | |
600 | expectedmatch = null; | |
601 | addThis(); | |
602 | ||
603 | status = inSection(75); | |
604 | pattern = /(?:(?-i)a)b/i; | |
605 | string = 'Ab'; | |
606 | actualmatch = string.match(pattern); | |
607 | expectedmatch = null; | |
608 | addThis(); | |
609 | ||
610 | status = inSection(76); | |
611 | pattern = /((?-i)a)b/i; | |
612 | string = 'Ab'; | |
613 | actualmatch = string.match(pattern); | |
614 | expectedmatch = null; | |
615 | addThis(); | |
616 | ||
617 | status = inSection(77); | |
618 | pattern = /(?:(?-i)a)b/i; | |
619 | string = 'AB'; | |
620 | actualmatch = string.match(pattern); | |
621 | expectedmatch = null; | |
622 | addThis(); | |
623 | ||
624 | status = inSection(78); | |
625 | pattern = /((?-i)a)b/i; | |
626 | string = 'AB'; | |
627 | actualmatch = string.match(pattern); | |
628 | expectedmatch = null; | |
629 | addThis(); | |
630 | ||
631 | status = inSection(79); | |
632 | pattern = /(?-i:a)b/i; | |
633 | string = 'Ab'; | |
634 | actualmatch = string.match(pattern); | |
635 | expectedmatch = null; | |
636 | addThis(); | |
637 | ||
638 | status = inSection(80); | |
639 | pattern = /((?-i:a))b/i; | |
640 | string = 'Ab'; | |
641 | actualmatch = string.match(pattern); | |
642 | expectedmatch = null; | |
643 | addThis(); | |
644 | ||
645 | status = inSection(81); | |
646 | pattern = /(?-i:a)b/i; | |
647 | string = 'AB'; | |
648 | actualmatch = string.match(pattern); | |
649 | expectedmatch = null; | |
650 | addThis(); | |
651 | ||
652 | status = inSection(82); | |
653 | pattern = /((?-i:a))b/i; | |
654 | string = 'AB'; | |
655 | actualmatch = string.match(pattern); | |
656 | expectedmatch = null; | |
657 | addThis(); | |
658 | ||
659 | status = inSection(83); | |
660 | pattern = /((?-i:a.))b/i; | |
661 | string = 'a\nB'; | |
662 | actualmatch = string.match(pattern); | |
663 | expectedmatch = null; | |
664 | addThis(); | |
665 | ||
666 | status = inSection(84); | |
667 | pattern = /((?s-i:a.))b/i; | |
668 | string = 'B\nB'; | |
669 | actualmatch = string.match(pattern); | |
670 | expectedmatch = null; | |
671 | addThis(); | |
672 | */ | |
673 | ||
674 | /* ECMA doesn't support (?< | |
675 | status = inSection(85); | |
676 | pattern = /(?<![cd])b/; | |
677 | string = 'dbcb'; | |
678 | actualmatch = string.match(pattern); | |
679 | expectedmatch = null; | |
680 | addThis(); | |
681 | ||
682 | status = inSection(86); | |
683 | pattern = /(?<!(c|d))b/; | |
684 | string = 'dbcb'; | |
685 | actualmatch = string.match(pattern); | |
686 | expectedmatch = null; | |
687 | addThis(); | |
688 | */ | |
689 | ||
690 | status = inSection(87); | |
691 | pattern = /^(?:a?b?)*$/; | |
692 | string = 'a--'; | |
693 | actualmatch = string.match(pattern); | |
694 | expectedmatch = null; | |
695 | addThis(); | |
696 | ||
697 | status = inSection(88); | |
698 | pattern = /^b/; | |
699 | string = 'a\nb\nc\n'; | |
700 | actualmatch = string.match(pattern); | |
701 | expectedmatch = null; | |
702 | addThis(); | |
703 | ||
704 | status = inSection(89); | |
705 | pattern = /()^b/; | |
706 | string = 'a\nb\nc\n'; | |
707 | actualmatch = string.match(pattern); | |
708 | expectedmatch = null; | |
709 | addThis(); | |
710 | ||
711 | /* ECMA doesn't support (?( | |
712 | status = inSection(90); | |
713 | pattern = /(?(1)a|b)/; | |
714 | string = 'a'; | |
715 | actualmatch = string.match(pattern); | |
716 | expectedmatch = null; | |
717 | addThis(); | |
718 | ||
719 | status = inSection(91); | |
720 | pattern = /(x)?(?(1)a|b)/; | |
721 | string = 'a'; | |
722 | actualmatch = string.match(pattern); | |
723 | expectedmatch = null; | |
724 | addThis(); | |
725 | ||
726 | status = inSection(92); | |
727 | pattern = /()(?(1)b|a)/; | |
728 | string = 'a'; | |
729 | actualmatch = string.match(pattern); | |
730 | expectedmatch = null; | |
731 | addThis(); | |
732 | ||
733 | status = inSection(93); | |
734 | pattern = /^(\()?blah(?(1)(\)))$/; | |
735 | string = 'blah)'; | |
736 | actualmatch = string.match(pattern); | |
737 | expectedmatch = null; | |
738 | addThis(); | |
739 | ||
740 | status = inSection(94); | |
741 | pattern = /^(\()?blah(?(1)(\)))$/; | |
742 | string = '(blah'; | |
743 | actualmatch = string.match(pattern); | |
744 | expectedmatch = null; | |
745 | addThis(); | |
746 | ||
747 | status = inSection(95); | |
748 | pattern = /^(\(+)?blah(?(1)(\)))$/; | |
749 | string = 'blah)'; | |
750 | actualmatch = string.match(pattern); | |
751 | expectedmatch = null; | |
752 | addThis(); | |
753 | ||
754 | status = inSection(96); | |
755 | pattern = /^(\(+)?blah(?(1)(\)))$/; | |
756 | string = '(blah'; | |
757 | actualmatch = string.match(pattern); | |
758 | expectedmatch = null; | |
759 | addThis(); | |
760 | ||
761 | status = inSection(97); | |
762 | pattern = /(?(?{0})a|b)/; | |
763 | string = 'a'; | |
764 | actualmatch = string.match(pattern); | |
765 | expectedmatch = null; | |
766 | addThis(); | |
767 | ||
768 | status = inSection(98); | |
769 | pattern = /(?(?{1})b|a)/; | |
770 | string = 'a'; | |
771 | actualmatch = string.match(pattern); | |
772 | expectedmatch = null; | |
773 | addThis(); | |
774 | ||
775 | status = inSection(99); | |
776 | pattern = /(?(?!a)a|b)/; | |
777 | string = 'a'; | |
778 | actualmatch = string.match(pattern); | |
779 | expectedmatch = null; | |
780 | addThis(); | |
781 | ||
782 | status = inSection(100); | |
783 | pattern = /(?(?=a)b|a)/; | |
784 | string = 'a'; | |
785 | actualmatch = string.match(pattern); | |
786 | expectedmatch = null; | |
787 | addThis(); | |
788 | */ | |
789 | ||
790 | status = inSection(101); | |
791 | pattern = /^(?=(a+?))\1ab/; | |
792 | string = 'aaab'; | |
793 | actualmatch = string.match(pattern); | |
794 | expectedmatch = null; | |
795 | addThis(); | |
796 | ||
797 | status = inSection(102); | |
798 | pattern = /^(?=(a+?))\1ab/; | |
799 | string = 'aaab'; | |
800 | actualmatch = string.match(pattern); | |
801 | expectedmatch = null; | |
802 | addThis(); | |
803 | ||
804 | status = inSection(103); | |
805 | pattern = /([\w:]+::)?(\w+)$/; | |
806 | string = 'abcd:'; | |
807 | actualmatch = string.match(pattern); | |
808 | expectedmatch = null; | |
809 | addThis(); | |
810 | ||
811 | status = inSection(104); | |
812 | pattern = /([\w:]+::)?(\w+)$/; | |
813 | string = 'abcd:'; | |
814 | actualmatch = string.match(pattern); | |
815 | expectedmatch = null; | |
816 | addThis(); | |
817 | ||
818 | status = inSection(105); | |
819 | pattern = /(>a+)ab/; | |
820 | string = 'aaab'; | |
821 | actualmatch = string.match(pattern); | |
822 | expectedmatch = null; | |
823 | addThis(); | |
824 | ||
825 | status = inSection(106); | |
826 | pattern = /a\Z/; | |
827 | string = 'a\nb\n'; | |
828 | actualmatch = string.match(pattern); | |
829 | expectedmatch = null; | |
830 | addThis(); | |
831 | ||
832 | status = inSection(107); | |
833 | pattern = /a\z/; | |
834 | string = 'a\nb\n'; | |
835 | actualmatch = string.match(pattern); | |
836 | expectedmatch = null; | |
837 | addThis(); | |
838 | ||
839 | status = inSection(108); | |
840 | pattern = /a$/; | |
841 | string = 'a\nb\n'; | |
842 | actualmatch = string.match(pattern); | |
843 | expectedmatch = null; | |
844 | addThis(); | |
845 | ||
846 | status = inSection(109); | |
847 | pattern = /a\z/; | |
848 | string = 'b\na\n'; | |
849 | actualmatch = string.match(pattern); | |
850 | expectedmatch = null; | |
851 | addThis(); | |
852 | ||
853 | status = inSection(110); | |
854 | pattern = /a\z/m; | |
855 | string = 'a\nb\n'; | |
856 | actualmatch = string.match(pattern); | |
857 | expectedmatch = null; | |
858 | addThis(); | |
859 | ||
860 | status = inSection(111); | |
861 | pattern = /a\z/m; | |
862 | string = 'b\na\n'; | |
863 | actualmatch = string.match(pattern); | |
864 | expectedmatch = null; | |
865 | addThis(); | |
866 | ||
867 | status = inSection(112); | |
868 | pattern = /aa\Z/; | |
869 | string = 'aa\nb\n'; | |
870 | actualmatch = string.match(pattern); | |
871 | expectedmatch = null; | |
872 | addThis(); | |
873 | ||
874 | status = inSection(113); | |
875 | pattern = /aa\z/; | |
876 | string = 'aa\nb\n'; | |
877 | actualmatch = string.match(pattern); | |
878 | expectedmatch = null; | |
879 | addThis(); | |
880 | ||
881 | status = inSection(114); | |
882 | pattern = /aa$/; | |
883 | string = 'aa\nb\n'; | |
884 | actualmatch = string.match(pattern); | |
885 | expectedmatch = null; | |
886 | addThis(); | |
887 | ||
888 | status = inSection(115); | |
889 | pattern = /aa\z/; | |
890 | string = 'b\naa\n'; | |
891 | actualmatch = string.match(pattern); | |
892 | expectedmatch = null; | |
893 | addThis(); | |
894 | ||
895 | status = inSection(116); | |
896 | pattern = /aa\z/m; | |
897 | string = 'aa\nb\n'; | |
898 | actualmatch = string.match(pattern); | |
899 | expectedmatch = null; | |
900 | addThis(); | |
901 | ||
902 | status = inSection(117); | |
903 | pattern = /aa\z/m; | |
904 | string = 'b\naa\n'; | |
905 | actualmatch = string.match(pattern); | |
906 | expectedmatch = null; | |
907 | addThis(); | |
908 | ||
909 | status = inSection(118); | |
910 | pattern = /aa\Z/; | |
911 | string = 'ac\nb\n'; | |
912 | actualmatch = string.match(pattern); | |
913 | expectedmatch = null; | |
914 | addThis(); | |
915 | ||
916 | status = inSection(119); | |
917 | pattern = /aa\z/; | |
918 | string = 'ac\nb\n'; | |
919 | actualmatch = string.match(pattern); | |
920 | expectedmatch = null; | |
921 | addThis(); | |
922 | ||
923 | status = inSection(120); | |
924 | pattern = /aa$/; | |
925 | string = 'ac\nb\n'; | |
926 | actualmatch = string.match(pattern); | |
927 | expectedmatch = null; | |
928 | addThis(); | |
929 | ||
930 | status = inSection(121); | |
931 | pattern = /aa\Z/; | |
932 | string = 'b\nac\n'; | |
933 | actualmatch = string.match(pattern); | |
934 | expectedmatch = null; | |
935 | addThis(); | |
936 | ||
937 | status = inSection(122); | |
938 | pattern = /aa\z/; | |
939 | string = 'b\nac\n'; | |
940 | actualmatch = string.match(pattern); | |
941 | expectedmatch = null; | |
942 | addThis(); | |
943 | ||
944 | status = inSection(123); | |
945 | pattern = /aa$/; | |
946 | string = 'b\nac\n'; | |
947 | actualmatch = string.match(pattern); | |
948 | expectedmatch = null; | |
949 | addThis(); | |
950 | ||
951 | status = inSection(124); | |
952 | pattern = /aa\Z/; | |
953 | string = 'b\nac'; | |
954 | actualmatch = string.match(pattern); | |
955 | expectedmatch = null; | |
956 | addThis(); | |
957 | ||
958 | status = inSection(125); | |
959 | pattern = /aa\z/; | |
960 | string = 'b\nac'; | |
961 | actualmatch = string.match(pattern); | |
962 | expectedmatch = null; | |
963 | addThis(); | |
964 | ||
965 | status = inSection(126); | |
966 | pattern = /aa$/; | |
967 | string = 'b\nac'; | |
968 | actualmatch = string.match(pattern); | |
969 | expectedmatch = null; | |
970 | addThis(); | |
971 | ||
972 | status = inSection(127); | |
973 | pattern = /aa\Z/m; | |
974 | string = 'ac\nb\n'; | |
975 | actualmatch = string.match(pattern); | |
976 | expectedmatch = null; | |
977 | addThis(); | |
978 | ||
979 | status = inSection(128); | |
980 | pattern = /aa\z/m; | |
981 | string = 'ac\nb\n'; | |
982 | actualmatch = string.match(pattern); | |
983 | expectedmatch = null; | |
984 | addThis(); | |
985 | ||
986 | status = inSection(129); | |
987 | pattern = /aa$/m; | |
988 | string = 'ac\nb\n'; | |
989 | actualmatch = string.match(pattern); | |
990 | expectedmatch = null; | |
991 | addThis(); | |
992 | ||
993 | status = inSection(130); | |
994 | pattern = /aa\Z/m; | |
995 | string = 'b\nac\n'; | |
996 | actualmatch = string.match(pattern); | |
997 | expectedmatch = null; | |
998 | addThis(); | |
999 | ||
1000 | status = inSection(131); | |
1001 | pattern = /aa\z/m; | |
1002 | string = 'b\nac\n'; | |
1003 | actualmatch = string.match(pattern); | |
1004 | expectedmatch = null; | |
1005 | addThis(); | |
1006 | ||
1007 | status = inSection(132); | |
1008 | pattern = /aa$/m; | |
1009 | string = 'b\nac\n'; | |
1010 | actualmatch = string.match(pattern); | |
1011 | expectedmatch = null; | |
1012 | addThis(); | |
1013 | ||
1014 | status = inSection(133); | |
1015 | pattern = /aa\Z/m; | |
1016 | string = 'b\nac'; | |
1017 | actualmatch = string.match(pattern); | |
1018 | expectedmatch = null; | |
1019 | addThis(); | |
1020 | ||
1021 | status = inSection(134); | |
1022 | pattern = /aa\z/m; | |
1023 | string = 'b\nac'; | |
1024 | actualmatch = string.match(pattern); | |
1025 | expectedmatch = null; | |
1026 | addThis(); | |
1027 | ||
1028 | status = inSection(135); | |
1029 | pattern = /aa$/m; | |
1030 | string = 'b\nac'; | |
1031 | actualmatch = string.match(pattern); | |
1032 | expectedmatch = null; | |
1033 | addThis(); | |
1034 | ||
1035 | status = inSection(136); | |
1036 | pattern = /aa\Z/; | |
1037 | string = 'ca\nb\n'; | |
1038 | actualmatch = string.match(pattern); | |
1039 | expectedmatch = null; | |
1040 | addThis(); | |
1041 | ||
1042 | status = inSection(137); | |
1043 | pattern = /aa\z/; | |
1044 | string = 'ca\nb\n'; | |
1045 | actualmatch = string.match(pattern); | |
1046 | expectedmatch = null; | |
1047 | addThis(); | |
1048 | ||
1049 | status = inSection(138); | |
1050 | pattern = /aa$/; | |
1051 | string = 'ca\nb\n'; | |
1052 | actualmatch = string.match(pattern); | |
1053 | expectedmatch = null; | |
1054 | addThis(); | |
1055 | ||
1056 | status = inSection(139); | |
1057 | pattern = /aa\Z/; | |
1058 | string = 'b\nca\n'; | |
1059 | actualmatch = string.match(pattern); | |
1060 | expectedmatch = null; | |
1061 | addThis(); | |
1062 | ||
1063 | status = inSection(140); | |
1064 | pattern = /aa\z/; | |
1065 | string = 'b\nca\n'; | |
1066 | actualmatch = string.match(pattern); | |
1067 | expectedmatch = null; | |
1068 | addThis(); | |
1069 | ||
1070 | status = inSection(141); | |
1071 | pattern = /aa$/; | |
1072 | string = 'b\nca\n'; | |
1073 | actualmatch = string.match(pattern); | |
1074 | expectedmatch = null; | |
1075 | addThis(); | |
1076 | ||
1077 | status = inSection(142); | |
1078 | pattern = /aa\Z/; | |
1079 | string = 'b\nca'; | |
1080 | actualmatch = string.match(pattern); | |
1081 | expectedmatch = null; | |
1082 | addThis(); | |
1083 | ||
1084 | status = inSection(143); | |
1085 | pattern = /aa\z/; | |
1086 | string = 'b\nca'; | |
1087 | actualmatch = string.match(pattern); | |
1088 | expectedmatch = null; | |
1089 | addThis(); | |
1090 | ||
1091 | status = inSection(144); | |
1092 | pattern = /aa$/; | |
1093 | string = 'b\nca'; | |
1094 | actualmatch = string.match(pattern); | |
1095 | expectedmatch = null; | |
1096 | addThis(); | |
1097 | ||
1098 | status = inSection(145); | |
1099 | pattern = /aa\Z/m; | |
1100 | string = 'ca\nb\n'; | |
1101 | actualmatch = string.match(pattern); | |
1102 | expectedmatch = null; | |
1103 | addThis(); | |
1104 | ||
1105 | status = inSection(146); | |
1106 | pattern = /aa\z/m; | |
1107 | string = 'ca\nb\n'; | |
1108 | actualmatch = string.match(pattern); | |
1109 | expectedmatch = null; | |
1110 | addThis(); | |
1111 | ||
1112 | status = inSection(147); | |
1113 | pattern = /aa$/m; | |
1114 | string = 'ca\nb\n'; | |
1115 | actualmatch = string.match(pattern); | |
1116 | expectedmatch = null; | |
1117 | addThis(); | |
1118 | ||
1119 | status = inSection(148); | |
1120 | pattern = /aa\Z/m; | |
1121 | string = 'b\nca\n'; | |
1122 | actualmatch = string.match(pattern); | |
1123 | expectedmatch = null; | |
1124 | addThis(); | |
1125 | ||
1126 | status = inSection(149); | |
1127 | pattern = /aa\z/m; | |
1128 | string = 'b\nca\n'; | |
1129 | actualmatch = string.match(pattern); | |
1130 | expectedmatch = null; | |
1131 | addThis(); | |
1132 | ||
1133 | status = inSection(150); | |
1134 | pattern = /aa$/m; | |
1135 | string = 'b\nca\n'; | |
1136 | actualmatch = string.match(pattern); | |
1137 | expectedmatch = null; | |
1138 | addThis(); | |
1139 | ||
1140 | status = inSection(151); | |
1141 | pattern = /aa\Z/m; | |
1142 | string = 'b\nca'; | |
1143 | actualmatch = string.match(pattern); | |
1144 | expectedmatch = null; | |
1145 | addThis(); | |
1146 | ||
1147 | status = inSection(152); | |
1148 | pattern = /aa\z/m; | |
1149 | string = 'b\nca'; | |
1150 | actualmatch = string.match(pattern); | |
1151 | expectedmatch = null; | |
1152 | addThis(); | |
1153 | ||
1154 | status = inSection(153); | |
1155 | pattern = /aa$/m; | |
1156 | string = 'b\nca'; | |
1157 | actualmatch = string.match(pattern); | |
1158 | expectedmatch = null; | |
1159 | addThis(); | |
1160 | ||
1161 | status = inSection(154); | |
1162 | pattern = /ab\Z/; | |
1163 | string = 'ab\nb\n'; | |
1164 | actualmatch = string.match(pattern); | |
1165 | expectedmatch = null; | |
1166 | addThis(); | |
1167 | ||
1168 | status = inSection(155); | |
1169 | pattern = /ab\z/; | |
1170 | string = 'ab\nb\n'; | |
1171 | actualmatch = string.match(pattern); | |
1172 | expectedmatch = null; | |
1173 | addThis(); | |
1174 | ||
1175 | status = inSection(156); | |
1176 | pattern = /ab$/; | |
1177 | string = 'ab\nb\n'; | |
1178 | actualmatch = string.match(pattern); | |
1179 | expectedmatch = null; | |
1180 | addThis(); | |
1181 | ||
1182 | status = inSection(157); | |
1183 | pattern = /ab\z/; | |
1184 | string = 'b\nab\n'; | |
1185 | actualmatch = string.match(pattern); | |
1186 | expectedmatch = null; | |
1187 | addThis(); | |
1188 | ||
1189 | status = inSection(158); | |
1190 | pattern = /ab\z/m; | |
1191 | string = 'ab\nb\n'; | |
1192 | actualmatch = string.match(pattern); | |
1193 | expectedmatch = null; | |
1194 | addThis(); | |
1195 | ||
1196 | status = inSection(159); | |
1197 | pattern = /ab\z/m; | |
1198 | string = 'b\nab\n'; | |
1199 | actualmatch = string.match(pattern); | |
1200 | expectedmatch = null; | |
1201 | addThis(); | |
1202 | ||
1203 | status = inSection(160); | |
1204 | pattern = /ab\Z/; | |
1205 | string = 'ac\nb\n'; | |
1206 | actualmatch = string.match(pattern); | |
1207 | expectedmatch = null; | |
1208 | addThis(); | |
1209 | ||
1210 | status = inSection(161); | |
1211 | pattern = /ab\z/; | |
1212 | string = 'ac\nb\n'; | |
1213 | actualmatch = string.match(pattern); | |
1214 | expectedmatch = null; | |
1215 | addThis(); | |
1216 | ||
1217 | status = inSection(162); | |
1218 | pattern = /ab$/; | |
1219 | string = 'ac\nb\n'; | |
1220 | actualmatch = string.match(pattern); | |
1221 | expectedmatch = null; | |
1222 | addThis(); | |
1223 | ||
1224 | status = inSection(163); | |
1225 | pattern = /ab\Z/; | |
1226 | string = 'b\nac\n'; | |
1227 | actualmatch = string.match(pattern); | |
1228 | expectedmatch = null; | |
1229 | addThis(); | |
1230 | ||
1231 | status = inSection(164); | |
1232 | pattern = /ab\z/; | |
1233 | string = 'b\nac\n'; | |
1234 | actualmatch = string.match(pattern); | |
1235 | expectedmatch = null; | |
1236 | addThis(); | |
1237 | ||
1238 | status = inSection(165); | |
1239 | pattern = /ab$/; | |
1240 | string = 'b\nac\n'; | |
1241 | actualmatch = string.match(pattern); | |
1242 | expectedmatch = null; | |
1243 | addThis(); | |
1244 | ||
1245 | status = inSection(166); | |
1246 | pattern = /ab\Z/; | |
1247 | string = 'b\nac'; | |
1248 | actualmatch = string.match(pattern); | |
1249 | expectedmatch = null; | |
1250 | addThis(); | |
1251 | ||
1252 | status = inSection(167); | |
1253 | pattern = /ab\z/; | |
1254 | string = 'b\nac'; | |
1255 | actualmatch = string.match(pattern); | |
1256 | expectedmatch = null; | |
1257 | addThis(); | |
1258 | ||
1259 | status = inSection(168); | |
1260 | pattern = /ab$/; | |
1261 | string = 'b\nac'; | |
1262 | actualmatch = string.match(pattern); | |
1263 | expectedmatch = null; | |
1264 | addThis(); | |
1265 | ||
1266 | status = inSection(169); | |
1267 | pattern = /ab\Z/m; | |
1268 | string = 'ac\nb\n'; | |
1269 | actualmatch = string.match(pattern); | |
1270 | expectedmatch = null; | |
1271 | addThis(); | |
1272 | ||
1273 | status = inSection(170); | |
1274 | pattern = /ab\z/m; | |
1275 | string = 'ac\nb\n'; | |
1276 | actualmatch = string.match(pattern); | |
1277 | expectedmatch = null; | |
1278 | addThis(); | |
1279 | ||
1280 | status = inSection(171); | |
1281 | pattern = /ab$/m; | |
1282 | string = 'ac\nb\n'; | |
1283 | actualmatch = string.match(pattern); | |
1284 | expectedmatch = null; | |
1285 | addThis(); | |
1286 | ||
1287 | status = inSection(172); | |
1288 | pattern = /ab\Z/m; | |
1289 | string = 'b\nac\n'; | |
1290 | actualmatch = string.match(pattern); | |
1291 | expectedmatch = null; | |
1292 | addThis(); | |
1293 | ||
1294 | status = inSection(173); | |
1295 | pattern = /ab\z/m; | |
1296 | string = 'b\nac\n'; | |
1297 | actualmatch = string.match(pattern); | |
1298 | expectedmatch = null; | |
1299 | addThis(); | |
1300 | ||
1301 | status = inSection(174); | |
1302 | pattern = /ab$/m; | |
1303 | string = 'b\nac\n'; | |
1304 | actualmatch = string.match(pattern); | |
1305 | expectedmatch = null; | |
1306 | addThis(); | |
1307 | ||
1308 | status = inSection(175); | |
1309 | pattern = /ab\Z/m; | |
1310 | string = 'b\nac'; | |
1311 | actualmatch = string.match(pattern); | |
1312 | expectedmatch = null; | |
1313 | addThis(); | |
1314 | ||
1315 | status = inSection(176); | |
1316 | pattern = /ab\z/m; | |
1317 | string = 'b\nac'; | |
1318 | actualmatch = string.match(pattern); | |
1319 | expectedmatch = null; | |
1320 | addThis(); | |
1321 | ||
1322 | status = inSection(177); | |
1323 | pattern = /ab$/m; | |
1324 | string = 'b\nac'; | |
1325 | actualmatch = string.match(pattern); | |
1326 | expectedmatch = null; | |
1327 | addThis(); | |
1328 | ||
1329 | status = inSection(178); | |
1330 | pattern = /ab\Z/; | |
1331 | string = 'ca\nb\n'; | |
1332 | actualmatch = string.match(pattern); | |
1333 | expectedmatch = null; | |
1334 | addThis(); | |
1335 | ||
1336 | status = inSection(179); | |
1337 | pattern = /ab\z/; | |
1338 | string = 'ca\nb\n'; | |
1339 | actualmatch = string.match(pattern); | |
1340 | expectedmatch = null; | |
1341 | addThis(); | |
1342 | ||
1343 | status = inSection(180); | |
1344 | pattern = /ab$/; | |
1345 | string = 'ca\nb\n'; | |
1346 | actualmatch = string.match(pattern); | |
1347 | expectedmatch = null; | |
1348 | addThis(); | |
1349 | ||
1350 | status = inSection(181); | |
1351 | pattern = /ab\Z/; | |
1352 | string = 'b\nca\n'; | |
1353 | actualmatch = string.match(pattern); | |
1354 | expectedmatch = null; | |
1355 | addThis(); | |
1356 | ||
1357 | status = inSection(182); | |
1358 | pattern = /ab\z/; | |
1359 | string = 'b\nca\n'; | |
1360 | actualmatch = string.match(pattern); | |
1361 | expectedmatch = null; | |
1362 | addThis(); | |
1363 | ||
1364 | status = inSection(183); | |
1365 | pattern = /ab$/; | |
1366 | string = 'b\nca\n'; | |
1367 | actualmatch = string.match(pattern); | |
1368 | expectedmatch = null; | |
1369 | addThis(); | |
1370 | ||
1371 | status = inSection(184); | |
1372 | pattern = /ab\Z/; | |
1373 | string = 'b\nca'; | |
1374 | actualmatch = string.match(pattern); | |
1375 | expectedmatch = null; | |
1376 | addThis(); | |
1377 | ||
1378 | status = inSection(185); | |
1379 | pattern = /ab\z/; | |
1380 | string = 'b\nca'; | |
1381 | actualmatch = string.match(pattern); | |
1382 | expectedmatch = null; | |
1383 | addThis(); | |
1384 | ||
1385 | status = inSection(186); | |
1386 | pattern = /ab$/; | |
1387 | string = 'b\nca'; | |
1388 | actualmatch = string.match(pattern); | |
1389 | expectedmatch = null; | |
1390 | addThis(); | |
1391 | ||
1392 | status = inSection(187); | |
1393 | pattern = /ab\Z/m; | |
1394 | string = 'ca\nb\n'; | |
1395 | actualmatch = string.match(pattern); | |
1396 | expectedmatch = null; | |
1397 | addThis(); | |
1398 | ||
1399 | status = inSection(188); | |
1400 | pattern = /ab\z/m; | |
1401 | string = 'ca\nb\n'; | |
1402 | actualmatch = string.match(pattern); | |
1403 | expectedmatch = null; | |
1404 | addThis(); | |
1405 | ||
1406 | status = inSection(189); | |
1407 | pattern = /ab$/m; | |
1408 | string = 'ca\nb\n'; | |
1409 | actualmatch = string.match(pattern); | |
1410 | expectedmatch = null; | |
1411 | addThis(); | |
1412 | ||
1413 | status = inSection(190); | |
1414 | pattern = /ab\Z/m; | |
1415 | string = 'b\nca\n'; | |
1416 | actualmatch = string.match(pattern); | |
1417 | expectedmatch = null; | |
1418 | addThis(); | |
1419 | ||
1420 | status = inSection(191); | |
1421 | pattern = /ab\z/m; | |
1422 | string = 'b\nca\n'; | |
1423 | actualmatch = string.match(pattern); | |
1424 | expectedmatch = null; | |
1425 | addThis(); | |
1426 | ||
1427 | status = inSection(192); | |
1428 | pattern = /ab$/m; | |
1429 | string = 'b\nca\n'; | |
1430 | actualmatch = string.match(pattern); | |
1431 | expectedmatch = null; | |
1432 | addThis(); | |
1433 | ||
1434 | status = inSection(193); | |
1435 | pattern = /ab\Z/m; | |
1436 | string = 'b\nca'; | |
1437 | actualmatch = string.match(pattern); | |
1438 | expectedmatch = null; | |
1439 | addThis(); | |
1440 | ||
1441 | status = inSection(194); | |
1442 | pattern = /ab\z/m; | |
1443 | string = 'b\nca'; | |
1444 | actualmatch = string.match(pattern); | |
1445 | expectedmatch = null; | |
1446 | addThis(); | |
1447 | ||
1448 | status = inSection(195); | |
1449 | pattern = /ab$/m; | |
1450 | string = 'b\nca'; | |
1451 | actualmatch = string.match(pattern); | |
1452 | expectedmatch = null; | |
1453 | addThis(); | |
1454 | ||
1455 | status = inSection(196); | |
1456 | pattern = /abb\Z/; | |
1457 | string = 'abb\nb\n'; | |
1458 | actualmatch = string.match(pattern); | |
1459 | expectedmatch = null; | |
1460 | addThis(); | |
1461 | ||
1462 | status = inSection(197); | |
1463 | pattern = /abb\z/; | |
1464 | string = 'abb\nb\n'; | |
1465 | actualmatch = string.match(pattern); | |
1466 | expectedmatch = null; | |
1467 | addThis(); | |
1468 | ||
1469 | status = inSection(198); | |
1470 | pattern = /abb$/; | |
1471 | string = 'abb\nb\n'; | |
1472 | actualmatch = string.match(pattern); | |
1473 | expectedmatch = null; | |
1474 | addThis(); | |
1475 | ||
1476 | status = inSection(199); | |
1477 | pattern = /abb\z/; | |
1478 | string = 'b\nabb\n'; | |
1479 | actualmatch = string.match(pattern); | |
1480 | expectedmatch = null; | |
1481 | addThis(); | |
1482 | ||
1483 | status = inSection(200); | |
1484 | pattern = /abb\z/m; | |
1485 | string = 'abb\nb\n'; | |
1486 | actualmatch = string.match(pattern); | |
1487 | expectedmatch = null; | |
1488 | addThis(); | |
1489 | ||
1490 | status = inSection(201); | |
1491 | pattern = /abb\z/m; | |
1492 | string = 'b\nabb\n'; | |
1493 | actualmatch = string.match(pattern); | |
1494 | expectedmatch = null; | |
1495 | addThis(); | |
1496 | ||
1497 | status = inSection(202); | |
1498 | pattern = /abb\Z/; | |
1499 | string = 'ac\nb\n'; | |
1500 | actualmatch = string.match(pattern); | |
1501 | expectedmatch = null; | |
1502 | addThis(); | |
1503 | ||
1504 | status = inSection(203); | |
1505 | pattern = /abb\z/; | |
1506 | string = 'ac\nb\n'; | |
1507 | actualmatch = string.match(pattern); | |
1508 | expectedmatch = null; | |
1509 | addThis(); | |
1510 | ||
1511 | status = inSection(204); | |
1512 | pattern = /abb$/; | |
1513 | string = 'ac\nb\n'; | |
1514 | actualmatch = string.match(pattern); | |
1515 | expectedmatch = null; | |
1516 | addThis(); | |
1517 | ||
1518 | status = inSection(205); | |
1519 | pattern = /abb\Z/; | |
1520 | string = 'b\nac\n'; | |
1521 | actualmatch = string.match(pattern); | |
1522 | expectedmatch = null; | |
1523 | addThis(); | |
1524 | ||
1525 | status = inSection(206); | |
1526 | pattern = /abb\z/; | |
1527 | string = 'b\nac\n'; | |
1528 | actualmatch = string.match(pattern); | |
1529 | expectedmatch = null; | |
1530 | addThis(); | |
1531 | ||
1532 | status = inSection(207); | |
1533 | pattern = /abb$/; | |
1534 | string = 'b\nac\n'; | |
1535 | actualmatch = string.match(pattern); | |
1536 | expectedmatch = null; | |
1537 | addThis(); | |
1538 | ||
1539 | status = inSection(208); | |
1540 | pattern = /abb\Z/; | |
1541 | string = 'b\nac'; | |
1542 | actualmatch = string.match(pattern); | |
1543 | expectedmatch = null; | |
1544 | addThis(); | |
1545 | ||
1546 | status = inSection(209); | |
1547 | pattern = /abb\z/; | |
1548 | string = 'b\nac'; | |
1549 | actualmatch = string.match(pattern); | |
1550 | expectedmatch = null; | |
1551 | addThis(); | |
1552 | ||
1553 | status = inSection(210); | |
1554 | pattern = /abb$/; | |
1555 | string = 'b\nac'; | |
1556 | actualmatch = string.match(pattern); | |
1557 | expectedmatch = null; | |
1558 | addThis(); | |
1559 | ||
1560 | status = inSection(211); | |
1561 | pattern = /abb\Z/m; | |
1562 | string = 'ac\nb\n'; | |
1563 | actualmatch = string.match(pattern); | |
1564 | expectedmatch = null; | |
1565 | addThis(); | |
1566 | ||
1567 | status = inSection(212); | |
1568 | pattern = /abb\z/m; | |
1569 | string = 'ac\nb\n'; | |
1570 | actualmatch = string.match(pattern); | |
1571 | expectedmatch = null; | |
1572 | addThis(); | |
1573 | ||
1574 | status = inSection(213); | |
1575 | pattern = /abb$/m; | |
1576 | string = 'ac\nb\n'; | |
1577 | actualmatch = string.match(pattern); | |
1578 | expectedmatch = null; | |
1579 | addThis(); | |
1580 | ||
1581 | status = inSection(214); | |
1582 | pattern = /abb\Z/m; | |
1583 | string = 'b\nac\n'; | |
1584 | actualmatch = string.match(pattern); | |
1585 | expectedmatch = null; | |
1586 | addThis(); | |
1587 | ||
1588 | status = inSection(215); | |
1589 | pattern = /abb\z/m; | |
1590 | string = 'b\nac\n'; | |
1591 | actualmatch = string.match(pattern); | |
1592 | expectedmatch = null; | |
1593 | addThis(); | |
1594 | ||
1595 | status = inSection(216); | |
1596 | pattern = /abb$/m; | |
1597 | string = 'b\nac\n'; | |
1598 | actualmatch = string.match(pattern); | |
1599 | expectedmatch = null; | |
1600 | addThis(); | |
1601 | ||
1602 | status = inSection(217); | |
1603 | pattern = /abb\Z/m; | |
1604 | string = 'b\nac'; | |
1605 | actualmatch = string.match(pattern); | |
1606 | expectedmatch = null; | |
1607 | addThis(); | |
1608 | ||
1609 | status = inSection(218); | |
1610 | pattern = /abb\z/m; | |
1611 | string = 'b\nac'; | |
1612 | actualmatch = string.match(pattern); | |
1613 | expectedmatch = null; | |
1614 | addThis(); | |
1615 | ||
1616 | status = inSection(219); | |
1617 | pattern = /abb$/m; | |
1618 | string = 'b\nac'; | |
1619 | actualmatch = string.match(pattern); | |
1620 | expectedmatch = null; | |
1621 | addThis(); | |
1622 | ||
1623 | status = inSection(220); | |
1624 | pattern = /abb\Z/; | |
1625 | string = 'ca\nb\n'; | |
1626 | actualmatch = string.match(pattern); | |
1627 | expectedmatch = null; | |
1628 | addThis(); | |
1629 | ||
1630 | status = inSection(221); | |
1631 | pattern = /abb\z/; | |
1632 | string = 'ca\nb\n'; | |
1633 | actualmatch = string.match(pattern); | |
1634 | expectedmatch = null; | |
1635 | addThis(); | |
1636 | ||
1637 | status = inSection(222); | |
1638 | pattern = /abb$/; | |
1639 | string = 'ca\nb\n'; | |
1640 | actualmatch = string.match(pattern); | |
1641 | expectedmatch = null; | |
1642 | addThis(); | |
1643 | ||
1644 | status = inSection(223); | |
1645 | pattern = /abb\Z/; | |
1646 | string = 'b\nca\n'; | |
1647 | actualmatch = string.match(pattern); | |
1648 | expectedmatch = null; | |
1649 | addThis(); | |
1650 | ||
1651 | status = inSection(224); | |
1652 | pattern = /abb\z/; | |
1653 | string = 'b\nca\n'; | |
1654 | actualmatch = string.match(pattern); | |
1655 | expectedmatch = null; | |
1656 | addThis(); | |
1657 | ||
1658 | status = inSection(225); | |
1659 | pattern = /abb$/; | |
1660 | string = 'b\nca\n'; | |
1661 | actualmatch = string.match(pattern); | |
1662 | expectedmatch = null; | |
1663 | addThis(); | |
1664 | ||
1665 | status = inSection(226); | |
1666 | pattern = /abb\Z/; | |
1667 | string = 'b\nca'; | |
1668 | actualmatch = string.match(pattern); | |
1669 | expectedmatch = null; | |
1670 | addThis(); | |
1671 | ||
1672 | status = inSection(227); | |
1673 | pattern = /abb\z/; | |
1674 | string = 'b\nca'; | |
1675 | actualmatch = string.match(pattern); | |
1676 | expectedmatch = null; | |
1677 | addThis(); | |
1678 | ||
1679 | status = inSection(228); | |
1680 | pattern = /abb$/; | |
1681 | string = 'b\nca'; | |
1682 | actualmatch = string.match(pattern); | |
1683 | expectedmatch = null; | |
1684 | addThis(); | |
1685 | ||
1686 | status = inSection(229); | |
1687 | pattern = /abb\Z/m; | |
1688 | string = 'ca\nb\n'; | |
1689 | actualmatch = string.match(pattern); | |
1690 | expectedmatch = null; | |
1691 | addThis(); | |
1692 | ||
1693 | status = inSection(230); | |
1694 | pattern = /abb\z/m; | |
1695 | string = 'ca\nb\n'; | |
1696 | actualmatch = string.match(pattern); | |
1697 | expectedmatch = null; | |
1698 | addThis(); | |
1699 | ||
1700 | status = inSection(231); | |
1701 | pattern = /abb$/m; | |
1702 | string = 'ca\nb\n'; | |
1703 | actualmatch = string.match(pattern); | |
1704 | expectedmatch = null; | |
1705 | addThis(); | |
1706 | ||
1707 | status = inSection(232); | |
1708 | pattern = /abb\Z/m; | |
1709 | string = 'b\nca\n'; | |
1710 | actualmatch = string.match(pattern); | |
1711 | expectedmatch = null; | |
1712 | addThis(); | |
1713 | ||
1714 | status = inSection(233); | |
1715 | pattern = /abb\z/m; | |
1716 | string = 'b\nca\n'; | |
1717 | actualmatch = string.match(pattern); | |
1718 | expectedmatch = null; | |
1719 | addThis(); | |
1720 | ||
1721 | status = inSection(234); | |
1722 | pattern = /abb$/m; | |
1723 | string = 'b\nca\n'; | |
1724 | actualmatch = string.match(pattern); | |
1725 | expectedmatch = null; | |
1726 | addThis(); | |
1727 | ||
1728 | status = inSection(235); | |
1729 | pattern = /abb\Z/m; | |
1730 | string = 'b\nca'; | |
1731 | actualmatch = string.match(pattern); | |
1732 | expectedmatch = null; | |
1733 | addThis(); | |
1734 | ||
1735 | status = inSection(236); | |
1736 | pattern = /abb\z/m; | |
1737 | string = 'b\nca'; | |
1738 | actualmatch = string.match(pattern); | |
1739 | expectedmatch = null; | |
1740 | addThis(); | |
1741 | ||
1742 | status = inSection(237); | |
1743 | pattern = /abb$/m; | |
1744 | string = 'b\nca'; | |
1745 | actualmatch = string.match(pattern); | |
1746 | expectedmatch = null; | |
1747 | addThis(); | |
1748 | ||
1749 | status = inSection(238); | |
1750 | pattern = /a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/; | |
1751 | string = 'x'; | |
1752 | actualmatch = string.match(pattern); | |
1753 | expectedmatch = null; | |
1754 | addThis(); | |
1755 | ||
1756 | status = inSection(239); | |
1757 | pattern = /\GX.*X/; | |
1758 | string = 'aaaXbX'; | |
1759 | actualmatch = string.match(pattern); | |
1760 | expectedmatch = null; | |
1761 | addThis(); | |
1762 | ||
1763 | status = inSection(240); | |
1764 | pattern = /\.c(pp|xx|c)?$/i; | |
1765 | string = 'Changes'; | |
1766 | actualmatch = string.match(pattern); | |
1767 | expectedmatch = null; | |
1768 | addThis(); | |
1769 | ||
1770 | status = inSection(241); | |
1771 | pattern = /^([a-z]:)/; | |
1772 | string = 'C:/'; | |
1773 | actualmatch = string.match(pattern); | |
1774 | expectedmatch = null; | |
1775 | addThis(); | |
1776 | ||
1777 | status = inSection(242); | |
1778 | pattern = /(\w)?(abc)\1b/; | |
1779 | string = 'abcab'; | |
1780 | actualmatch = string.match(pattern); | |
1781 | expectedmatch = null; | |
1782 | addThis(); | |
1783 | ||
1784 | /* ECMA doesn't support (?( | |
1785 | status = inSection(243); | |
1786 | pattern = /^(a)?(?(1)a|b)+$/; | |
1787 | string = 'a'; | |
1788 | actualmatch = string.match(pattern); | |
1789 | expectedmatch = null; | |
1790 | addThis(); | |
1791 | */ | |
1792 | ||
1793 | ||
1794 | ||
1795 | //----------------------------------------------------------------------------- | |
1796 | test(); | |
1797 | //----------------------------------------------------------------------------- | |
1798 | ||
1799 | ||
1800 | ||
1801 | function addThis() | |
1802 | { | |
1803 | if(omitCurrentSection()) | |
1804 | return; | |
1805 | ||
1806 | statusmessages[i] = status; | |
1807 | patterns[i] = pattern; | |
1808 | strings[i] = string; | |
1809 | actualmatches[i] = actualmatch; | |
1810 | expectedmatches[i] = expectedmatch; | |
1811 | i++; | |
1812 | } | |
1813 | ||
1814 | ||
1815 | function omitCurrentSection() | |
1816 | { | |
1817 | try | |
1818 | { | |
1819 | // current section number is in global status variable | |
1820 | var n = status.match(/(\d+)/)[1]; | |
1821 | return ((n < cnLBOUND) || (n > cnUBOUND)); | |
1822 | } | |
1823 | catch(e) | |
1824 | { | |
1825 | return false; | |
1826 | } | |
1827 | } | |
1828 | ||
1829 | ||
1830 | function test() | |
1831 | { | |
1832 | enterFunc ('test'); | |
1833 | printBugNumber (bug); | |
1834 | printStatus (summary); | |
1835 | testRegExp(statusmessages, patterns, strings, actualmatches, expectedmatches); | |
1836 | exitFunc ('test'); | |
1837 | } |