initial import
[vuplus_webkit] / Source / JavaScriptCore / tests / mozilla / ecma_3 / RegExp / perlstress-002.js
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 }