Chromium Code Reviews| Index: test/mjsunit/harmony/regexp-dotall.js |
| diff --git a/test/mjsunit/harmony/regexp-dotall.js b/test/mjsunit/harmony/regexp-dotall.js |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..4b822a689bff504af95c0b2f8dedf8cfda3e1185 |
| --- /dev/null |
| +++ b/test/mjsunit/harmony/regexp-dotall.js |
| @@ -0,0 +1,126 @@ |
| +// 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: --harmony-regexp-dotall |
| + |
| +function toSlowMode(re) { |
| + re.exec = (str) => RegExp.prototype.exec.call(re, str); |
| + return re; |
| +} |
| + |
| +// Construction does not throw. |
| +{ |
| + let re = /./s; |
| + re = RegExp(".", "s"); |
| + re = new RegExp(".", "s"); |
| + assertThrows(() => new RegExp(".", "wtf"), SyntaxError); |
| +} |
| + |
| +// The flags accessors. |
| +{ |
| + let re = /./s; |
| + assertEquals("s", re.flags); |
| + assertFalse(re.global); |
| + assertFalse(re.ignoreCase); |
| + assertFalse(re.multiline); |
| + assertFalse(re.sticky); |
| + assertFalse(re.unicode); |
| + assertTrue(re.dotAll); |
| + |
| + re = toSlowMode(/./s); |
| + assertEquals("s", re.flags); |
| + assertFalse(re.global); |
| + assertFalse(re.ignoreCase); |
| + assertFalse(re.multiline); |
| + assertFalse(re.sticky); |
| + assertFalse(re.unicode); |
| + assertTrue(re.dotAll); |
| + |
| + re = /./gimyus; |
| + assertEquals("gimsuy", re.flags); |
| + assertTrue(re.global); |
| + assertTrue(re.ignoreCase); |
| + assertTrue(re.multiline); |
| + assertTrue(re.sticky); |
| + assertTrue(re.unicode); |
| + assertTrue(re.dotAll); |
| + |
| + re = /./gimyu; |
| + assertEquals("gimuy", re.flags); |
| + assertTrue(re.global); |
| + assertTrue(re.ignoreCase); |
| + assertTrue(re.multiline); |
| + assertTrue(re.sticky); |
| + assertTrue(re.unicode); |
| + assertFalse(re.dotAll); |
| +} |
| + |
| +// Default '.' behavior. |
| +{ |
| + let re = /^.$/; |
| + assertTrue(re.test("a")); |
| + assertTrue(re.test("3")); |
| + assertTrue(re.test("π")); |
| + assertTrue(re.test("\u2027")); |
| + assertTrue(re.test("\u0085")); |
| + assertTrue(re.test("\v")); |
| + assertTrue(re.test("\f")); |
| + assertFalse(re.test("\u{10300}")); // Supplementary plane. |
| + assertFalse(re.test("\n")); |
| + assertFalse(re.test("\r")); |
| + assertFalse(re.test("\u2028")); |
| + assertFalse(re.test("\u2029")); |
|
mathias
2017/03/29 16:10:42
Let’s test U+180E as well, since it used to be a w
jgruber
2017/03/30 07:32:39
Done. The expectation for U+180E is to match '.' i
|
| +} |
| + |
| +// Default '.' behavior (unicode). |
| +{ |
| + let re = /^.$/u; |
| + assertTrue(re.test("a")); |
| + assertTrue(re.test("3")); |
| + assertTrue(re.test("π")); |
| + assertTrue(re.test("\u2027")); |
| + assertTrue(re.test("\u0085")); |
| + assertTrue(re.test("\v")); |
| + assertTrue(re.test("\f")); |
| + assertTrue(re.test("\u{10300}")); // Supplementary plane. |
| + assertFalse(re.test("\n")); |
| + assertFalse(re.test("\r")); |
| + assertFalse(re.test("\u2028")); |
| + assertFalse(re.test("\u2029")); |
| + assertTrue(re.test("\u{10300}")); |
| +} |
| + |
| +// DotAll '.' behavior. |
| +{ |
| + let re = /^.$/s; |
| + assertTrue(re.test("a")); |
| + assertTrue(re.test("3")); |
| + assertTrue(re.test("π")); |
| + assertTrue(re.test("\u2027")); |
| + assertTrue(re.test("\u0085")); |
| + assertTrue(re.test("\v")); |
| + assertTrue(re.test("\f")); |
| + assertFalse(re.test("\u{10300}")); // Supplementary plane. |
| + assertTrue(re.test("\n")); |
| + assertTrue(re.test("\r")); |
| + assertTrue(re.test("\u2028")); |
| + assertTrue(re.test("\u2029")); |
| +} |
| + |
| +// DotAll '.' behavior (unicode). |
| +{ |
| + let re = /^.$/su; |
| + assertTrue(re.test("a")); |
| + assertTrue(re.test("3")); |
| + assertTrue(re.test("π")); |
| + assertTrue(re.test("\u2027")); |
| + assertTrue(re.test("\u0085")); |
| + assertTrue(re.test("\v")); |
| + assertTrue(re.test("\f")); |
| + assertTrue(re.test("\u{10300}")); // Supplementary plane. |
| + assertTrue(re.test("\n")); |
| + assertTrue(re.test("\r")); |
| + assertTrue(re.test("\u2028")); |
| + assertTrue(re.test("\u2029")); |
| +} |