| // Copyright 2017 the V8 project authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // Flags: --regexp-mode-modifiers |
| |
| // These tests won't all run on the noi18n build of V8. |
| |
| aa(/(a)(?i)\1/u); |
| aa(/([az])(?i)\1/u); |
| |
| function aa(re) { |
| assertTrue(re.test("aa")); |
| assertTrue(re.test("aA")); |
| assertFalse(re.test("Aa")); |
| assertFalse(re.test("AA")); |
| } |
| |
| aai(/(a)(?-i)\1/iu); |
| aai(/([az])(?-i)\1/iu); |
| |
| function aai(re) { |
| assertTrue(re.test("aa")); |
| assertFalse(re.test("aA")); |
| assertFalse(re.test("Aa")); |
| assertTrue(re.test("AA")); |
| } |
| |
| abcd(/a(b(?i)c)d/u); |
| abcd(/[aw]([bx](?i)[cy])[dz]/u); |
| |
| function abcd(re) { |
| assertTrue(re.test("abcd")); |
| assertFalse(re.test("abcD")); |
| assertTrue(re.test("abCd")); |
| assertFalse(re.test("abCD")); |
| assertFalse(re.test("aBcd")); |
| assertFalse(re.test("aBcD")); |
| assertFalse(re.test("aBCd")); |
| assertFalse(re.test("aBCD")); |
| assertFalse(re.test("Abcd")); |
| assertFalse(re.test("AbcD")); |
| assertFalse(re.test("AbCd")); |
| assertFalse(re.test("AbCD")); |
| assertFalse(re.test("ABcd")); |
| assertFalse(re.test("ABcD")); |
| assertFalse(re.test("ABCd")); |
| assertFalse(re.test("ABCD")); |
| } |
| |
| abcdei(/a(b(?-i)c)d/iu); |
| abcdei(/[aw]([bx](?-i)[cy])[dz]/iu); |
| |
| function abcdei(re) { |
| assertTrue(re.test("abcd")); |
| assertTrue(re.test("abcD")); |
| assertFalse(re.test("abCd")); |
| assertFalse(re.test("abCD")); |
| assertTrue(re.test("aBcd")); |
| assertTrue(re.test("aBcD")); |
| assertFalse(re.test("aBCd")); |
| assertFalse(re.test("aBCD")); |
| assertTrue(re.test("Abcd")); |
| assertTrue(re.test("AbcD")); |
| assertFalse(re.test("AbCd")); |
| assertFalse(re.test("AbCD")); |
| assertTrue(re.test("ABcd")); |
| assertTrue(re.test("ABcD")); |
| assertFalse(re.test("ABCd")); |
| assertFalse(re.test("ABCD")); |
| } |
| |
| abc(/a(?i:b)c/u); |
| abc(/[ax](?i:[by])[cz]/u); |
| |
| function abc(re) { |
| assertTrue(re.test("abc")); |
| assertFalse(re.test("abC")); |
| assertTrue(re.test("aBc")); |
| assertFalse(re.test("aBC")); |
| assertFalse(re.test("Abc")); |
| assertFalse(re.test("AbC")); |
| assertFalse(re.test("ABc")); |
| assertFalse(re.test("ABC")); |
| } |
| |
| abci(/a(?-i:b)c/iu); |
| abci(/[ax](?-i:[by])[cz]/iu); |
| |
| function abci(re) { |
| assertTrue(re.test("abc")); |
| assertTrue(re.test("abC")); |
| assertFalse(re.test("aBc")); |
| assertFalse(re.test("aBC")); |
| assertTrue(re.test("Abc")); |
| assertTrue(re.test("AbC")); |
| assertFalse(re.test("ABc")); |
| assertFalse(re.test("ABC")); |
| } |
| |
| // The following tests are taken from test/mjsunit/es7/regexp-ui-word.js but |
| // using inline syntax instead of the global /i flag. |
| assertTrue(/(?i)\w/u.test('\u017F')); |
| assertTrue(/(?i)\w/u.test('\u212A')); |
| assertFalse(/(?i)\W/u.test('\u017F')); |
| assertFalse(/(?i)\W/u.test('\u212A')); |
| assertFalse(/(?i)\W/u.test('s')); |
| assertFalse(/(?i)\W/u.test('S')); |
| assertFalse(/(?i)\W/u.test('K')); |
| assertFalse(/(?i)\W/u.test('k')); |
| |
| assertTrue(/(?i)[\w]/u.test('\u017F')); |
| assertTrue(/(?i)[\w]/u.test('\u212A')); |
| assertFalse(/(?i)[\W]/u.test('\u017F')); |
| assertFalse(/(?i)[\W]/u.test('\u212A')); |
| assertFalse(/(?i)[\W]/u.test('s')); |
| assertFalse(/(?i)[\W]/u.test('S')); |
| assertFalse(/(?i)[\W]/u.test('K')); |
| assertFalse(/(?i)[\W]/u.test('k')); |
| |
| assertTrue(/(?i)\b/u.test('\u017F')); |
| assertFalse(/(?i:)\b/u.test('\u017F')); |
| assertTrue(/(?i)\b/u.test('\u212A')); |
| assertFalse(/(?i:)\b/u.test('\u212A')); |
| assertTrue(/(?i)\b/u.test('s')); |
| assertTrue(/(?i)\b/u.test('S')); |
| assertFalse(/(?i)\B/u.test('\u017F')); |
| assertFalse(/(?i)\B/u.test('\u212A')); |
| assertFalse(/(?i)\B/u.test('s')); |
| assertFalse(/(?i)\B/u.test('S')); |
| assertFalse(/(?i)\B/u.test('K')); |
| assertFalse(/(?i)\B/u.test('k')); |
| |
| assertEquals(["abcd\u017F", "\u017F"], /a.*?(.)(?i)\b/u.exec('abcd\u017F cd')); |
| assertEquals(["abcd\u212A", "\u212A"], /a.*?(.)(?i)\b/u.exec('abcd\u212A cd')); |
| |
| assertEquals(["a\u017F", "\u017F"], /a.*?(?i:\B)(.)/u.exec('a\u017F ')); |
| assertEquals(["a\u212A", "\u212A"], /a.*?(?i:\B)(.)/u.exec('a\u212A ')); |