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