Index: test/mjsunit/harmony/unicode-regexp-last-index.js |
diff --git a/test/mjsunit/harmony/unicode-regexp-last-index.js b/test/mjsunit/harmony/unicode-regexp-last-index.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..a986d3020c23407120ada3f96c2b312f0fef87f3 |
--- /dev/null |
+++ b/test/mjsunit/harmony/unicode-regexp-last-index.js |
@@ -0,0 +1,59 @@ |
+// Copyright 2016 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-unicode-regexps --harmony-regexp-lookbehind |
+ |
+var r = /./ug; |
erikcorry
2016/01/22 10:10:10
All these tests should be duplicated without the /
Yang
2016/01/25 07:38:41
Done.
|
+assertEquals(["\ud800\udc00"], r.exec("\ud800\udc00\ud801\udc01")); |
+assertEquals(2, r.lastIndex); |
+r.lastIndex = 1; |
+assertEquals(["\ud800\udc00"], r.exec("\ud800\udc00\ud801\udc01")); |
+assertEquals(2, r.lastIndex); |
+assertEquals(["\ud801\udc01"], r.exec("\ud800\udc00\ud801\udc01")); |
+r.lastIndex = 3; |
+assertEquals(["\ud801\udc01"], r.exec("\ud800\udc00\ud801\udc01")); |
+r.lastIndex = 4; |
+assertNull(r.exec("\ud800\udc00\ud801\udc01")); |
+r.lastIndex = 5; |
+assertNull(r.exec("\ud800\udc00\ud801\udc01")); |
+ |
+r.lastIndex = 3; |
+assertEquals(["\ud802"], r.exec("\ud800\udc00\ud801\ud802")); |
+r.lastIndex = 4; |
+assertNull(r.exec("\ud800\udc00\ud801\ud802")); |
+ |
+r = /^./ug; |
+assertEquals(["\ud800\udc00"], r.exec("\ud800\udc00\ud801\udc01")); |
+assertEquals(2, r.lastIndex); |
+r.lastIndex = 1; |
+assertEquals(["\ud800\udc00"], r.exec("\ud800\udc00\ud801\udc01")); |
+assertEquals(2, r.lastIndex); |
+assertNull(r.exec("\ud800\udc00\ud801\udc01")); |
+r.lastIndex = 3; |
+assertNull(r.exec("\ud800\udc00\ud801\udc01")); |
+r.lastIndex = 4; |
+assertNull(r.exec("\ud800\udc00\ud801\udc01")); |
+r.lastIndex = 5; |
+assertNull(r.exec("\ud800\udc00\ud801\udc01")); |
+ |
+r = /(?:(^.)|.)/ug; |
+assertEquals(["\ud800\udc00", "\ud800\udc00"], |
+ r.exec("\ud800\udc00\ud801\udc01")); |
+assertEquals(2, r.lastIndex); |
+r.lastIndex = 1; |
+assertEquals(["\ud800\udc00", "\ud800\udc00"], |
+ r.exec("\ud800\udc00\ud801\udc01")); |
+assertEquals(2, r.lastIndex); |
+assertEquals(["\ud801\udc01", undefined], r.exec("\ud800\udc00\ud801\udc01")); |
+r.lastIndex = 3; |
+assertEquals(["\ud801\udc01", undefined], r.exec("\ud800\udc00\ud801\udc01")); |
+r.lastIndex = 4; |
+assertNull(r.exec("\ud800\udc00\ud801\udc01")); |
+r.lastIndex = 5; |
+assertNull(r.exec("\ud800\udc00\ud801\udc01")); |
+ |
+r.lastIndex = 3; |
+assertEquals(["\ud802", undefined], r.exec("\ud800\udc00\ud801\ud802")); |
+r.lastIndex = 4; |
+assertNull(r.exec("\ud800\udc00\ud801\ud802")); |