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