Backed out 3 changesets (bug 1892041) for causing failures on async-module-does-not...
[gecko.git] / js / src / tests / test262 / built-ins / Atomics / wait / bigint / negative-index-throws.js
blob4d976026a132d0e320c40acb8647409052fc5af7
1 // |reftest| skip-if(!this.hasOwnProperty('Atomics')||!this.hasOwnProperty('SharedArrayBuffer')||(this.hasOwnProperty('getBuildConfiguration')&&getBuildConfiguration('arm64-simulator'))) -- Atomics,SharedArrayBuffer is not enabled unconditionally, ARM64 Simulator cannot emulate atomics
2 // Copyright (C) 2018 Amal Hussein. All rights reserved.
3 // This code is governed by the BSD license found in the LICENSE file.
5 /*---
6 esid: sec-atomics.wait
7 description: >
8   Throws a RangeError is index < 0
9 info: |
10   Atomics.wait( typedArray, index, value, timeout )
12   2.Let i be ? ValidateAtomicAccess(typedArray, index).
13     ...
14       2.Let accessIndex be ? ToIndex(requestIndex).
15         ...
16         2.b If integerIndex < 0, throw a RangeError exception
17 features: [Atomics, BigInt, SharedArrayBuffer, TypedArray]
18 ---*/
20 const i64a = new BigInt64Array(
21   new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 8)
23 const poisoned = {
24   valueOf: function() {
25     throw new Test262Error('should not evaluate this code');
26   }
29 assert.throws(RangeError, function() {
30   Atomics.wait(i64a, -Infinity, poisoned, poisoned);
31 }, '`Atomics.wait(i64a, -Infinity, poisoned, poisoned)` throws RangeError');
32 assert.throws(RangeError, function() {
33   Atomics.wait(i64a, -7.999, poisoned, poisoned);
34 }, '`Atomics.wait(i64a, -7.999, poisoned, poisoned)` throws RangeError');
35 assert.throws(RangeError, function() {
36   Atomics.wait(i64a, -1, poisoned, poisoned);
37 }, '`Atomics.wait(i64a, -1, poisoned, poisoned)` throws RangeError');
38 assert.throws(RangeError, function() {
39   Atomics.wait(i64a, -300, poisoned, poisoned);
40 }, '`Atomics.wait(i64a, -300, poisoned, poisoned)` throws RangeError');
42 reportCompare(0, 0);