Backed out 2 changesets (bug 1888310, bug 1884625) for causing failures on browser_ap...
[gecko.git] / js / src / tests / test262 / built-ins / DataView / byteOffset-validated-against-initial-buffer-length.js
blob51b030b66bcd15b7eb6b6a1cf4d7d8965c9c0b24
1 // Copyright (C) 2024 André Bargull. All rights reserved.
2 // This code is governed by the BSD license found in the LICENSE file.
4 /*---
5 esid: sec-dataview-buffer-byteoffset-bytelength
6 description: >
7   The byteOffset argument is validated against the initial buffer length.
8 info: |
9   DataView ( buffer [ , byteOffset [ , byteLength ] ] )
11   ...
12   3. Let offset be ? ToIndex(byteOffset).
13   ...
14   5. Let bufferByteLength be ArrayBufferByteLength(buffer, seq-cst).
15   6. If offset > bufferByteLength, throw a RangeError exception.
16   ...
17   10. Let O be ? OrdinaryCreateFromConstructor(NewTarget, "%DataView.prototype%",
18       « [[DataView]], [[ViewedArrayBuffer]], [[ByteLength]], [[ByteOffset]] »).
19   ...
21   OrdinaryCreateFromConstructor ( constructor, intrinsicDefaultProto [ , internalSlotsList ] )
23   ...
24   2. Let proto be ? GetPrototypeFromConstructor(constructor, intrinsicDefaultProto).
25   ...
27 features: [Reflect.construct]
28 ---*/
30 let newTarget = Object.defineProperty(function(){}.bind(), "prototype", {
31   get() {
32     throw new Test262Error("GetPrototypeFromConstructor not executed");
33   }
34 });
36 // Zero length buffer.
37 let ab = new ArrayBuffer(0);
39 // Byte offset is larger than the buffer length, which is zero.
40 let byteOffset = 10;
42 assert.throws(RangeError, () => {
43   Reflect.construct(DataView, [ab, byteOffset], newTarget);
44 });
46 reportCompare(0, 0);