summaryrefslogtreecommitdiffstats
path: root/js/src/tests/non262/TypedArray/constructor-typedarray-species-other-global.js
blob: 872f46408a3c8adec774f88331f018d07e134e84 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// 22.2.4.3 TypedArray ( typedArray )

// Test [[Prototype]] of newly created typed array and its array buffer, and
// ensure they are both created in the correct global.

const thisGlobal = this;
const otherGlobal = newGlobal();

const typedArrays = [otherGlobal.eval("new Int32Array(0)")];

if (this.SharedArrayBuffer) {
    typedArrays.push(otherGlobal.eval("new Int32Array(new SharedArrayBuffer(0))"));
}

for (let typedArray of typedArrays) {
    // Ensure the "constructor" property isn't accessed.
    Object.defineProperty(typedArray.buffer, "constructor", {
        get() {
            throw new Error("constructor property accessed");
        }
    });

    for (let ctor of typedArrayConstructors) {
        let newTypedArray = new ctor(typedArray);

        assertEq(Object.getPrototypeOf(newTypedArray), ctor.prototype);
        assertEq(Object.getPrototypeOf(newTypedArray.buffer), ArrayBuffer.prototype);
        assertEq(newTypedArray.buffer.constructor, ArrayBuffer);
    }
}

if (typeof reportCompare === "function")
    reportCompare(0, 0);