diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /js/src/tests/test262/built-ins/Array/prototype/join/S15.4.4.5_A3.2_T2.js | |
parent | Initial commit. (diff) | |
download | firefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz firefox-26a029d407be480d791972afb5975cf62c9360a6.zip |
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'js/src/tests/test262/built-ins/Array/prototype/join/S15.4.4.5_A3.2_T2.js')
-rw-r--r-- | js/src/tests/test262/built-ins/Array/prototype/join/S15.4.4.5_A3.2_T2.js | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/js/src/tests/test262/built-ins/Array/prototype/join/S15.4.4.5_A3.2_T2.js b/js/src/tests/test262/built-ins/Array/prototype/join/S15.4.4.5_A3.2_T2.js new file mode 100644 index 0000000000..047a76bed6 --- /dev/null +++ b/js/src/tests/test262/built-ins/Array/prototype/join/S15.4.4.5_A3.2_T2.js @@ -0,0 +1,113 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator use ToString from array arguments +esid: sec-array.prototype.join +description: If Type(argument) is Object, evaluate ToPrimitive(argument, String) +---*/ + +var object = { + valueOf: function() { + return "+" + } +}; +var x = new Array(object); +assert.sameValue(x.join(), "[object Object]", 'x.join() must return "[object Object]"'); + +var object = { + valueOf: function() { + return "+" + }, + toString: function() { + return "*" + } +}; +var x = new Array(object); +assert.sameValue(x.join(), "*", 'x.join() must return "*"'); + +var object = { + valueOf: function() { + return "+" + }, + toString: function() { + return {} + } +}; +var x = new Array(object); +assert.sameValue(x.join(), "+", 'x.join() must return "+"'); + +try { + var object = { + valueOf: function() { + throw "error" + }, + toString: function() { + return "*" + } + }; + var x = new Array(object); + assert.sameValue(x.join(), "*", 'x.join() must return "*"'); +} +catch (e) { + assert.notSameValue(e, "error", 'The value of e is not "error"'); +} + +var object = { + toString: function() { + return "*" + } +}; +var x = new Array(object); +assert.sameValue(x.join(), "*", 'x.join() must return "*"'); + +var object = { + valueOf: function() { + return {} + }, + toString: function() { + return "*" + } +} +var x = new Array(object); +assert.sameValue(x.join(), "*", 'x.join() must return "*"'); + +try { + var object = { + valueOf: function() { + return "+" + }, + toString: function() { + throw "error" + } + }; + var x = new Array(object); + x.join(); + throw new Test262Error('#7.1: var object = {valueOf: function() {return "+"}, toString: function() {throw "error"}} var x = new Array(object); x.join() throw "error". Actual: ' + (x.join())); +} +catch (e) { + assert.sameValue(e, "error", 'The value of e is expected to be "error"'); +} + +try { + var object = { + valueOf: function() { + return {} + }, + toString: function() { + return {} + } + }; + var x = new Array(object); + x.join(); + throw new Test262Error('#8.1: var object = {valueOf: function() {return {}}, toString: function() {return {}}} var x = new Array(object); x.join() throw TypeError. Actual: ' + (x.join())); +} +catch (e) { + assert.sameValue( + e instanceof TypeError, + true, + 'The result of evaluating (e instanceof TypeError) is expected to be true' + ); +} + +reportCompare(0, 0); |