tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

perlstress-002.js (35951B)


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