OLD | NEW |
1 // Copyright 2016 the V8 project authors. All rights reserved. | 1 // Copyright 2016 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Flags: --harmony-unicode-regexps --harmony-regexp-lookbehind | 5 // Flags: --harmony-unicode-regexps --harmony-regexp-lookbehind |
6 | 6 |
7 function execl(expectation, regexp, subject) { | 7 function execl(expectation, regexp, subject) { |
8 if (regexp instanceof String) regexp = new RegExp(regexp, "u"); | 8 if (regexp instanceof String) regexp = new RegExp(regexp, "u"); |
9 assertEquals(expectation, regexp.exec(subject)); | 9 assertEquals(expectation, regexp.exec(subject)); |
10 } | 10 } |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
89 | 89 |
90 execl(["\ud800X"], /.X/u, "\ud800XaX"); | 90 execl(["\ud800X"], /.X/u, "\ud800XaX"); |
91 execl(["aX"], /.(?<!\ud800)X/u, "\ud800XaX"); | 91 execl(["aX"], /.(?<!\ud800)X/u, "\ud800XaX"); |
92 execl(["aX"], /.(?<![\ud800-\ud900])X/u, "\ud800XaX"); | 92 execl(["aX"], /.(?<![\ud800-\ud900])X/u, "\ud800XaX"); |
93 | 93 |
94 execl(null, /[]/u, "\u1234"); | 94 execl(null, /[]/u, "\u1234"); |
95 execl(["0abc"], /[^]abc/u, "0abc"); | 95 execl(["0abc"], /[^]abc/u, "0abc"); |
96 execl(["\u1234abc"], /[^]abc/u, "\u1234abc"); | 96 execl(["\u1234abc"], /[^]abc/u, "\u1234abc"); |
97 execl(["\u{12345}abc"], /[^]abc/u, "\u{12345}abc"); | 97 execl(["\u{12345}abc"], /[^]abc/u, "\u{12345}abc"); |
98 | 98 |
| 99 execl(null, /[\u{0}-\u{1F444}]/u, "\ud83d\udfff"); |
| 100 |
99 // Backward matches of lone surrogates. | 101 // Backward matches of lone surrogates. |
100 execl(["B", "\ud803A"], /(?<=([\ud800-\ud900]A))B/u, | 102 execl(["B", "\ud803A"], /(?<=([\ud800-\ud900]A))B/u, |
101 "\ud801\udc00AB\udc00AB\ud802\ud803AB"); | 103 "\ud801\udc00AB\udc00AB\ud802\ud803AB"); |
102 execl(["B", "\udc00A"], /(?<=([\ud800-\u{10300}]A))B/u, | 104 execl(["B", "\udc00A"], /(?<=([\ud800-\u{10300}]A))B/u, |
103 "\ud801\udc00AB\udc00AB\ud802\ud803AB"); | 105 "\ud801\udc00AB\udc00AB\ud802\ud803AB"); |
104 execl(["B", "\udc11A"], /(?<=([\udc00-\udd00]A))B/u, | 106 execl(["B", "\udc11A"], /(?<=([\udc00-\udd00]A))B/u, |
105 "\ud801\udc00AB\udc11AB\ud802\ud803AB"); | 107 "\ud801\udc00AB\udc11AB\ud802\ud803AB"); |
106 execl(["X", "\ud800C"], /(?<=(\ud800\w))X/u, | 108 execl(["X", "\ud800C"], /(?<=(\ud800\w))X/u, |
107 "\ud800\udc00AX\udc11BX\ud800\ud800CX"); | 109 "\ud800\udc00AX\udc11BX\ud800\ud800CX"); |
108 execl(["C", "\ud800\ud800"], /(?<=(\ud800.))\w/u, | 110 execl(["C", "\ud800\ud800"], /(?<=(\ud800.))\w/u, |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
147 tests(true, "...(?<=" + L + ")", X + T + L); | 149 tests(true, "...(?<=" + L + ")", X + T + L); |
148 tests(false, "...(?<=" + T + ")", X + L + T) | 150 tests(false, "...(?<=" + T + ")", X + L + T) |
149 tests(true, "..(?<=" + L + T + ")", X + L + T) | 151 tests(true, "..(?<=" + L + T + ")", X + L + T) |
150 tests(true, "..(?<=" + L + T + "(?<=" + L + T + "))", X + L + T); | 152 tests(true, "..(?<=" + L + T + "(?<=" + L + T + "))", X + L + T); |
151 tests(false, "..(?<=" + L + "(" + T + "))", X + L + T); | 153 tests(false, "..(?<=" + L + "(" + T + "))", X + L + T); |
152 tests(false, ".*" + L, X + L + T); | 154 tests(false, ".*" + L, X + L + T); |
153 tests(true, ".*" + L, X + L + L + T); | 155 tests(true, ".*" + L, X + L + L + T); |
154 tests(false, ".*" + L, X + L + T + L + T); | 156 tests(false, ".*" + L, X + L + T + L + T); |
155 tests(false, ".*" + T, X + L + T + L + T); | 157 tests(false, ".*" + T, X + L + T + L + T); |
156 tests(true, ".*" + T, X + L + T + T + L + T); | 158 tests(true, ".*" + T, X + L + T + T + L + T); |
OLD | NEW |