Chromium Code Reviews| 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
|