// Copyright 2013 the V8 project authors. All rights reserved. // Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // 1. Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // 2. Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE // DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY // DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON // ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. description( "A chunk of our port of PCRE's test suite, adapted to be more applicable to JavaScript." ); var regex0 = /a.b/; var input0 = "acb"; var results = ["acb"]; shouldBe('regex0.exec(input0);', 'results'); var input1 = "a\x7fb"; var results = ["a\u007fb"]; shouldBe('regex0.exec(input1);', 'results'); var input2 = "a\u0100b"; var results = ["a\u0100b"]; shouldBe('regex0.exec(input2);', 'results'); // Failers var input3 = "a\nb"; var results = null; shouldBe('regex0.exec(input3);', 'results'); var regex1 = /a(.{3})b/; var input0 = "a\u4000xyb"; var results = ["a\u4000xyb", "\u4000xy"]; shouldBe('regex1.exec(input0);', 'results'); var input1 = "a\u4000\x7fyb"; var results = ["a\u4000\u007fyb", "\u4000\u007fy"]; shouldBe('regex1.exec(input1);', 'results'); var input2 = "a\u4000\u0100yb"; var results = ["a\u4000\u0100yb", "\u4000\u0100y"]; shouldBe('regex1.exec(input2);', 'results'); // Failers var input3 = "a\u4000b"; var results = null; shouldBe('regex1.exec(input3);', 'results'); var input4 = "ac\ncb"; var results = null; shouldBe('regex1.exec(input4);', 'results'); var regex2 = /a(.*?)(.)/; var input0 = "a\xc0\x88b"; var results = ["a\xc0", "", "\xc0"]; shouldBe('regex2.exec(input0);', 'results'); var regex3 = /a(.*?)(.)/; var input0 = "a\u0100b"; var results = ["a\u0100", "", "\u0100"]; shouldBe('regex3.exec(input0);', 'results'); var regex4 = /a(.*)(.)/; var input0 = "a\xc0\x88b"; var results = ["a\xc0\x88b", "\xc0\x88", "b"]; shouldBe('regex4.exec(input0);', 'results'); var regex5 = /a(.*)(.)/; var input0 = "a\u0100b"; var results = ["a\u0100b", "\u0100", "b"]; shouldBe('regex5.exec(input0);', 'results'); var regex6 = /a(.)(.)/; var input0 = "a\xc0\x92bcd"; var results = ["a\xc0\x92", "\xc0", "\x92"]; shouldBe('regex6.exec(input0);', 'results'); var regex7 = /a(.)(.)/; var input0 = "a\u0240bcd"; var results = ["a\u0240b", "\u0240", "b"]; shouldBe('regex7.exec(input0);', 'results'); var regex8 = /a(.?)(.)/; var input0 = "a\xc0\x92bcd"; var results = ["a\xc0\x92", "\xc0", "\x92"]; shouldBe('regex8.exec(input0);', 'results'); var regex9 = /a(.?)(.)/; var input0 = "a\u0240bcd"; var results = ["a\u0240b", "\u0240", "b"]; shouldBe('regex9.exec(input0);', 'results'); var regex10 = /a(.??)(.)/; var input0 = "a\xc0\x92bcd"; var results = ["a\xc0", "", "\xc0"]; shouldBe('regex10.exec(input0);', 'results'); var regex11 = /a(.??)(.)/; var input0 = "a\u0240bcd"; var results = ["a\u0240", "", "\u0240"]; shouldBe('regex11.exec(input0);', 'results'); var regex12 = /a(.{3})b/; var input0 = "a\u1234xyb"; var results = ["a\u1234xyb", "\u1234xy"]; shouldBe('regex12.exec(input0);', 'results'); var input1 = "a\u1234\u4321yb"; var results = ["a\u1234\u4321yb", "\u1234\u4321y"]; shouldBe('regex12.exec(input1);', 'results'); var input2 = "a\u1234\u4321\u3412b"; var results = ["a\u1234\u4321\u3412b", "\u1234\u4321\u3412"]; shouldBe('regex12.exec(input2);', 'results'); // Failers var input3 = "a\u1234b"; var results = null; shouldBe('regex12.exec(input3);', 'results'); var input4 = "ac\ncb"; var results = null; shouldBe('regex12.exec(input4);', 'results'); var regex13 = /a(.{3,})b/; var input0 = "a\u1234xyb"; var results = ["a\u1234xyb", "\u1234xy"]; shouldBe('regex13.exec(input0);', 'results'); var input1 = "a\u1234\u4321yb"; var results = ["a\u1234\u4321yb", "\u1234\u4321y"]; shouldBe('regex13.exec(input1);', 'results'); var input2 = "a\u1234\u4321\u3412b"; var results = ["a\u1234\u4321\u3412b", "\u1234\u4321\u3412"]; shouldBe('regex13.exec(input2);', 'results'); var input3 = "axxxxbcdefghijb"; var results = ["axxxxbcdefghijb", "xxxxbcdefghij"]; shouldBe('regex13.exec(input3);', 'results'); var input4 = "a\u1234\u4321\u3412\u3421b"; var results = ["a\u1234\u4321\u3412\u3421b", "\u1234\u4321\u3412\u3421"]; shouldBe('regex13.exec(input4);', 'results'); // Failers var input5 = "a\u1234b"; var results = null; shouldBe('regex13.exec(input5);', 'results'); var regex14 = /a(.{3,}?)b/; var input0 = "a\u1234xyb"; var results = ["a\u1234xyb", "\u1234xy"]; shouldBe('regex14.exec(input0);', 'results'); var input1 = "a\u1234\u4321yb"; var results = ["a\u1234\u4321yb", "\u1234\u4321y"]; shouldBe('regex14.exec(input1);', 'results'); var input2 = "a\u1234\u4321\u3412b"; var results = ["a\u1234\u4321\u3412b", "\u1234\u4321\u3412"]; shouldBe('regex14.exec(input2);', 'results'); var input3 = "axxxxbcdefghijb"; var results = ["axxxxb", "xxxx"]; shouldBe('regex14.exec(input3);', 'results'); var input4 = "a\u1234\u4321\u3412\u3421b"; var results = ["a\u1234\u4321\u3412\u3421b", "\u1234\u4321\u3412\u3421"]; shouldBe('regex14.exec(input4);', 'results'); // Failers var input5 = "a\u1234b"; var results = null; shouldBe('regex14.exec(input5);', 'results'); var regex15 = /a(.{3,5})b/; var input0 = "a\u1234xyb"; var results = ["a\u1234xyb", "\u1234xy"]; shouldBe('regex15.exec(input0);', 'results'); var input1 = "a\u1234\u4321yb"; var results = ["a\u1234\u4321yb", "\u1234\u4321y"]; shouldBe('regex15.exec(input1);', 'results'); var input2 = "a\u1234\u4321\u3412b"; var results = ["a\u1234\u4321\u3412b", "\u1234\u4321\u3412"]; shouldBe('regex15.exec(input2);', 'results'); var input3 = "axxxxbcdefghijb"; var results = ["axxxxb", "xxxx"]; shouldBe('regex15.exec(input3);', 'results'); var input4 = "a\u1234\u4321\u3412\u3421b"; var results = ["a\u1234\u4321\u3412\u3421b", "\u1234\u4321\u3412\u3421"]; shouldBe('regex15.exec(input4);', 'results'); var input5 = "axbxxbcdefghijb"; var results = ["axbxxb", "xbxx"]; shouldBe('regex15.exec(input5);', 'results'); var input6 = "axxxxxbcdefghijb"; var results = ["axxxxxb", "xxxxx"]; shouldBe('regex15.exec(input6);', 'results'); // Failers var input7 = "a\u1234b"; var results = null; shouldBe('regex15.exec(input7);', 'results'); var input8 = "axxxxxxbcdefghijb"; var results = null; shouldBe('regex15.exec(input8);', 'results'); var regex16 = /a(.{3,5}?)b/; var input0 = "a\u1234xyb"; var results = ["a\u1234xyb", "\u1234xy"]; shouldBe('regex16.exec(input0);', 'results'); var input1 = "a\u1234\u4321yb"; var results = ["a\u1234\u4321yb", "\u1234\u4321y"]; shouldBe('regex16.exec(input1);', 'results'); var input2 = "a\u1234\u4321\u3412b"; var results = ["a\u1234\u4321\u3412b", "\u1234\u4321\u3412"]; shouldBe('regex16.exec(input2);', 'results'); var input3 = "axxxxbcdefghijb"; var results = ["axxxxb", "xxxx"]; shouldBe('regex16.exec(input3);', 'results'); var input4 = "a\u1234\u4321\u3412\u3421b"; var results = ["a\u1234\u4321\u3412\u3421b", "\u1234\u4321\u3412\u3421"]; shouldBe('regex16.exec(input4);', 'results'); var input5 = "axbxxbcdefghijb"; var results = ["axbxxb", "xbxx"]; shouldBe('regex16.exec(input5);', 'results'); var input6 = "axxxxxbcdefghijb"; var results = ["axxxxxb", "xxxxx"]; shouldBe('regex16.exec(input6);', 'results'); // Failers var input7 = "a\u1234b"; var results = null; shouldBe('regex16.exec(input7);', 'results'); var input8 = "axxxxxxbcdefghijb"; var results = null; shouldBe('regex16.exec(input8);', 'results'); var regex17 = /^[a\u00c0]/; // Failers var input0 = "\u0100"; var results = null; shouldBe('regex17.exec(input0);', 'results'); var regex21 = /(?:\u0100){3}b/; var input0 = "\u0100\u0100\u0100b"; var results = ["\u0100\u0100\u0100b"]; shouldBe('regex21.exec(input0);', 'results'); // Failers var input1 = "\u0100\u0100b"; var results = null; shouldBe('regex21.exec(input1);', 'results'); var regex22 = /\u00ab/; var input0 = "\u00ab"; var results = ["\u00ab"]; shouldBe('regex22.exec(input0);', 'results'); var input1 = "\xc2\xab"; var results = ["\u00ab"]; shouldBe('regex22.exec(input1);', 'results'); // Failers var input2 = "\x00{ab}"; var results = null; shouldBe('regex22.exec(input2);', 'results'); var regex30 = /^[^a]{2}/; var input0 = "\u0100bc"; var results = ["\u0100b"]; shouldBe('regex30.exec(input0);', 'results'); var regex31 = /^[^a]{2,}/; var input0 = "\u0100bcAa"; var results = ["\u0100bcA"]; shouldBe('regex31.exec(input0);', 'results'); var regex32 = /^[^a]{2,}?/; var input0 = "\u0100bca"; var results = ["\u0100b"]; shouldBe('regex32.exec(input0);', 'results'); var regex33 = /^[^a]{2}/i; var input0 = "\u0100bc"; var results = ["\u0100b"]; shouldBe('regex33.exec(input0);', 'results'); var regex34 = /^[^a]{2,}/i; var input0 = "\u0100bcAa"; var results = ["\u0100bc"]; shouldBe('regex34.exec(input0);', 'results'); var regex35 = /^[^a]{2,}?/i; var input0 = "\u0100bca"; var results = ["\u0100b"]; shouldBe('regex35.exec(input0);', 'results'); var regex36 = /\u0100{0,0}/; var input0 = "abcd"; var results = [""]; shouldBe('regex36.exec(input0);', 'results'); var regex37 = /\u0100?/; var input0 = "abcd"; var results = [""]; shouldBe('regex37.exec(input0);', 'results'); var input1 = "\u0100\u0100"; var results = ["\u0100"]; shouldBe('regex37.exec(input1);', 'results'); var regex38 = /\u0100{0,3}/; var input0 = "\u0100\u0100"; var results = ["\u0100\u0100"]; shouldBe('regex38.exec(input0);', 'results'); var input1 = "\u0100\u0100\u0100\u0100"; var results = ["\u0100\u0100\u0100"]; shouldBe('regex38.exec(input1);', 'results'); var regex39 = /\u0100*/; var input0 = "abce"; var results = [""]; shouldBe('regex39.exec(input0);', 'results'); var input1 = "\u0100\u0100\u0100\u0100"; var results = ["\u0100\u0100\u0100\u0100"]; shouldBe('regex39.exec(input1);', 'results'); var regex40 = /\u0100{1,1}/; var input0 = "abcd\u0100\u0100\u0100\u0100"; var results = ["\u0100"]; shouldBe('regex40.exec(input0);', 'results'); var regex41 = /\u0100{1,3}/; var input0 = "abcd\u0100\u0100\u0100\u0100"; var results = ["\u0100\u0100\u0100"]; shouldBe('regex41.exec(input0);', 'results'); var regex42 = /\u0100+/; var input0 = "abcd\u0100\u0100\u0100\u0100"; var results = ["\u0100\u0100\u0100\u0100"]; shouldBe('regex42.exec(input0);', 'results'); var regex43 = /\u0100{3}/; var input0 = "abcd\u0100\u0100\u0100XX"; var results = ["\u0100\u0100\u0100"]; shouldBe('regex43.exec(input0);', 'results'); var regex44 = /\u0100{3,5}/; var input0 = "abcd\u0100\u0100\u0100\u0100\u0100\u0100\u0100XX"; var results = ["\u0100\u0100\u0100\u0100\u0100"]; shouldBe('regex44.exec(input0);', 'results'); var regex45 = /\u0100{3,}/; var input0 = "abcd\u0100\u0100\u0100\u0100\u0100\u0100\u0100XX"; var results = ["\u0100\u0100\u0100\u0100\u0100\u0100\u0100"]; shouldBe('regex45.exec(input0);', 'results'); var regex47 = /\D*/; var input0 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; var results = ["aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]; shouldBe('regex47.exec(input0);', 'results'); var regex48 = /\D*/; var input0 = "\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100"; var results = ["\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100"]; shouldBe('regex48.exec(input0);', 'results'); var regex49 = /\D/; var input0 = "1X2"; var results = ["X"]; shouldBe('regex49.exec(input0);', 'results'); var input1 = "1\u01002"; var results = ["\u0100"]; shouldBe('regex49.exec(input1);', 'results'); var regex50 = />\S/; var input0 = "> >X Y"; var results = [">X"]; shouldBe('regex50.exec(input0);', 'results'); var input1 = "> >\u0100 Y"; var results = [">\u0100"]; shouldBe('regex50.exec(input1);', 'results'); var regex51 = /\d/; var input0 = "\u01003"; var results = ["3"]; shouldBe('regex51.exec(input0);', 'results'); var regex52 = /\s/; var input0 = "\u0100 X"; var results = [" "]; shouldBe('regex52.exec(input0);', 'results'); var regex53 = /\D+/; var input0 = "12abcd34"; var results = ["abcd"]; shouldBe('regex53.exec(input0);', 'results'); // Failers var input1 = "1234"; var results = null; shouldBe('regex53.exec(input1);', 'results'); var regex54 = /\D{2,3}/; var input0 = "12abcd34"; var results = ["abc"]; shouldBe('regex54.exec(input0);', 'results'); var input1 = "12ab34"; var results = ["ab"]; shouldBe('regex54.exec(input1);', 'results'); // Failers var input2 = "1234"; var results = null; shouldBe('regex54.exec(input2);', 'results'); var input3 = "12a34"; var results = null; shouldBe('regex54.exec(input3);', 'results'); var regex55 = /\D{2,3}?/; var input0 = "12abcd34"; var results = ["ab"]; shouldBe('regex55.exec(input0);', 'results'); var input1 = "12ab34"; var results = ["ab"]; shouldBe('regex55.exec(input1);', 'results'); // Failers var input2 = "1234"; var results = null; shouldBe('regex55.exec(input2);', 'results'); var input3 = "12a34"; var results = null; shouldBe('regex55.exec(input3);', 'results'); var regex56 = /\d+/; var input0 = "12abcd34"; var results = ["12"]; shouldBe('regex56.exec(input0);', 'results'); var regex57 = /\d{2,3}/; var input0 = "12abcd34"; var results = ["12"]; shouldBe('regex57.exec(input0);', 'results'); var input1 = "1234abcd"; var results = ["123"]; shouldBe('regex57.exec(input1);', 'results'); // Failers var input2 = "1.4"; var results = null; shouldBe('regex57.exec(input2);', 'results'); var regex58 = /\d{2,3}?/; var input0 = "12abcd34"; var results = ["12"]; shouldBe('regex58.exec(input0);', 'results'); var input1 = "1234abcd"; var results = ["12"]; shouldBe('regex58.exec(input1);', 'results'); // Failers var input2 = "1.4"; var results = null; shouldBe('regex58.exec(input2);', 'results'); var regex59 = /\S+/; var input0 = "12abcd34"; var results = ["12abcd34"]; shouldBe('regex59.exec(input0);', 'results'); // Failers var input1 = " "; var results = null; shouldBe('regex59.exec(input1);', 'results'); var regex60 = /\S{2,3}/; var input0 = "12abcd34"; var results = ["12a"]; shouldBe('regex60.exec(input0);', 'results'); var input1 = "1234abcd"; var results = ["123"]; shouldBe('regex60.exec(input1);', 'results'); // Failers var input2 = " "; var results = null; shouldBe('regex60.exec(input2);', 'results'); var regex61 = /\S{2,3}?/; var input0 = "12abcd34"; var results = ["12"]; shouldBe('regex61.exec(input0);', 'results'); var input1 = "1234abcd"; var results = ["12"]; shouldBe('regex61.exec(input1);', 'results'); // Failers var input2 = " "; var results = null; shouldBe('regex61.exec(input2);', 'results'); var regex62 = />\s+ <34"; var results = ["> <"]; shouldBe('regex62.exec(input0);', 'results'); var regex63 = />\s{2,3} <"]; shouldBe('regex63.exec(input0);', 'results'); var input1 = "ab> <"]; shouldBe('regex63.exec(input1);', 'results'); // Failers var input2 = "ab> \s{2,3}? <"]; shouldBe('regex64.exec(input0);', 'results'); var input1 = "ab> <"]; shouldBe('regex64.exec(input1);', 'results'); // Failers var input2 = "ab> ) constructs. These are not currently valid in ECMAScript, // but these tests may be useful if similar constructs are introduced in the future. //var regex18 = /(?<=aXb)cd/; //var input0 = "aXbcd"; //var results = ["cd"]; //shouldBe('regex18.exec(input0);', 'results'); // //var regex19 = /(?<=a\u0100b)cd/; //var input0 = "a\u0100bcd"; //var results = ["cd"]; //shouldBe('regex19.exec(input0);', 'results'); // //var regex20 = /(?<=a\u100000b)cd/; //var input0 = "a\u100000bcd"; //var results = ["cd"]; //shouldBe('regex20.exec(input0);', 'results'); // //var regex23 = /(?<=(.))X/; //var input0 = "WXYZ"; //var results = ["X", "W"]; //shouldBe('regex23.exec(input0);', 'results'); //var input1 = "\u0256XYZ"; //var results = ["X", "\u0256"]; //shouldBe('regex23.exec(input1);', 'results'); //// Failers //var input2 = "XYZ"; //var results = null; //shouldBe('regex23.exec(input2);', 'results'); // //var regex46 = /(?<=a\u0100{2}b)X/; //var input0 = "Xyyya\u0100\u0100bXzzz"; //var results = ["X"]; //shouldBe('regex46.exec(input0);', 'results'); // //var regex83 = /(?<=[\u0100\u0200])X/; //var input0 = "abc\u0200X"; //var results = ["X"]; //shouldBe('regex83.exec(input0);', 'results'); //var input1 = "abc\u0100X"; //var results = ["X"]; //shouldBe('regex83.exec(input1);', 'results'); //// Failers //var input2 = "X"; //var results = null; //shouldBe('regex83.exec(input2);', 'results'); // //var regex84 = /(?<=[Q\u0100\u0200])X/; //var input0 = "abc\u0200X"; //var results = ["X"]; //shouldBe('regex84.exec(input0);', 'results'); //var input1 = "abc\u0100X"; //var results = ["X"]; //shouldBe('regex84.exec(input1);', 'results'); //var input2 = "abQX"; //var results = ["X"]; //shouldBe('regex84.exec(input2);', 'results'); //// Failers //var input3 = "X"; //var results = null; //shouldBe('regex84.exec(input3);', 'results'); // //var regex85 = /(?<=[\u0100\u0200]{3})X/; //var input0 = "abc\u0100\u0200\u0100X"; //var results = ["X"]; //shouldBe('regex85.exec(input0);', 'results'); //// Failers //var input1 = "abc\u0200X"; //var results = null; //shouldBe('regex85.exec(input1);', 'results'); //var input2 = "X"; //var results = null; //shouldBe('regex85.exec(input2);', 'results'); // DISABLED: // These tests use PCRE's \C token. This is not currently valid in ECMAScript, // but these tests may be useful if similar constructs are introduced in the future. //var regex24 = /X(\C{3})/; //var input0 = "X\u1234"; //var results = ["X\u1234", "\u1234"]; //shouldBe('regex24.exec(input0);', 'results'); // //var regex25 = /X(\C{4})/; //var input0 = "X\u1234YZ"; //var results = ["X\u1234Y", "\u1234Y"]; //shouldBe('regex25.exec(input0);', 'results'); // //var regex26 = /X\C*/; //var input0 = "XYZabcdce"; //var results = ["XYZabcdce"]; //shouldBe('regex26.exec(input0);', 'results'); // //var regex27 = /X\C*?/; //var input0 = "XYZabcde"; //var results = ["X"]; //shouldBe('regex27.exec(input0);', 'results'); // //var regex28 = /X\C{3,5}/; //var input0 = "Xabcdefg"; //var results = ["Xabcde"]; //shouldBe('regex28.exec(input0);', 'results'); //var input1 = "X\u1234"; //var results = ["X\u1234"]; //shouldBe('regex28.exec(input1);', 'results'); //var input2 = "X\u1234YZ"; //var results = ["X\u1234YZ"]; //shouldBe('regex28.exec(input2);', 'results'); //var input3 = "X\u1234\u0512"; //var results = ["X\u1234\u0512"]; //shouldBe('regex28.exec(input3);', 'results'); //var input4 = "X\u1234\u0512YZ"; //var results = ["X\u1234\u0512"]; //shouldBe('regex28.exec(input4);', 'results'); // //var regex29 = /X\C{3,5}?/; //var input0 = "Xabcdefg"; //var results = ["Xabc"]; //shouldBe('regex29.exec(input0);', 'results'); //var input1 = "X\u1234"; //var results = ["X\u1234"]; //shouldBe('regex29.exec(input1);', 'results'); //var input2 = "X\u1234YZ"; //var results = ["X\u1234"]; //shouldBe('regex29.exec(input2);', 'results'); //var input3 = "X\u1234\u0512"; //var results = ["X\u1234"]; //shouldBe('regex29.exec(input3);', 'results'); // //var regex89 = /a\Cb/; //var input0 = "aXb"; //var results = ["aXb"]; //shouldBe('regex89.exec(input0);', 'results'); //var input1 = "a\nb"; //var results = ["a\x0ab"]; //shouldBe('regex89.exec(input1);', 'results'); // //var regex90 = /a\Cb/; //var input0 = "aXb"; //var results = ["aXb"]; //shouldBe('regex90.exec(input0);', 'results'); //var input1 = "a\nb"; //var results = ["a\u000ab"]; //shouldBe('regex90.exec(input1);', 'results'); //// Failers //var input2 = "a\u0100b"; //var results = null; //shouldBe('regex90.exec(input2);', 'results');