Index: test/mjsunit/harmony/unicode-escapes.js |
diff --git a/test/mjsunit/harmony/unicode-escapes.js b/test/mjsunit/harmony/unicode-escapes.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b39ee1a5b05f96c1c86f05a86da2b5c52691ec2d |
--- /dev/null |
+++ b/test/mjsunit/harmony/unicode-escapes.js |
@@ -0,0 +1,46 @@ |
+// Copyright 2014 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. |
+ |
+// ES6 extends the \uxxxx escape and also allows \u{xxxxx}. |
+ |
+// Flags: --harmony-unicode |
+ |
+// Unicode escapes in variable names. |
+ |
+(function TestVariableNames1() { |
+ var foobar = 1; |
+ assertEquals(foob\u0061r, 1); |
+ assertEquals(foob\u{0061}r, 1); |
+ assertEquals(foob\u{61}r, 1); |
+ assertEquals(foob\u{0000000061}r, 1); |
+})(); |
+ |
+(function TestVariableNames2() { |
+ var foobar = 1; |
+ assertEquals(\u0066oobar, 1); |
+ assertEquals(\u{0066}oobar, 1); |
+ assertEquals(\u{66}oobar, 1); |
+ assertEquals(\u{0000000066}oobar, 1); |
+})(); |
+ |
+// Unicode escapes in strings. |
+ |
+(function TestStrings() { |
+ var s1 = "foob\u0061r"; |
+ assertEquals(s1, "foobar"); |
+ var s2 = "foob\u{0061}r"; |
+ assertEquals(s2, "foobar"); |
+ var s3 = "foob\u{61}r"; |
+ assertEquals(s3, "foobar"); |
+ var s4 = "foob\u{0000000061}r"; |
+ assertEquals(s4, "foobar"); |
+})(); |
+ |
+ |
+(function TestSurrogates() { |
+ // U+10E6D corresponds to the surrogate pair [U+D803, U+DE6D]. |
+ var s1 = "foo\u{10e6d}"; |
+ var s2 = "foo\u{d803}\u{de6d}"; |
+ assertEquals(s1, s2); |
+})(); |