Index: test/mjsunit/harmony/string-raw.js |
diff --git a/test/mjsunit/harmony/string-raw.js b/test/mjsunit/harmony/string-raw.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..947086e2e9384bdb079f64d00c33679c92762e15 |
--- /dev/null |
+++ b/test/mjsunit/harmony/string-raw.js |
@@ -0,0 +1,111 @@ |
+// 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. |
+ |
+// Flags: --harmony-strings |
+ |
+(function testStringRawArity() { |
+ assertEquals(1, String.raw.length); |
+})(); |
+ |
+ |
+(function testStringRawCallSiteToObject() { |
+ assertThrows("String.raw()", TypeError); |
+})(); |
+ |
+ |
+(function testStringRawCallSiteRawToObject() { |
+ assertThrows("String.raw([])", TypeError); |
+})(); |
+ |
+ |
+(function testStringRawUndefinedLength() { |
+ var callSiteObj = []; |
+ callSiteObj.raw = {}; |
+ assertEquals("", String.raw(callSiteObj)); |
+ |
+ callSiteObj.raw = { lengt: 0 }; |
+ assertEquals("", String.raw(callSiteObj)); |
+})(); |
+ |
+ |
+(function testStringRawZeroLength() { |
+ var callSiteObj = []; |
+ callSiteObj.raw = { length: 0 }; |
+ assertEquals("", String.raw(callSiteObj)); |
+ assertEquals("", String.raw(callSiteObj, "a", "b", "c")); |
+ |
+ callSiteObj.raw = []; |
+ assertEquals("", String.raw(callSiteObj)); |
+ assertEquals("", String.raw(callSiteObj, "a", "b", "c")); |
+})(); |
+ |
+ |
+(function testStringRawNegativeLength() { |
+ var callSiteObj = []; |
+ callSiteObj.raw = { length: -85 }; |
+ assertEquals("", String.raw(callSiteObj)); |
+ assertEquals("", String.raw(callSiteObj, "a", "b", "c")); |
+ |
+ callSiteObj.raw = []; |
+ assertEquals("", String.raw(callSiteObj)); |
+ assertEquals("", String.raw(callSiteObj, "a", "b", "c")); |
+})(); |
+ |
+ |
+(function testStringRawNaNLength() { |
+ var callSiteObj = []; |
+ callSiteObj.raw = { length: NaN }; |
+ assertEquals("", String.raw(callSiteObj)); |
+ assertEquals("", String.raw(callSiteObj, "a", "b", "c")); |
+ |
+ callSiteObj.raw = []; |
+ assertEquals("", String.raw(callSiteObj)); |
+ assertEquals("", String.raw(callSiteObj, "a", "b", "c")); |
+})(); |
+ |
+ |
+(function testStringRawBasic() { |
+ var callSiteObj = []; |
+ callSiteObj.raw = ["a"]; |
+ assertEquals("a", String.raw(callSiteObj)); |
+})(); |
+ |
+ |
+(function testStringRawNoSubst() { |
+ var callSiteObj = []; |
+ callSiteObj.raw = ["a", "b"]; |
+ assertEquals("ab", String.raw(callSiteObj)); |
+})(); |
+ |
+ |
+(function testStringRawSubst() { |
+ var callSiteObj = []; |
+ callSiteObj.raw = ["a", "b"]; |
+ assertEquals("a!b", String.raw(callSiteObj, "!")); |
+ |
+ callSiteObj.raw = ["a", "b", "c"]; |
+ assertEquals("abc", String.raw(callSiteObj)); |
+ |
+ callSiteObj.raw = ["a", "b", "c"]; |
+ assertEquals("a!bc", String.raw(callSiteObj, "!")); |
+ |
+ callSiteObj.raw = ["a", "b", "c"]; |
+ assertEquals("a!b?c", String.raw(callSiteObj, "!", "?")); |
+ |
+ callSiteObj.raw = ["\n", "\r\n", "\r"]; |
+ assertEquals("\nx\r\ny\r", String.raw(callSiteObj, "x", "y")); |
+ |
+ callSiteObj.raw = ["\n", "\r\n", "\r"]; |
+ assertEquals("\n\r\r\r\n\n\r", String.raw(callSiteObj, "\r\r", "\n")); |
+})(); |
+ |
+ |
+(function testStringRawArrayLikeSubst() { |
+ var callSiteObj = []; |
+ callSiteObj.raw = {length: 2, '0':"a", '1':"b", '2':"c"}; |
+ assertEquals("axb", String.raw(callSiteObj, "x", "y")); |
+ |
+ callSiteObj.raw = {length: 4, '0':"a", '1':"b", '2':"c"}; |
+ assertEquals("axbycundefined", String.raw(callSiteObj, "x", "y")); |
+})(); |
arv (Not doing code reviews)
2014/11/14 22:54:25
You know I was going to ask for this...
Can you a
caitp (gmail)
2014/11/14 23:29:58
Great ideas =) I'll add these shortly.
arv (Not doing code reviews)
2014/11/14 23:42:18
Also some toString objects (with and without excep
|