diff options
Diffstat (limited to '')
-rw-r--r-- | js/src/tests/non262/Array/unscopables.js | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/js/src/tests/non262/Array/unscopables.js b/js/src/tests/non262/Array/unscopables.js new file mode 100644 index 0000000000..9827245445 --- /dev/null +++ b/js/src/tests/non262/Array/unscopables.js @@ -0,0 +1,61 @@ +if (typeof getBuildConfiguration === "undefined") { + var getBuildConfiguration = SpecialPowers.Cu.getJSTestingFunctions().getBuildConfiguration; +} + +var isNightly = !getBuildConfiguration().release_or_beta; + +let Array_unscopables = Array.prototype[Symbol.unscopables]; + +let desc = Reflect.getOwnPropertyDescriptor(Array.prototype, Symbol.unscopables); +assertDeepEq(desc, { + value: Array_unscopables, + writable: false, + enumerable: false, + configurable: true +}); + +assertEq(Reflect.getPrototypeOf(Array_unscopables), null); + +let desc2 = Object.getOwnPropertyDescriptor(Array_unscopables, "values"); +assertDeepEq(desc2, { + value: true, + writable: true, + enumerable: true, + configurable: true +}); + +let keys = Reflect.ownKeys(Array_unscopables); + +assertDeepEq(keys, [ + ...(isNightly ? ["at"] : []), + ...[ + "copyWithin", + "entries", + "fill", + "find", + "findIndex", + "flat", + "flatMap", + "includes", + "keys", + "values" +]]); + +for (let key of keys) + assertEq(Array_unscopables[key], true); + +// Test that it actually works +assertThrowsInstanceOf(() => { + with ([]) { + return entries; + } +}, ReferenceError); + +{ + let fill = 33; + with (Array.prototype) { + assertEq(fill, 33); + } +} + +reportCompare(0, 0); |