diff options
Diffstat (limited to 'js/src/tests/test262/built-ins/Array/prototype/shift/throws-when-this-value-length-is-writable-false.js')
-rw-r--r-- | js/src/tests/test262/built-ins/Array/prototype/shift/throws-when-this-value-length-is-writable-false.js | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/js/src/tests/test262/built-ins/Array/prototype/shift/throws-when-this-value-length-is-writable-false.js b/js/src/tests/test262/built-ins/Array/prototype/shift/throws-when-this-value-length-is-writable-false.js new file mode 100644 index 0000000000..1c03b29e68 --- /dev/null +++ b/js/src/tests/test262/built-ins/Array/prototype/shift/throws-when-this-value-length-is-writable-false.js @@ -0,0 +1,37 @@ +// Copyright (C) 2020 Sony Interactive Entertainment Inc. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-array.prototype.shift +description: > + Array#shift throws TypeError if this value's "length" property was defined with [[Writable]]: false. +info: | + Array.prototype.shift ( ) + ... + 3. If len is zero, then + a. Perform ? Set(O, "length", 0, true). + ... + 8. Perform ? Set(O, "length", len - 1, true). + + Set ( O, P, V, Throw ) + ... + 4. Let success be ? O.[[Set]](P, V, O). + 5. If success is false and Throw is true, throw a TypeError exception. +---*/ + +assert.throws(TypeError, () => { + Array.prototype.shift.call(''); +}, "Array.prototype.shift.call('')"); + +assert.throws(TypeError, () => { + Array.prototype.shift.call('abc'); +}, "Array.prototype.shift.call('abc')"); + +assert.throws(TypeError, () => { + Array.prototype.shift.call(function() {}); +}, "Array.prototype.shift.call(function() {})"); + +assert.throws(TypeError, () => { + Array.prototype.shift.call(Object.defineProperty({}, 'length', {writable: false})); +}, "Array.prototype.shift.call(Object.defineProperty({}, 'length', {writable: false}))"); + +reportCompare(0, 0); |