diff --git a/test/built-ins/TypedArrays/buffer-arg-detached.js b/test/built-ins/TypedArrays/buffer-arg-detached.js new file mode 100644 index 0000000000000000000000000000000000000000..9e112d0bcacae2f0f69c6f09be66c8c20a338a00 --- /dev/null +++ b/test/built-ins/TypedArrays/buffer-arg-detached.js @@ -0,0 +1,20 @@ +// Copyright (C) 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-typedarray-buffer-byteoffset-length +description: If TypedArray() is passed a detached buffer, throw +info: > + 22.2.4.5 TypedArray ( buffer [ , byteOffset [ , length ] ] ) + + ... + 8. If IsDetachedBuffer(buffer) is true, throw a TypeError exception. + ... +includes: [testTypedArray.js, detachArrayBuffer.js] +---*/ + +testWithTypedArrayConstructors(function(TA) { + var offset = TA.BYTES_PER_ELEMENT; + var buffer = new ArrayBuffer(3 * offset); + $DETACHBUFFER(buffer); + assert.throws(TypeError, () => new TA(buffer)); +}); diff --git a/test/built-ins/TypedArrays/byteoffset-arg-detachbuffer.js b/test/built-ins/TypedArrays/byteoffset-arg-detachbuffer.js new file mode 100644 index 0000000000000000000000000000000000000000..5f3406ce1cb4e79c65432c90965104637aebe0ea --- /dev/null +++ b/test/built-ins/TypedArrays/byteoffset-arg-detachbuffer.js @@ -0,0 +1,20 @@ +// Copyright (C) 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-typedarray-buffer-byteoffset-length +description: If TypedArray() is passed a detached buffer, throw +info: > + 22.2.4.5 TypedArray ( buffer [ , byteOffset [ , length ] ] ) + + ... + 8. If IsDetachedBuffer(buffer) is true, throw a TypeError exception. + ... +includes: [testTypedArray.js, detachArrayBuffer.js] +---*/ + +testWithTypedArrayConstructors(function(TA) { + var offset = TA.BYTES_PER_ELEMENT; + var buffer = new ArrayBuffer(3 * offset); + var byteOffset = { valueOf() { $DETACHBUFFER(buffer); return 1; } }; + assert.throws(TypeError, () => new TA(buffer, byteOffset)); +});