| OLD | NEW |
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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 // ES6 extends the \uxxxx escape and also allows \u{xxxxx}. | 5 // ES6 extends the \uxxxx escape and also allows \u{xxxxx}. |
| 6 | 6 |
| 7 // Flags: --harmony-unicode-regexps --harmony-regexps | 7 // Flags: --harmony-unicode-regexps --harmony-regexps |
| 8 | 8 |
| 9 function testRegexpHelper(r) { | 9 function testRegexpHelper(r) { |
| 10 assertTrue(r.test("foo")); | 10 assertTrue(r.test("foo")); |
| (...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 203 | 203 |
| 204 | 204 |
| 205 (function ToString() { | 205 (function ToString() { |
| 206 // Test that the u flag is included in the string representation of regexps. | 206 // Test that the u flag is included in the string representation of regexps. |
| 207 function helper(r) { | 207 function helper(r) { |
| 208 assertEquals(r.toString(), "/foo/u"); | 208 assertEquals(r.toString(), "/foo/u"); |
| 209 } | 209 } |
| 210 helper(/foo/u); | 210 helper(/foo/u); |
| 211 helper(new RegExp("foo", "u")); | 211 helper(new RegExp("foo", "u")); |
| 212 })(); | 212 })(); |
| 213 |
| 214 // Non-BMP patterns. |
| 215 // Single character atom. |
| 216 assertTrue(new RegExp("\u{12345}", "u").test("\u{12345}")); |
| 217 assertTrue(/\u{12345}/u.test("\u{12345}")); |
| 218 assertTrue(new RegExp("\u{12345}", "u").test("\ud808\udf45")); |
| 219 assertTrue(/\u{12345}/u.test("\ud808\udf45")); |
| 220 assertFalse(new RegExp("\u{12345}", "u").test("\udf45")); |
| 221 assertFalse(/\u{12345}/u.test("\udf45")); |
| 222 |
| 223 // Multi-character atom. |
| 224 assertTrue(new RegExp("\u{12345}\u{23456}", "u").test("a\u{12345}\u{23456}b")); |
| 225 assertTrue(/\u{12345}\u{23456}/u.test("b\u{12345}\u{23456}c")); |
| 226 assertFalse(new RegExp("\u{12345}\u{23456}", "u").test("a\udf45\u{23456}b")); |
| 227 assertFalse(/\u{12345}\u{23456}/u.test("b\udf45\u{23456}c")); |
| 228 |
| 229 // Disjunction. |
| 230 assertTrue(new RegExp("\u{12345}(?:\u{23456})", "u").test( |
| 231 "a\u{12345}\u{23456}b")); |
| 232 assertTrue(/\u{12345}(?:\u{23456})/u.test("b\u{12345}\u{23456}c")); |
| 233 assertFalse(new RegExp("\u{12345}(?:\u{23456})", "u").test( |
| 234 "a\udf45\u{23456}b")); |
| 235 assertFalse(/\u{12345}(?:\u{23456})/u.test("b\udf45\u{23456}c")); |
| 236 |
| 237 // Alternative. |
| 238 assertTrue(new RegExp("\u{12345}|\u{23456}", "u").test("a\u{12345}b")); |
| 239 assertTrue(/\u{12345}|\u{23456}/u.test("b\u{23456}c")); |
| 240 assertFalse(new RegExp("\u{12345}|\u{23456}", "u").test("a\udf45\ud84db")); |
| 241 assertFalse(/\u{12345}|\u{23456}/u.test("b\udf45\ud808c")); |
| 242 |
| 243 // Capture. |
| 244 assertTrue(new RegExp("(\u{12345}|\u{23456}).\\1", "u").test( |
| 245 "\u{12345}b\u{12345}")); |
| 246 assertTrue(/(\u{12345}|\u{23456}).\1/u.test("\u{12345}b\u{12345}")); |
| 247 assertFalse(new RegExp("(\u{12345}|\u{23456}).\\1", "u").test( |
| 248 "\u{12345}b\u{23456}")); |
| 249 assertFalse(/(\u{12345}|\u{23456}).\1/u.test("\u{12345}b\u{23456}")); |
| OLD | NEW |