diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
commit | 36d22d82aa202bb199967e9512281e9a53db42c9 (patch) | |
tree | 105e8c98ddea1c1e4784a60a5a6410fa416be2de /js/src/tests/non262/String/defaultvalue.js | |
parent | Initial commit. (diff) | |
download | firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip |
Adding upstream version 115.7.0esr.upstream/115.7.0esrupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | js/src/tests/non262/String/defaultvalue.js | 169 |
1 files changed, 169 insertions, 0 deletions
diff --git a/js/src/tests/non262/String/defaultvalue.js b/js/src/tests/non262/String/defaultvalue.js new file mode 100644 index 0000000000..50b4fe00df --- /dev/null +++ b/js/src/tests/non262/String/defaultvalue.js @@ -0,0 +1,169 @@ +/* + * Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/licenses/publicdomain/ + */ + +var BUGNUMBER = 645464; +var summary = + "[[DefaultValue]] behavior wrong for String with overridden valueOf/toString"; + +print(BUGNUMBER + ": " + summary); + +/************** + * BEGIN TEST * + **************/ + +// equality + +var s = new String("c"); +assertEq(s == "c", true); + +var s2 = new String(); +s2.valueOf = function() { return "foo"; }; +assertEq(s2 == "foo", true); + +var s3 = new String(); +s3.toString = function() { return "bar"; }; +assertEq(s3 == "", true); + +function testEquality() +{ + var s = new String("c"); + assertEq(s == "c", true); + + var s2 = new String(); + s2.valueOf = function() { return "foo"; }; + assertEq(s2 == "foo", true); + + var s3 = new String(); + s3.toString = function() { return "bar"; }; + assertEq(s3 == "", true); +} +testEquality(); + + +// addition of String to string + +var s = new String(); +assertEq(s + "", ""); + +var s2 = new String(); +s2.toString = function() { return "bar"; }; +assertEq(s2 + "", ""); + +var s3 = new String(); +s3.valueOf = function() { return "baz"; }; +assertEq(s3 + "", "baz"); + +function testStringAddition() +{ + var s = new String(); + assertEq(s + "", ""); + + var s2 = new String(); + s2.toString = function() { return "bar"; }; + assertEq(s2 + "", ""); + + var s3 = new String(); + s3.valueOf = function() { return "baz"; }; + assertEq(s3 + "", "baz"); +} +testStringAddition(); + + +// addition of String to String + +var s = new String(); +assertEq(s + s, ""); + +var s2 = new String(); +s2.toString = function() { return "baz"; }; +assertEq(s2 + s2, ""); + +var s3 = new String(); +s3.valueOf = function() { return "quux"; }; +assertEq(s3 + s3, "quuxquux"); + +function testNonStringAddition() +{ + var s = new String(); + assertEq(s + s, ""); + + var s2 = new String(); + s2.toString = function() { return "baz"; }; + assertEq(s2 + s2, ""); + + var s3 = new String(); + s3.valueOf = function() { return "quux"; }; + assertEq(s3 + s3, "quuxquux"); +} +testNonStringAddition(); + + +// String as bracketed property name + +var obj = { primitive: 17, valueOf: 42, toString: 8675309 }; + +var s = new String("primitive"); +assertEq(obj[s], 17); + +var s2 = new String("primitive"); +s2.valueOf = function() { return "valueOf"; } +assertEq(obj[s2], 17); + +var s3 = new String("primitive"); +s3.toString = function() { return "toString"; }; +assertEq(obj[s3], 8675309); + +function testPropertyNameToString() +{ + var obj = { primitive: 17, valueOf: 42, toString: 8675309 }; + + var s = new String("primitive"); + assertEq(obj[s], 17); + + var s2 = new String("primitive"); + s2.valueOf = function() { return "valueOf"; } + assertEq(obj[s2], 17); + + var s3 = new String("primitive"); + s3.toString = function() { return "toString"; }; + assertEq(obj[s3], 8675309); +} +testPropertyNameToString(); + + +// String as property name with |in| operator + +var s = new String(); +assertEq(s in { "": 5 }, true); + +var s2 = new String(); +s.toString = function() { return "baz"; }; +assertEq(s in { baz: 42 }, true); + +var s3 = new String(); +s3.valueOf = function() { return "quux"; }; +assertEq(s3 in { "": 17 }, true); + +function testInOperatorName() +{ + var s = new String(); + assertEq(s in { "": 5 }, true); + + var s2 = new String(); + s.toString = function() { return "baz"; }; + assertEq(s in { baz: 42 }, true); + + var s3 = new String(); + s3.valueOf = function() { return "quux"; }; + assertEq(s3 in { "": 17 }, true); +} +testInOperatorName(); + +/******************************************************************************/ + +if (typeof reportCompare === "function") + reportCompare(true, true); + +print("All tests passed!"); |