From e164657a2b21cb2ab44eb073ed952f1ca9767e05 Mon Sep 17 00:00:00 2001 From: Rick Waldron <waldron.rick@gmail.com> Date: Wed, 27 Jun 2018 12:58:02 -0400 Subject: [PATCH] Atomics: fixes to bigint variants; updated assertion messages --- test/built-ins/Atomics/Symbol.toStringTag.js | 6 +- test/built-ins/Atomics/add/bad-range.js | 6 +- .../built-ins/Atomics/add/bigint/bad-range.js | 11 +- .../Atomics/add/bigint/good-views.js | 76 +++++----- .../Atomics/add/bigint/nonshared-int-views.js | 10 +- .../Atomics/add/expected-return-value.js | 9 +- test/built-ins/Atomics/add/good-views.js | 16 +- test/built-ins/Atomics/add/non-views.js | 2 +- .../Atomics/add/nonshared-int-views.js | 6 +- .../Atomics/add/shared-nonint-views.js | 4 +- test/built-ins/Atomics/and/bad-range.js | 8 +- .../built-ins/Atomics/and/bigint/bad-range.js | 13 +- .../Atomics/and/bigint/good-views.js | 93 +++++++----- .../Atomics/and/bigint/nonshared-int-views.js | 10 +- .../Atomics/and/expected-return-value.js | 21 +-- test/built-ins/Atomics/and/good-views.js | 24 +-- test/built-ins/Atomics/and/non-views.js | 2 +- .../Atomics/and/nonshared-int-views.js | 6 +- .../Atomics/and/shared-nonint-views.js | 4 +- .../Atomics/compareExchange/bad-range.js | 8 +- .../compareExchange/bigint/bad-range.js | 13 +- .../compareExchange/bigint/good-views.js | 110 ++++++++------ .../bigint/nonshared-int-views.js | 10 +- .../compareExchange/expected-return-value.js | 8 +- .../Atomics/compareExchange/good-views.js | 18 +-- .../Atomics/compareExchange/non-views.js | 2 +- .../compareExchange/nonshared-int-views.js | 2 +- .../compareExchange/shared-nonint-views.js | 2 +- test/built-ins/Atomics/exchange/bad-range.js | 8 +- .../Atomics/exchange/bigint/bad-range.js | 11 +- .../Atomics/exchange/bigint/good-views.js | 85 ++++++----- .../exchange/bigint/nonshared-int-views.js | 10 +- .../Atomics/exchange/expected-return-value.js | 9 +- test/built-ins/Atomics/exchange/good-views.js | 18 +-- test/built-ins/Atomics/exchange/non-views.js | 2 +- .../Atomics/exchange/nonshared-int-views.js | 2 +- .../Atomics/exchange/shared-nonint-views.js | 2 +- .../Atomics/isLockFree/bigint/corner-cases.js | 52 ++++--- .../bigint/expected-return-value.js | 2 +- .../Atomics/isLockFree/corner-cases.js | 8 +- .../isLockFree/expected-return-value.js | 18 +-- test/built-ins/Atomics/load/bad-range.js | 2 +- .../Atomics/load/bigint/bad-range.js | 4 +- .../Atomics/load/bigint/good-views.js | 65 +++++---- .../load/bigint/nonshared-int-views.js | 4 +- .../Atomics/load/expected-return-value.js | 15 +- test/built-ins/Atomics/load/good-views.js | 18 +-- test/built-ins/Atomics/load/non-views.js | 2 +- .../Atomics/load/nonshared-int-views.js | 9 +- .../Atomics/load/shared-nonint-views.js | 4 +- test/built-ins/Atomics/or/bad-range.js | 2 +- test/built-ins/Atomics/or/bigint/bad-range.js | 11 +- .../built-ins/Atomics/or/bigint/good-views.js | 131 +++++++++++------ .../Atomics/or/bigint/nonshared-int-views.js | 10 +- .../Atomics/or/expected-return-value.js | 21 ++- test/built-ins/Atomics/or/good-views.js | 42 ++++-- test/built-ins/Atomics/or/non-views.js | 2 +- .../Atomics/or/nonshared-int-views.js | 6 +- .../Atomics/or/shared-nonint-views.js | 2 +- test/built-ins/Atomics/prop-desc.js | 6 +- test/built-ins/Atomics/proto.js | 6 +- test/built-ins/Atomics/store/bad-range.js | 8 +- .../Atomics/store/bigint/bad-range.js | 13 +- .../Atomics/store/bigint/good-views.js | 65 +++------ .../store/bigint/nonshared-int-views.js | 10 +- .../Atomics/store/expected-return-value.js | 19 ++- test/built-ins/Atomics/store/good-views.js | 20 ++- test/built-ins/Atomics/store/non-views.js | 2 +- .../Atomics/store/nonshared-int-views.js | 6 +- .../Atomics/store/shared-nonint-views.js | 2 +- test/built-ins/Atomics/sub/bad-range.js | 2 +- .../built-ins/Atomics/sub/bigint/bad-range.js | 13 +- .../Atomics/sub/bigint/good-views.js | 82 ++++++----- .../Atomics/sub/bigint/nonshared-int-views.js | 10 +- .../Atomics/sub/expected-return-value.js | 15 +- test/built-ins/Atomics/sub/good-views.js | 16 +- test/built-ins/Atomics/sub/non-views.js | 2 +- .../Atomics/sub/nonshared-int-views.js | 6 +- .../Atomics/sub/shared-nonint-views.js | 2 +- test/built-ins/Atomics/wait/bad-range.js | 2 +- .../Atomics/wait/bigint/bad-range.js | 4 +- .../wait/bigint/cannot-suspend-throws.js | 10 +- .../wait/bigint/false-for-timeout-agent.js | 30 ++-- .../Atomics/wait/bigint/false-for-timeout.js | 18 ++- .../Atomics/wait/bigint/good-views.js | 49 ------- .../Atomics/wait/bigint/nan-for-timeout.js | 6 +- .../wait/bigint/negative-index-throws.js | 8 +- .../wait/bigint/negative-timeout-agent.js | 8 +- .../Atomics/wait/bigint/negative-timeout.js | 6 +- .../bigint/no-spurious-wakeup-no-operation.js | 10 +- .../wait/bigint/no-spurious-wakeup-on-add.js | 12 +- .../wait/bigint/no-spurious-wakeup-on-and.js | 12 +- .../no-spurious-wakeup-on-compareExchange.js | 12 +- .../bigint/no-spurious-wakeup-on-exchange.js | 12 +- .../wait/bigint/no-spurious-wakeup-on-or.js | 12 +- .../bigint/no-spurious-wakeup-on-store.js | 12 +- .../wait/bigint/no-spurious-wakeup-on-sub.js | 12 +- .../wait/bigint/no-spurious-wakeup-on-xor.js | 12 +- .../bigint/non-bigint64-typedarray-throws.js | 8 +- .../bigint/non-shared-bufferdata-throws.js | 6 +- .../wait/bigint/null-bufferdata-throws.js | 2 +- .../wait/bigint/out-of-range-index-throws.js | 6 +- .../Atomics/wait/bigint/value-not-equal.js | 18 ++- .../waiterlist-order-of-operations-is-fifo.js | 36 +++-- .../wait/bigint/was-woken-before-timeout.js | 8 +- .../Atomics/wait/cannot-suspend-throws.js | 2 +- .../Atomics/wait/false-for-timeout-agent.js | 24 ++- .../Atomics/wait/false-for-timeout.js | 18 ++- test/built-ins/Atomics/wait/good-views.js | 18 ++- .../built-ins/Atomics/wait/nan-for-timeout.js | 4 +- .../Atomics/wait/negative-index-throws.js | 8 +- .../Atomics/wait/negative-timeout-agent.js | 8 +- .../Atomics/wait/negative-timeout.js | 6 +- .../Atomics/wait/no-spurious-wakeup-on-add.js | 10 +- .../Atomics/wait/no-spurious-wakeup-on-and.js | 10 +- .../no-spurious-wakeup-on-compareExchange.js | 10 +- .../wait/no-spurious-wakeup-on-exchange.js | 10 +- .../Atomics/wait/no-spurious-wakeup-on-or.js | 10 +- .../wait/no-spurious-wakeup-on-store.js | 10 +- .../Atomics/wait/no-spurious-wakeup-on-sub.js | 10 +- .../Atomics/wait/no-spurious-wakeup-on-xor.js | 10 +- .../wait/non-int32-typedarray-throws.js | 16 +- .../wait/non-shared-bufferdata-throws.js | 4 +- .../Atomics/wait/not-a-typedarray-throws.js | 4 +- .../Atomics/wait/not-an-object-throws.js | 14 +- .../Atomics/wait/null-bufferdata-throws.js | 2 +- .../Atomics/wait/null-for-timeout-agent.js | 24 ++- .../Atomics/wait/null-for-timeout.js | 18 ++- .../Atomics/wait/object-for-timeout-agent.js | 24 ++- .../Atomics/wait/object-for-timeout.js | 18 ++- .../Atomics/wait/out-of-range-index-throws.js | 8 +- ...oisoned-object-for-timeout-throws-agent.js | 18 ++- .../poisoned-object-for-timeout-throws.js | 4 +- .../wait/symbol-for-index-throws-agent.js | 18 ++- .../Atomics/wait/symbol-for-index-throws.js | 8 +- .../wait/symbol-for-timeout-throws-agent.js | 18 ++- .../Atomics/wait/symbol-for-timeout-throws.js | 8 +- .../wait/symbol-for-value-throws-agent.js | 18 ++- .../Atomics/wait/symbol-for-value-throws.js | 8 +- .../Atomics/wait/true-for-timeout-agent.js | 24 ++- .../Atomics/wait/true-for-timeout.js | 18 ++- .../Atomics/wait/undefined-for-timeout.js | 10 +- .../wait/undefined-index-defaults-to-zero.js | 6 +- .../built-ins/Atomics/wait/value-not-equal.js | 12 +- .../wait/wait-index-value-not-equal.js | 14 +- .../waiterlist-order-of-operations-is-fifo.js | 30 ++-- .../Atomics/wait/was-woken-before-timeout.js | 6 +- test/built-ins/Atomics/wake/bad-range.js | 2 +- .../bigint/non-bigint64-typedarray-throws.js | 4 +- .../bigint/non-shared-bufferdata-throws.js | 4 +- .../wake/bigint/null-bufferdata-throws.js | 2 +- .../Atomics/wake/bigint/wake-all-on-loc.js | 2 +- .../Atomics/wake/count-boundary-cases.js | 2 +- .../count-defaults-to-infinity-missing.js | 2 +- .../count-defaults-to-infinity-undefined.js | 2 +- .../wake/non-int32-typedarray-throws.js | 16 +- ...hared-bufferdatate-non-shared-int-views.js | 12 +- .../Atomics/wake/non-shared-int-views.js | 12 +- .../Atomics/wake/null-bufferdata-throws.js | 2 +- .../built-ins/Atomics/wake/wake-all-on-loc.js | 2 +- test/built-ins/Atomics/wake/wake-all.js | 2 +- .../Atomics/wake/wake-in-order-one-time.js | 26 +++- test/built-ins/Atomics/wake/wake-in-order.js | 26 +++- test/built-ins/Atomics/wake/wake-nan.js | 2 +- test/built-ins/Atomics/wake/wake-one.js | 2 +- .../Atomics/wake/wake-rewake-noop.js | 2 +- test/built-ins/Atomics/wake/wake-two.js | 2 +- test/built-ins/Atomics/wake/wake-zero.js | 4 +- test/built-ins/Atomics/xor/bad-range.js | 2 +- .../built-ins/Atomics/xor/bigint/bad-range.js | 2 +- .../Atomics/xor/bigint/good-views.js | 137 ++++++++++++------ .../Atomics/xor/bigint/nonshared-int-views.js | 2 +- .../Atomics/xor/expected-return-value.js | 22 ++- test/built-ins/Atomics/xor/good-views.js | 42 ++++-- test/built-ins/Atomics/xor/non-views.js | 2 +- .../Atomics/xor/nonshared-int-views.js | 2 +- .../Atomics/xor/shared-nonint-views.js | 2 +- 177 files changed, 1517 insertions(+), 1059 deletions(-) delete mode 100644 test/built-ins/Atomics/wait/bigint/good-views.js diff --git a/test/built-ins/Atomics/Symbol.toStringTag.js b/test/built-ins/Atomics/Symbol.toStringTag.js index 83d8c5695c..5ae41be231 100644 --- a/test/built-ins/Atomics/Symbol.toStringTag.js +++ b/test/built-ins/Atomics/Symbol.toStringTag.js @@ -14,7 +14,11 @@ includes: [propertyHelper.js] features: [Atomics, Symbol, Symbol.toStringTag] ---*/ -assert.sameValue(Atomics[Symbol.toStringTag], 'Atomics'); +assert.sameValue( + Atomics[Symbol.toStringTag], + 'Atomics', + 'The value of Atomics[Symbol.toStringTag] is "Atomics"' +); verifyNotEnumerable(Atomics, Symbol.toStringTag); verifyNotWritable(Atomics, Symbol.toStringTag); diff --git a/test/built-ins/Atomics/add/bad-range.js b/test/built-ins/Atomics/add/bad-range.js index fd02ea5ae3..e718c447c8 100644 --- a/test/built-ins/Atomics/add/bad-range.js +++ b/test/built-ins/Atomics/add/bad-range.js @@ -9,14 +9,14 @@ includes: [testAtomics.js, testTypedArray.js] features: [ArrayBuffer, arrow-function, Atomics, DataView, for-of, let, SharedArrayBuffer, TypedArray] ---*/ -var buffer = new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 2); -var views = intArrayConstructors.slice(); +const buffer = new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 2); +const views = intArrayConstructors.slice(); testWithTypedArrayConstructors(function(TA) { let view = new TA(buffer); testWithAtomicsOutOfBoundsIndices(function(IdxGen) { assert.throws(RangeError, function() { Atomics.add(view, IdxGen(view), 10); - }, 'Atomics.add(view, IdxGen(view), 10) throws RangeError'); + }, '`Atomics.add(view, IdxGen(view), 10)` throws RangeError'); }); }, views); diff --git a/test/built-ins/Atomics/add/bigint/bad-range.js b/test/built-ins/Atomics/add/bigint/bad-range.js index 2cc2155d67..50dbda674e 100644 --- a/test/built-ins/Atomics/add/bigint/bad-range.js +++ b/test/built-ins/Atomics/add/bigint/bad-range.js @@ -1,6 +1,5 @@ // Copyright (C) 2018 Rick Waldron. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. - /*--- esid: sec-atomics.add description: > @@ -8,14 +7,14 @@ description: > includes: [testAtomics.js, testBigIntTypedArray.js] features: [ArrayBuffer, arrow-function, Atomics, BigInt, DataView, for-of, let, SharedArrayBuffer, TypedArray] ---*/ - -var buffer = new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 2); +var buffer = new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 2); testWithBigIntTypedArrayConstructors(function(TA) { let view = new TA(buffer); + testWithAtomicsOutOfBoundsIndices(function(IdxGen) { assert.throws(RangeError, function() { - Atomics.add(view, IdxGen(view), 10); - }, 'Atomics.add(view, IdxGen(view), 10) throws RangeError'); + Atomics.add(view, IdxGen(view), 10n); + }, '`Atomics.add(view, IdxGen(view), 10n)` throws RangeError'); }); -}); +}); \ No newline at end of file diff --git a/test/built-ins/Atomics/add/bigint/good-views.js b/test/built-ins/Atomics/add/bigint/good-views.js index c3781dbfc6..5af7ffad24 100644 --- a/test/built-ins/Atomics/add/bigint/good-views.js +++ b/test/built-ins/Atomics/add/bigint/good-views.js @@ -1,53 +1,53 @@ // Copyright (C) 2018 Rick Waldron. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. - /*--- esid: sec-atomics.add description: Test Atomics.add on arrays that allow atomic operations. includes: [testAtomics.js, testBigIntTypedArray.js] features: [ArrayBuffer, arrow-function, Atomics, BigInt, DataView, for-of, let, SharedArrayBuffer, TypedArray] ---*/ - -var sab = new SharedArrayBuffer(1024); -var ab = new ArrayBuffer(16); +const sab = new SharedArrayBuffer(1024); +const ab = new ArrayBuffer(16); testWithBigIntTypedArrayConstructors(function(TA) { - // Make it interesting - use non-zero byteOffsets and non-zero indexes. - - var view = new TA(sab, 32, 20); - var control = new TA(ab, 0, 2); - - // Add positive number - view[8] = 0; - assert.sameValue(Atomics.add(view, 8, 10), 0, 'Atomics.add(view, 8, 10) returns 0'); - assert.sameValue(view[8], 10, 'The value of view[8] is 10'); - - // Add negative number - assert.sameValue(Atomics.add(view, 8, -5), 10, 'Atomics.add(view, 8, -5) returns 10'); - assert.sameValue(view[8], 5, 'The value of view[8] is 5'); - - view[3] = -5; - control[0] = -5; - assert.sameValue(Atomics.add(view, 3, 0), control[0], - 'Atomics.add(view, 3, 0) equals the value of control[0] (-5)'); - - control[0] = 12345; - view[3] = 12345; - assert.sameValue(Atomics.add(view, 3, 0), control[0], - 'Atomics.add(view, 3, 0) equals the value of control[0] (12345)'); - - control[0] = 123456789; - view[3] = 123456789; - assert.sameValue(Atomics.add(view, 3, 0), control[0], - 'Atomics.add(view, 3, 0) equals the value of control[0] (123456789)'); + const view = new TA(sab, 32, 20); + const control = new TA(ab, 0, 2); + view[8] = 0n; + assert.sameValue(Atomics.add(view, 8, 10n), 0, 'Atomics.add(view, 8, 10n) returns 0'); + assert.sameValue(view[8], 10n, 'The value of view[8] is 10n'); + assert.sameValue(Atomics.add(view, 8, -5n), 10n, 'Atomics.add(view, 8, -5n) returns 10n'); + assert.sameValue(view[8], 5n, 'The value of view[8] is 5n'); + view[3] = -5n; + control[0] = -5n; + + assert.sameValue( + Atomics.add(view, 3, 0n), + control[0], + 'Atomics.add(view, 3, 0n) returns the value of `control[0]` (-5n)' + ); + + control[0] = 12345n; + view[3] = 12345n; + + assert.sameValue( + Atomics.add(view, 3, 0n), + control[0], + 'Atomics.add(view, 3, 0n) returns the value of `control[0]` (12345n)' + ); + + control[0] = 123456789n; + view[3] = 123456789n; + + assert.sameValue( + Atomics.add(view, 3, 0n), + control[0], + 'Atomics.add(view, 3, 0n) returns the value of `control[0]` (123456789n)' + ); - // In-bounds boundary cases for indexing testWithAtomicsInBoundsIndices(function(IdxGen) { let Idx = IdxGen(view); view.fill(0); - // Atomics.store() computes an index from Idx in the same way as other - // Atomics operations, not quite like view[Idx]. - Atomics.store(view, Idx, 37); - assert.sameValue(Atomics.add(view, Idx, 0), 37, 'Atomics.add(view, Idx, 0) returns 37'); + Atomics.store(view, Idx, 37n); + assert.sameValue(Atomics.add(view, Idx, 0), 37n, 'Atomics.add(view, Idx, 0) returns 37n'); }); -}); +}); \ No newline at end of file diff --git a/test/built-ins/Atomics/add/bigint/nonshared-int-views.js b/test/built-ins/Atomics/add/bigint/nonshared-int-views.js index 72d796fd2e..1231021f15 100644 --- a/test/built-ins/Atomics/add/bigint/nonshared-int-views.js +++ b/test/built-ins/Atomics/add/bigint/nonshared-int-views.js @@ -1,6 +1,5 @@ // Copyright (C) 2018 Rick Waldron. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. - /*--- esid: sec-atomics.add description: > @@ -8,11 +7,10 @@ description: > includes: [testBigIntTypedArray.js] features: [ArrayBuffer, arrow-function, Atomics, BigInt, TypedArray] ---*/ - -var ab = new ArrayBuffer(16); +var ab = new ArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 2); testWithBigIntTypedArrayConstructors(function(TA) { assert.throws(TypeError, function() { - Atomics.add(new TA(ab), 0, 0); - }, 'Atomics.add(new TA(ab), 0, 0) throws TypeError'); -}); + Atomics.add(new TA(ab), 0, 0n); + }, '`Atomics.add(new TA(ab), 0, 0n)` throws TypeError'); +}); \ No newline at end of file diff --git a/test/built-ins/Atomics/add/expected-return-value.js b/test/built-ins/Atomics/add/expected-return-value.js index 6de926e9b3..1840a92f7a 100644 --- a/test/built-ins/Atomics/add/expected-return-value.js +++ b/test/built-ins/Atomics/add/expected-return-value.js @@ -27,9 +27,10 @@ info: | features: [Atomics, SharedArrayBuffer, TypedArray] ---*/ -var buffer = new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4); -var i32a = new Int32Array(buffer); -var newValue = 0b00000001000000001000000010000001; +const i32a = new Int32Array( + new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4) +); +const newValue = 0b00000001000000001000000010000001; assert.sameValue(Atomics.add(i32a, 0, newValue), 0, 'Atomics.add(i32a, 0, newValue) returns 0'); -assert.sameValue(i32a[0], newValue, 'The value of i32a[0] equals the value of newValue (0b00000001000000001000000010000001)'); +assert.sameValue(i32a[0], newValue, 'The value of i32a[0] equals the value of `newValue` (0b00000001000000001000000010000001)'); diff --git a/test/built-ins/Atomics/add/good-views.js b/test/built-ins/Atomics/add/good-views.js index 07731646be..9e047fbd4a 100644 --- a/test/built-ins/Atomics/add/good-views.js +++ b/test/built-ins/Atomics/add/good-views.js @@ -8,15 +8,15 @@ includes: [testAtomics.js, testTypedArray.js] features: [ArrayBuffer, arrow-function, Atomics, DataView, for-of, let, SharedArrayBuffer, TypedArray] ---*/ -var sab = new SharedArrayBuffer(1024); -var ab = new ArrayBuffer(16); -var views = intArrayConstructors.slice(); +const sab = new SharedArrayBuffer(1024); +const ab = new ArrayBuffer(16); +const views = intArrayConstructors.slice(); testWithTypedArrayConstructors(function(TA) { // Make it interesting - use non-zero byteOffsets and non-zero indexes. - var view = new TA(sab, 32, 20); - var control = new TA(ab, 0, 2); + const view = new TA(sab, 32, 20); + const control = new TA(ab, 0, 2); // Add positive number view[8] = 0; @@ -30,17 +30,17 @@ testWithTypedArrayConstructors(function(TA) { view[3] = -5; control[0] = -5; assert.sameValue(Atomics.add(view, 3, 0), control[0], - 'Atomics.add(view, 3, 0) equals the value of control[0] (-5)'); + 'Atomics.add(view, 3, 0) returns the value of `control[0]` (-5)'); control[0] = 12345; view[3] = 12345; assert.sameValue(Atomics.add(view, 3, 0), control[0], - 'Atomics.add(view, 3, 0) equals the value of control[0] (12345)'); + 'Atomics.add(view, 3, 0) returns the value of `control[0]` (12345)'); control[0] = 123456789; view[3] = 123456789; assert.sameValue(Atomics.add(view, 3, 0), control[0], - 'Atomics.add(view, 3, 0) equals the value of control[0] (123456789)'); + 'Atomics.add(view, 3, 0) returns the value of `control[0]` (123456789)'); // In-bounds boundary cases for indexing testWithAtomicsInBoundsIndices(function(IdxGen) { diff --git a/test/built-ins/Atomics/add/non-views.js b/test/built-ins/Atomics/add/non-views.js index 82711c52ab..6e5cbbd9a6 100644 --- a/test/built-ins/Atomics/add/non-views.js +++ b/test/built-ins/Atomics/add/non-views.js @@ -12,5 +12,5 @@ features: [ArrayBuffer, arrow-function, Atomics, DataView, for-of, let, SharedAr testWithAtomicsNonViewValues(function(view) { assert.throws(TypeError, function() { Atomics.add(view, 0, 0); - }, 'Atomics.add(view, 0, 0) throws TypeError'); + }, '`Atomics.add(view, 0, 0)` throws TypeError'); }); diff --git a/test/built-ins/Atomics/add/nonshared-int-views.js b/test/built-ins/Atomics/add/nonshared-int-views.js index b09f1b7c2f..fd90fa0054 100644 --- a/test/built-ins/Atomics/add/nonshared-int-views.js +++ b/test/built-ins/Atomics/add/nonshared-int-views.js @@ -9,11 +9,11 @@ includes: [testTypedArray.js] features: [ArrayBuffer, Atomics, TypedArray] ---*/ -var ab = new ArrayBuffer(16); -var views = intArrayConstructors.slice(); +const ab = new ArrayBuffer(16); +const views = intArrayConstructors.slice(); testWithTypedArrayConstructors(function(TA) { assert.throws(TypeError, function() { Atomics.add(new TA(ab), 0, 0); - }, 'Atomics.add(new TA(ab), 0, 0) throws TypeError'); + }, '`Atomics.add(new TA(ab), 0, 0)` throws TypeError'); }, views); diff --git a/test/built-ins/Atomics/add/shared-nonint-views.js b/test/built-ins/Atomics/add/shared-nonint-views.js index 505ea511c3..e3f05edf22 100644 --- a/test/built-ins/Atomics/add/shared-nonint-views.js +++ b/test/built-ins/Atomics/add/shared-nonint-views.js @@ -9,10 +9,10 @@ includes: [testTypedArray.js] features: [Atomics, SharedArrayBuffer, TypedArray] ---*/ -var buffer = new SharedArrayBuffer(1024); +const buffer = new SharedArrayBuffer(1024); testWithTypedArrayConstructors(function(TA) { assert.throws(TypeError, function() { Atomics.add(new TA(buffer), 0, 0); - }, 'Atomics.add(new TA(buffer), 0, 0) throws TypeError'); + }, '`Atomics.add(new TA(buffer), 0, 0)` throws TypeError'); }, floatArrayConstructors); diff --git a/test/built-ins/Atomics/and/bad-range.js b/test/built-ins/Atomics/and/bad-range.js index d44b4b4fbf..9bd37b2fbe 100644 --- a/test/built-ins/Atomics/and/bad-range.js +++ b/test/built-ins/Atomics/and/bad-range.js @@ -9,14 +9,14 @@ includes: [testAtomics.js, testTypedArray.js] features: [ArrayBuffer, arrow-function, Atomics, DataView, for-of, let, SharedArrayBuffer, TypedArray] ---*/ -var buffer = new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 2); -var views = intArrayConstructors.slice(); +const buffer = new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 2); +const views = intArrayConstructors.slice(); testWithTypedArrayConstructors(function(TA) { - let view = new TA(buffer); + const view = new TA(buffer); testWithAtomicsOutOfBoundsIndices(function(IdxGen) { assert.throws(RangeError, function() { Atomics.and(view, IdxGen(view), 10); - }, 'Atomics.and(view, IdxGen(view), 10) throws RangeError'); + }, '`Atomics.and(view, IdxGen(view), 10)` throws RangeError'); }); }, views); diff --git a/test/built-ins/Atomics/and/bigint/bad-range.js b/test/built-ins/Atomics/and/bigint/bad-range.js index 6e688ed178..eb75e9c687 100644 --- a/test/built-ins/Atomics/and/bigint/bad-range.js +++ b/test/built-ins/Atomics/and/bigint/bad-range.js @@ -1,6 +1,5 @@ // Copyright (C) 2018 Rick Waldron. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. - /*--- esid: sec-atomics.and description: > @@ -8,14 +7,14 @@ description: > includes: [testAtomics.js, testBigIntTypedArray.js] features: [ArrayBuffer, arrow-function, Atomics, BigInt, DataView, for-of, let, SharedArrayBuffer, TypedArray] ---*/ - -var buffer = new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 2); +const buffer = new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 2); testWithBigIntTypedArrayConstructors(function(TA) { - let view = new TA(buffer); + const view = new TA(buffer); + testWithAtomicsOutOfBoundsIndices(function(IdxGen) { assert.throws(RangeError, function() { - Atomics.and(view, IdxGen(view), 10); - }, 'Atomics.and(view, IdxGen(view), 10) throws RangeError'); + Atomics.and(view, IdxGen(view), 10n); + }, '`Atomics.and(view, IdxGen(view), 10n)` throws RangeError'); }); -}); +}); \ No newline at end of file diff --git a/test/built-ins/Atomics/and/bigint/good-views.js b/test/built-ins/Atomics/and/bigint/good-views.js index 9f31e377a0..09cad2ce44 100644 --- a/test/built-ins/Atomics/and/bigint/good-views.js +++ b/test/built-ins/Atomics/and/bigint/good-views.js @@ -1,68 +1,83 @@ // Copyright (C) 2018 Rick Waldron. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. - /*--- esid: sec-atomics.and description: Test Atomics.and on arrays that allow atomic operations includes: [testAtomics.js, testBigIntTypedArray.js] features: [ArrayBuffer, arrow-function, Atomics, BigInt, DataView, for-of, let, SharedArrayBuffer, TypedArray] ---*/ - -var sab = new SharedArrayBuffer(1024); -var ab = new ArrayBuffer(16); +const sab = new SharedArrayBuffer(1024); +const ab = new ArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 2); testWithBigIntTypedArrayConstructors(function(TA) { - // Make it interesting - use non-zero byteOffsets and non-zero indexes. + const view = new TA(sab, 32, 20); + const control = new TA(ab, 0, 2); + view[8] = 0x33333333n; + control[0] = 0x33333333n; - var view = new TA(sab, 32, 20); - var control = new TA(ab, 0, 2); + assert.sameValue( + Atomics.and(view, 8, 0x55555555n), + control[0], + 'Atomics.and(view, 8, 0x55555555n) returns the value of `control[0]` (0x33333333n)' + ); - view[8] = 0x33333333; - control[0] = 0x33333333; - assert.sameValue(Atomics.and(view, 8, 0x55555555), control[0], - 'Atomics.and(view, 8, 0x55555555) equals the value of control[0] (0x33333333)'); + control[0] = 0x11111111n; - control[0] = 0x11111111; assert.sameValue( view[8], control[0], - 'The value of view[8] equals the value of control[0] (0x11111111)' + 'The value of view[8] equals the value of `control[0]` (0x11111111n)' + ); + + assert.sameValue( + Atomics.and(view, 8, 0xF0F0F0F0n), + control[0], + 'Atomics.and(view, 8, 0xF0F0F0F0n) returns the value of `control[0]` (0x11111111n)' ); - assert.sameValue(Atomics.and(view, 8, 0xF0F0F0F0), control[0], - 'Atomics.and(view, 8, 0xF0F0F0F0) equals the value of control[0] (0x11111111)'); - control[0] = 0x10101010; + control[0] = 0x10101010n; + assert.sameValue( view[8], control[0], - 'The value of view[8] equals the value of control[0] (0x10101010)' + 'The value of view[8] equals the value of `control[0]` (0x10101010n)' ); - view[3] = -5; - control[0] = -5; - assert.sameValue(Atomics.and(view, 3, 0), control[0], - 'Atomics.and(view, 3, 0) equals the value of control[0] (-5)'); - assert.sameValue(view[3], 0, 'The value of view[3] is 0'); + view[3] = -5n; + control[0] = -5n; - control[0] = 12345; - view[3] = 12345; - assert.sameValue(Atomics.and(view, 3, 0), control[0], - 'Atomics.and(view, 3, 0) equals the value of control[0] (12345)'); - assert.sameValue(view[3], 0, 'The value of view[3] is 0'); + assert.sameValue( + Atomics.and(view, 3, 0n), + control[0], + 'Atomics.and(view, 3, 0n) returns the value of `control[0]` (-5n)' + ); + + assert.sameValue(view[3], 0n, 'The value of view[3] is 0n'); + control[0] = 12345n; + view[3] = 12345n; + + assert.sameValue( + Atomics.and(view, 3, 0n), + control[0], + 'Atomics.and(view, 3, 0n) returns the value of `control[0]` (12345n)' + ); + + assert.sameValue(view[3], 0n, 'The value of view[3] is 0n'); + control[0] = 123456789n; + view[3] = 123456789n; + + assert.sameValue( + Atomics.and(view, 3, 0n), + control[0], + 'Atomics.and(view, 3, 0n) returns the value of `control[0]` (123456789n)' + ); - control[0] = 123456789; - view[3] = 123456789; - assert.sameValue(Atomics.and(view, 3, 0), control[0], - 'Atomics.and(view, 3, 0) equals the value of control[0] (123456789)'); - assert.sameValue(view[3], 0, 'The value of view[3] is 0'); + assert.sameValue(view[3], 0n, 'The value of view[3] is 0n'); - // In-bounds boundary cases for indexing testWithAtomicsInBoundsIndices(function(IdxGen) { let Idx = IdxGen(view); - view.fill(0); - // Atomics.store() computes an index from Idx in the same way as other - // Atomics operations, not quite like view[Idx]. - Atomics.store(view, Idx, 37); - assert.sameValue(Atomics.and(view, Idx, 0), 37, 'Atomics.and(view, Idx, 0) returns 37'); + view.fill(0n); + Atomics.store(view, Idx, 37n); + assert.sameValue(Atomics.and(view, Idx, 0n), 37n, 'Atomics.and(view, Idx, 0n) returns 37n'); }); -}); +}); \ No newline at end of file diff --git a/test/built-ins/Atomics/and/bigint/nonshared-int-views.js b/test/built-ins/Atomics/and/bigint/nonshared-int-views.js index 17b270dc23..e4d86fbee4 100644 --- a/test/built-ins/Atomics/and/bigint/nonshared-int-views.js +++ b/test/built-ins/Atomics/and/bigint/nonshared-int-views.js @@ -1,6 +1,5 @@ // Copyright (C) 2018 Rick Waldron. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. - /*--- esid: sec-atomics.and description: > @@ -8,11 +7,10 @@ description: > includes: [testBigIntTypedArray.js] features: [ArrayBuffer, arrow-function, Atomics, BigInt, TypedArray] ---*/ - -var buffer = new ArrayBuffer(16); +const buffer = new ArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 2); testWithBigIntTypedArrayConstructors(function(TA) { assert.throws(TypeError, function() { - Atomics.and(new TA(buffer), 0, 0); - }, 'Atomics.and(new TA(buffer), 0, 0) throws TypeError'); -}); + Atomics.and(new TA(buffer), 0, 0n); + }, '`Atomics.and(new TA(buffer), 0, 0n)` throws TypeError'); +}); \ No newline at end of file diff --git a/test/built-ins/Atomics/and/expected-return-value.js b/test/built-ins/Atomics/and/expected-return-value.js index a9a9e5d30d..b587dfcb9a 100644 --- a/test/built-ins/Atomics/and/expected-return-value.js +++ b/test/built-ins/Atomics/and/expected-return-value.js @@ -27,18 +27,19 @@ info: | features: [Atomics, SharedArrayBuffer, TypedArray] ---*/ -var buffer = new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4); -var i32a = new Int32Array(buffer); -var initial = 0b00000001000000001000000010000001; -var other = 0b00000001111111111000000011111111; -var anded = 0b00000001000000001000000010000001; +const i32a = new Int32Array( + new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4) +); +const a = 0b00000001000000001000000010000001; +const b = 0b00000001111111111000000011111111; +const c = 0b00000001000000001000000010000001; -i32a[0] = initial; +i32a[0] = a; assert.sameValue( - Atomics.and(i32a, 0, other), - initial, - 'Atomics.and(i32a, 0, other) equals the value of `initial` (0b00000001000000001000000010000001)' + Atomics.and(i32a, 0, b), + a, + 'Atomics.and(i32a, 0, b) returns the value of `a` (0b00000001000000001000000010000001)' ); -assert.sameValue(i32a[0], anded, 'The value of i32a[0] equals the value of `anded` (0b00000001000000001000000010000001)'); +assert.sameValue(i32a[0], c, 'The value of i32a[0] equals the value of `c` (0b00000001000000001000000010000001)'); diff --git a/test/built-ins/Atomics/and/good-views.js b/test/built-ins/Atomics/and/good-views.js index d6ec3fafbb..b1dee33d0f 100644 --- a/test/built-ins/Atomics/and/good-views.js +++ b/test/built-ins/Atomics/and/good-views.js @@ -8,53 +8,53 @@ includes: [testAtomics.js, testTypedArray.js] features: [ArrayBuffer, arrow-function, Atomics, DataView, for-of, let, SharedArrayBuffer, TypedArray] ---*/ -var sab = new SharedArrayBuffer(1024); -var ab = new ArrayBuffer(16); -var views = intArrayConstructors.slice(); +const sab = new SharedArrayBuffer(1024); +const ab = new ArrayBuffer(16); +const views = intArrayConstructors.slice(); testWithTypedArrayConstructors(function(TA) { // Make it interesting - use non-zero byteOffsets and non-zero indexes. - var view = new TA(sab, 32, 20); - var control = new TA(ab, 0, 2); + const view = new TA(sab, 32, 20); + const control = new TA(ab, 0, 2); view[8] = 0x33333333; control[0] = 0x33333333; assert.sameValue(Atomics.and(view, 8, 0x55555555), control[0], - 'Atomics.and(view, 8, 0x55555555) equals the value of control[0] (0x33333333)'); + 'Atomics.and(view, 8, 0x55555555) returns the value of `control[0]` (0x33333333)'); control[0] = 0x11111111; assert.sameValue( view[8], control[0], - 'The value of view[8] equals the value of control[0] (0x11111111)' + 'The value of view[8] equals the value of `control[0]` (0x11111111)' ); assert.sameValue(Atomics.and(view, 8, 0xF0F0F0F0), control[0], - 'Atomics.and(view, 8, 0xF0F0F0F0) equals the value of control[0] (0x11111111)'); + 'Atomics.and(view, 8, 0xF0F0F0F0) returns the value of `control[0]` (0x11111111)'); control[0] = 0x10101010; assert.sameValue( view[8], control[0], - 'The value of view[8] equals the value of control[0] (0x10101010)' + 'The value of view[8] equals the value of `control[0]` (0x10101010)' ); view[3] = -5; control[0] = -5; assert.sameValue(Atomics.and(view, 3, 0), control[0], - 'Atomics.and(view, 3, 0) equals the value of control[0] (-5)'); + 'Atomics.and(view, 3, 0) returns the value of `control[0]` (-5)'); assert.sameValue(view[3], 0, 'The value of view[3] is 0'); control[0] = 12345; view[3] = 12345; assert.sameValue(Atomics.and(view, 3, 0), control[0], - 'Atomics.and(view, 3, 0) equals the value of control[0] (12345)'); + 'Atomics.and(view, 3, 0) returns the value of `control[0]` (12345)'); assert.sameValue(view[3], 0, 'The value of view[3] is 0'); control[0] = 123456789; view[3] = 123456789; assert.sameValue(Atomics.and(view, 3, 0), control[0], - 'Atomics.and(view, 3, 0) equals the value of control[0] (123456789)'); + 'Atomics.and(view, 3, 0) returns the value of `control[0]` (123456789)'); assert.sameValue(view[3], 0, 'The value of view[3] is 0'); // In-bounds boundary cases for indexing diff --git a/test/built-ins/Atomics/and/non-views.js b/test/built-ins/Atomics/and/non-views.js index 45544aee28..4b50141d8f 100644 --- a/test/built-ins/Atomics/and/non-views.js +++ b/test/built-ins/Atomics/and/non-views.js @@ -12,5 +12,5 @@ features: [ArrayBuffer, arrow-function, Atomics, DataView, for-of, let, SharedAr testWithAtomicsNonViewValues(function(view) { assert.throws(TypeError, function() { Atomics.and(view, 0, 0); - }, 'Atomics.and(view, 0, 0) throws TypeError'); + }, '`Atomics.and(view, 0, 0)` throws TypeError'); }); diff --git a/test/built-ins/Atomics/and/nonshared-int-views.js b/test/built-ins/Atomics/and/nonshared-int-views.js index b578f411ac..ab37d61c98 100644 --- a/test/built-ins/Atomics/and/nonshared-int-views.js +++ b/test/built-ins/Atomics/and/nonshared-int-views.js @@ -9,11 +9,11 @@ includes: [testTypedArray.js] features: [ArrayBuffer, Atomics, TypedArray] ---*/ -var buffer = new ArrayBuffer(16); -var views = intArrayConstructors.slice(); +const buffer = new ArrayBuffer(16); +const views = intArrayConstructors.slice(); testWithTypedArrayConstructors(function(TA) { assert.throws(TypeError, function() { Atomics.and(new TA(buffer), 0, 0); - }, 'Atomics.and(new TA(buffer), 0, 0) throws TypeError'); + }, '`Atomics.and(new TA(buffer), 0, 0)` throws TypeError'); }, views); diff --git a/test/built-ins/Atomics/and/shared-nonint-views.js b/test/built-ins/Atomics/and/shared-nonint-views.js index 3dbd81b3b8..2ba7884540 100644 --- a/test/built-ins/Atomics/and/shared-nonint-views.js +++ b/test/built-ins/Atomics/and/shared-nonint-views.js @@ -9,10 +9,10 @@ includes: [testTypedArray.js] features: [Atomics, SharedArrayBuffer, TypedArray] ---*/ -var buffer = new SharedArrayBuffer(1024); +const buffer = new SharedArrayBuffer(1024); testWithTypedArrayConstructors(function(TA) { assert.throws(TypeError, function() { Atomics.and(new TA(buffer), 0, 0); - }, 'Atomics.and(new TA(buffer), 0, 0) throws TypeError'); + }, '`Atomics.and(new TA(buffer), 0, 0)` throws TypeError'); }, floatArrayConstructors); diff --git a/test/built-ins/Atomics/compareExchange/bad-range.js b/test/built-ins/Atomics/compareExchange/bad-range.js index 9f1bcb0105..f4d007db27 100644 --- a/test/built-ins/Atomics/compareExchange/bad-range.js +++ b/test/built-ins/Atomics/compareExchange/bad-range.js @@ -9,14 +9,14 @@ includes: [testAtomics.js, testTypedArray.js] features: [ArrayBuffer, arrow-function, Atomics, DataView, for-of, let, SharedArrayBuffer, TypedArray] ---*/ -var buffer = new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 2); -var views = intArrayConstructors.slice(); +const buffer = new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 2); +const views = intArrayConstructors.slice(); testWithTypedArrayConstructors(function(TA) { - let view = new TA(buffer); + const view = new TA(buffer); testWithAtomicsOutOfBoundsIndices(function(IdxGen) { assert.throws(RangeError, function() { Atomics.compareExchange(view, IdxGen(view), 10, 0); - }, 'Atomics.compareExchange(view, IdxGen(view), 10, 0) throws RangeError'); + }, '`Atomics.compareExchange(view, IdxGen(view), 10, 0)` throws RangeError'); }); }, views); diff --git a/test/built-ins/Atomics/compareExchange/bigint/bad-range.js b/test/built-ins/Atomics/compareExchange/bigint/bad-range.js index d28f9e861d..ed0929fd87 100644 --- a/test/built-ins/Atomics/compareExchange/bigint/bad-range.js +++ b/test/built-ins/Atomics/compareExchange/bigint/bad-range.js @@ -1,6 +1,5 @@ // Copyright (C) 2018 Rick Waldron. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. - /*--- esid: sec-atomics.compareexchange description: > @@ -8,14 +7,14 @@ description: > includes: [testAtomics.js, testBigIntTypedArray.js] features: [ArrayBuffer, arrow-function, Atomics, BigInt, DataView, for-of, let, SharedArrayBuffer, TypedArray] ---*/ - -var buffer = new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 2); +const buffer = new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 2); testWithBigIntTypedArrayConstructors(function(TA) { - let view = new TA(buffer); + const view = new TA(buffer); + testWithAtomicsOutOfBoundsIndices(function(IdxGen) { assert.throws(RangeError, function() { - Atomics.compareExchange(view, IdxGen(view), 10, 0); - }, 'Atomics.compareExchange(view, IdxGen(view), 10, 0) throws RangeError'); + Atomics.compareExchange(view, IdxGen(view), 10, 0n); + }, '`Atomics.compareExchange(view, IdxGen(view), 10, 0n)` throws RangeError'); }); -}); +}); \ No newline at end of file diff --git a/test/built-ins/Atomics/compareExchange/bigint/good-views.js b/test/built-ins/Atomics/compareExchange/bigint/good-views.js index af8c26c093..c954bd52ac 100644 --- a/test/built-ins/Atomics/compareExchange/bigint/good-views.js +++ b/test/built-ins/Atomics/compareExchange/bigint/good-views.js @@ -1,73 +1,91 @@ // Copyright (C) 2018 Rick Waldron. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. - /*--- esid: sec-atomics.compareexchange description: Test Atomics.compareExchange on arrays that allow atomic operations. includes: [testAtomics.js, testBigIntTypedArray.js] features: [ArrayBuffer, arrow-function, Atomics, BigInt, DataView, for-of, let, SharedArrayBuffer, TypedArray] ---*/ - -var sab = new SharedArrayBuffer(1024); -var ab = new ArrayBuffer(16); +const sab = new SharedArrayBuffer(1024); +const ab = new ArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 2); testWithBigIntTypedArrayConstructors(function(TA) { - // Make it interesting - use non-zero byteOffsets and non-zero indexes. + const view = new TA(sab, 32, 20); + const control = new TA(ab, 0, 2); + view[8] = 0n; + + assert.sameValue( + Atomics.compareExchange(view, 8, 0n, 10n), + 0n, + 'Atomics.compareExchange(view, 8, 0n, 10n) returns 0n' + ); + + assert.sameValue(view[8], 10n, 'The value of view[8] is 10n'); + view[8] = 0n; + + assert.sameValue( + Atomics.compareExchange(view, 8, 1n, 10n), + 0n, + 'Atomics.compareExchange(view, 8, 1n, 10n) returns 0n' + ); + + assert.sameValue(view[8], 0n, 'The value of view[8] is 0n'); + view[8] = 0n; - var view = new TA(sab, 32, 20); - var control = new TA(ab, 0, 2); + assert.sameValue( + Atomics.compareExchange(view, 8, 0n, -5n), + 0n, + 'Atomics.compareExchange(view, 8, 0n, -5n) returns 0n' + ); + + control[0] = -5n; - // Performs the exchange - view[8] = 0; assert.sameValue( - Atomics.compareExchange(view, 8, 0, 10), - 0, - 'Atomics.compareExchange(view, 8, 0, 10) returns 0' + view[8], + control[0], + 'The value of view[8] equals the value of `control[0]` (-5n)' ); - assert.sameValue(view[8], 10, 'The value of view[8] is 10'); - view[8] = 0; - assert.sameValue(Atomics.compareExchange(view, 8, 1, 10), 0, - 'Atomics.compareExchange(view, 8, 1, 10) returns 0'); - assert.sameValue(view[8], 0, 'The value of view[8] is 0'); + view[3] = -5n; + control[0] = -5n; - view[8] = 0; - assert.sameValue(Atomics.compareExchange(view, 8, 0, -5), 0, - 'Atomics.compareExchange(view, 8, 0, -5) returns 0'); - control[0] = -5; - assert.sameValue(view[8], control[0], 'The value of view[8] equals the value of control[0] (-5)'); + assert.sameValue( + Atomics.compareExchange(view, 3, -5n, 0n), + control[0], + 'Atomics.compareExchange(view, 3, -5n, 0n) returns the value of `control[0]` (-5n)' + ); + assert.sameValue(view[3], 0n, 'The value of view[3] is 0n'); + control[0] = 12345n; + view[3] = 12345n; - view[3] = -5; - control[0] = -5; - assert.sameValue(Atomics.compareExchange(view, 3, -5, 0), control[0], - 'Atomics.compareExchange(view, 3, -5, 0) equals the value of control[0] (-5)'); - assert.sameValue(view[3], 0, 'The value of view[3] is 0'); + assert.sameValue( + Atomics.compareExchange(view, 3, 12345n, 0n), + control[0], + 'Atomics.compareExchange(view, 3, 12345n, 0n) returns the value of `control[0]` (12345n)' + ); + assert.sameValue(view[3], 0n, 'The value of view[3] is 0n'); + control[0] = 123456789n; + view[3] = 123456789n; - control[0] = 12345; - view[3] = 12345; - assert.sameValue(Atomics.compareExchange(view, 3, 12345, 0), control[0], - 'Atomics.compareExchange(view, 3, 12345, 0) equals the value of control[0] (12345)'); - assert.sameValue(view[3], 0, 'The value of view[3] is 0'); + assert.sameValue( + Atomics.compareExchange(view, 3, 123456789n, 0n), + control[0], + 'Atomics.compareExchange(view, 3, 123456789n, 0n) returns the value of `control[0]` (123456789n)' + ); - control[0] = 123456789; - view[3] = 123456789; - assert.sameValue(Atomics.compareExchange(view, 3, 123456789, 0), control[0], - 'Atomics.compareExchange(view, 3, 123456789, 0) equals the value of control[0] (123456789)'); - assert.sameValue(view[3], 0, 'The value of view[3] is 0'); + assert.sameValue(view[3], 0n, 'The value of view[3] is 0n'); - // In-bounds boundary cases for indexing testWithAtomicsInBoundsIndices(function(IdxGen) { let Idx = IdxGen(view); - view.fill(0); - // Atomics.store() computes an index from Idx in the same way as other - // Atomics operations, not quite like view[Idx]. - Atomics.store(view, Idx, 37); + view.fill(0n); + Atomics.store(view, Idx, 37n); + assert.sameValue( - Atomics.compareExchange(view, Idx, 37, 0), - 37, - 'Atomics.compareExchange(view, Idx, 37, 0) returns 37' + Atomics.compareExchange(view, Idx, 37n, 0n), + 37n, + 'Atomics.compareExchange(view, Idx, 37n, 0n) returns 37n' ); }); -}); +}); \ No newline at end of file diff --git a/test/built-ins/Atomics/compareExchange/bigint/nonshared-int-views.js b/test/built-ins/Atomics/compareExchange/bigint/nonshared-int-views.js index 5efe40c8e6..ad4cb89f10 100644 --- a/test/built-ins/Atomics/compareExchange/bigint/nonshared-int-views.js +++ b/test/built-ins/Atomics/compareExchange/bigint/nonshared-int-views.js @@ -1,6 +1,5 @@ // Copyright (C) 2018 Rick Waldron. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. - /*--- esid: sec-atomics.compareexchange description: > @@ -8,11 +7,10 @@ description: > includes: [testBigIntTypedArray.js] features: [ArrayBuffer, arrow-function, Atomics, BigInt, TypedArray] ---*/ - -var buffer = new ArrayBuffer(16); +const buffer = new ArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 2); testWithBigIntTypedArrayConstructors(function(TA) { assert.throws(TypeError, function() { - Atomics.compareExchange(new TA(buffer), 0, 0, 0); - }, 'Atomics.compareExchange(new TA(buffer), 0, 0, 0) throws TypeError'); -}); + Atomics.compareExchange(new TA(buffer), 0, 0n, 0n); + }, '`Atomics.compareExchange(new TA(buffer), 0, 0n, 0n)` throws TypeError'); +}); \ No newline at end of file diff --git a/test/built-ins/Atomics/compareExchange/expected-return-value.js b/test/built-ins/Atomics/compareExchange/expected-return-value.js index 5810279b14..9af90bae7b 100644 --- a/test/built-ins/Atomics/compareExchange/expected-return-value.js +++ b/test/built-ins/Atomics/compareExchange/expected-return-value.js @@ -26,15 +26,15 @@ info: | features: [Atomics, SharedArrayBuffer, TypedArray] ---*/ -var buffer = new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4); -var i32a = new Int32Array(buffer); -var update = 0b00000001000000001000000010000001; +const buffer = new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4); +const i32a = new Int32Array(buffer); +const update = 0b00000001000000001000000010000001; i32a[0] = update; assert.sameValue( Atomics.compareExchange(i32a, 0, update, 0), update, - 'Atomics.compareExchange(i32a, 0, update, 0) equals the value of update (0b00000001000000001000000010000001)' + 'Atomics.compareExchange(i32a, 0, update, 0) returns the value of `update` (0b00000001000000001000000010000001)' ); assert.sameValue(i32a[0], 0, 'The value of i32a[0] is 0'); diff --git a/test/built-ins/Atomics/compareExchange/good-views.js b/test/built-ins/Atomics/compareExchange/good-views.js index 091414b496..bc9d29af7f 100644 --- a/test/built-ins/Atomics/compareExchange/good-views.js +++ b/test/built-ins/Atomics/compareExchange/good-views.js @@ -8,15 +8,15 @@ includes: [testAtomics.js, testTypedArray.js] features: [ArrayBuffer, arrow-function, Atomics, DataView, for-of, let, SharedArrayBuffer, TypedArray] ---*/ -var sab = new SharedArrayBuffer(1024); -var ab = new ArrayBuffer(16); -var views = intArrayConstructors.slice(); +const sab = new SharedArrayBuffer(1024); +const ab = new ArrayBuffer(16); +const views = intArrayConstructors.slice(); testWithTypedArrayConstructors(function(TA) { // Make it interesting - use non-zero byteOffsets and non-zero indexes. - var view = new TA(sab, 32, 20); - var control = new TA(ab, 0, 2); + const view = new TA(sab, 32, 20); + const control = new TA(ab, 0, 2); // Performs the exchange view[8] = 0; @@ -36,26 +36,26 @@ testWithTypedArrayConstructors(function(TA) { assert.sameValue(Atomics.compareExchange(view, 8, 0, -5), 0, 'Atomics.compareExchange(view, 8, 0, -5) returns 0'); control[0] = -5; - assert.sameValue(view[8], control[0], 'The value of view[8] equals the value of control[0] (-5)'); + assert.sameValue(view[8], control[0], 'The value of view[8] equals the value of `control[0]` (-5)'); view[3] = -5; control[0] = -5; assert.sameValue(Atomics.compareExchange(view, 3, -5, 0), control[0], - 'Atomics.compareExchange(view, 3, -5, 0) equals the value of control[0] (-5)'); + 'Atomics.compareExchange(view, 3, -5, 0) returns the value of `control[0]` (-5)'); assert.sameValue(view[3], 0, 'The value of view[3] is 0'); control[0] = 12345; view[3] = 12345; assert.sameValue(Atomics.compareExchange(view, 3, 12345, 0), control[0], - 'Atomics.compareExchange(view, 3, 12345, 0) equals the value of control[0] (12345)'); + 'Atomics.compareExchange(view, 3, 12345, 0) returns the value of `control[0]` (12345)'); assert.sameValue(view[3], 0, 'The value of view[3] is 0'); control[0] = 123456789; view[3] = 123456789; assert.sameValue(Atomics.compareExchange(view, 3, 123456789, 0), control[0], - 'Atomics.compareExchange(view, 3, 123456789, 0) equals the value of control[0] (123456789)'); + 'Atomics.compareExchange(view, 3, 123456789, 0) returns the value of `control[0]` (123456789)'); assert.sameValue(view[3], 0, 'The value of view[3] is 0'); // In-bounds boundary cases for indexing diff --git a/test/built-ins/Atomics/compareExchange/non-views.js b/test/built-ins/Atomics/compareExchange/non-views.js index 2f49a21c90..f32827e594 100644 --- a/test/built-ins/Atomics/compareExchange/non-views.js +++ b/test/built-ins/Atomics/compareExchange/non-views.js @@ -12,5 +12,5 @@ features: [ArrayBuffer, arrow-function, Atomics, DataView, for-of, let, SharedAr testWithAtomicsNonViewValues(function(view) { assert.throws(TypeError, function() { Atomics.compareExchange(view, 0, 0, 0); - }, 'Atomics.compareExchange(view, 0, 0, 0) throws TypeError'); + }, '`Atomics.compareExchange(view, 0, 0, 0)` throws TypeError'); }); diff --git a/test/built-ins/Atomics/compareExchange/nonshared-int-views.js b/test/built-ins/Atomics/compareExchange/nonshared-int-views.js index d1477aa0be..2ffd28d66a 100644 --- a/test/built-ins/Atomics/compareExchange/nonshared-int-views.js +++ b/test/built-ins/Atomics/compareExchange/nonshared-int-views.js @@ -15,5 +15,5 @@ var views = intArrayConstructors.slice(); testWithTypedArrayConstructors(function(TA) { assert.throws(TypeError, function() { Atomics.compareExchange(new TA(buffer), 0, 0, 0); - }, 'Atomics.compareExchange(new TA(buffer), 0, 0, 0) throws TypeError'); + }, '`Atomics.compareExchange(new TA(buffer), 0, 0, 0)` throws TypeError'); }, views); diff --git a/test/built-ins/Atomics/compareExchange/shared-nonint-views.js b/test/built-ins/Atomics/compareExchange/shared-nonint-views.js index 3160bc4419..e0590d6e8b 100644 --- a/test/built-ins/Atomics/compareExchange/shared-nonint-views.js +++ b/test/built-ins/Atomics/compareExchange/shared-nonint-views.js @@ -14,5 +14,5 @@ var buffer = new SharedArrayBuffer(1024); testWithTypedArrayConstructors(function(TA) { assert.throws(TypeError, function() { Atomics.compareExchange(new TA(buffer), 0, 0, 0); - }, 'Atomics.compareExchange(new TA(buffer), 0, 0, 0) throws TypeError'); + }, '`Atomics.compareExchange(new TA(buffer), 0, 0, 0)` throws TypeError'); }, floatArrayConstructors); diff --git a/test/built-ins/Atomics/exchange/bad-range.js b/test/built-ins/Atomics/exchange/bad-range.js index 80163b287f..330f3333cc 100644 --- a/test/built-ins/Atomics/exchange/bad-range.js +++ b/test/built-ins/Atomics/exchange/bad-range.js @@ -9,14 +9,14 @@ includes: [testAtomics.js, testTypedArray.js] features: [ArrayBuffer, arrow-function, Atomics, DataView, for-of, let, SharedArrayBuffer, TypedArray] ---*/ -var buffer = new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 2); -var views = intArrayConstructors.slice(); +const buffer = new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 2); +const views = intArrayConstructors.slice(); testWithTypedArrayConstructors(function(TA) { - let view = new TA(buffer); + const view = new TA(buffer); testWithAtomicsOutOfBoundsIndices(function(IdxGen) { assert.throws(RangeError, function() { Atomics.exchange(view, IdxGen(view), 10, 0); - }, 'Atomics.exchange(view, IdxGen(view), 10, 0) throws RangeError'); + }, '`Atomics.exchange(view, IdxGen(view), 10, 0)` throws RangeError'); }); }, views); diff --git a/test/built-ins/Atomics/exchange/bigint/bad-range.js b/test/built-ins/Atomics/exchange/bigint/bad-range.js index 659d375970..b2326d0fa7 100644 --- a/test/built-ins/Atomics/exchange/bigint/bad-range.js +++ b/test/built-ins/Atomics/exchange/bigint/bad-range.js @@ -1,6 +1,5 @@ // Copyright (C) 2018 Rick Waldron. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. - /*--- esid: sec-atomics.exchange description: > @@ -8,14 +7,14 @@ description: > includes: [testAtomics.js, testBigIntTypedArray.js] features: [ArrayBuffer, arrow-function, Atomics, BigInt, DataView, for-of, let, SharedArrayBuffer, TypedArray] ---*/ - -var buffer = new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 2); +var buffer = new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 2); testWithBigIntTypedArrayConstructors(function(TA) { let view = new TA(buffer); + testWithAtomicsOutOfBoundsIndices(function(IdxGen) { assert.throws(RangeError, function() { - Atomics.exchange(view, IdxGen(view), 10, 0); - }, 'Atomics.exchange(view, IdxGen(view), 10, 0) throws RangeError'); + Atomics.exchange(view, IdxGen(view), 10n, 0n); + }, '`Atomics.exchange(view, IdxGen(view), 10n, 0n)` throws RangeError'); }); -}); +}); \ No newline at end of file diff --git a/test/built-ins/Atomics/exchange/bigint/good-views.js b/test/built-ins/Atomics/exchange/bigint/good-views.js index cca30e8aeb..9c2cacc45b 100644 --- a/test/built-ins/Atomics/exchange/bigint/good-views.js +++ b/test/built-ins/Atomics/exchange/bigint/good-views.js @@ -1,54 +1,71 @@ // Copyright (C) 2018 Rick Waldron. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. - /*--- esid: sec-atomics.exchange description: Test Atomics.exchange on arrays that allow atomic operations. includes: [testAtomics.js, testBigIntTypedArray.js] features: [ArrayBuffer, arrow-function, Atomics, BigInt, DataView, for-of, let, SharedArrayBuffer, TypedArray] ---*/ - -var sab = new SharedArrayBuffer(1024); -var ab = new ArrayBuffer(16); +const sab = new SharedArrayBuffer(1024); +const ab = new ArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 2); testWithBigIntTypedArrayConstructors(function(TA) { - // Make it interesting - use non-zero byteOffsets and non-zero indexes. + const view = new TA(sab, 32, 20); + const control = new TA(ab, 0, 2); + view[8] = 0n; + assert.sameValue(Atomics.exchange(view, 8, 10n), 0n, 'Atomics.exchange(view, 8, 10n) returns 0n'); + assert.sameValue(view[8], 10n, 'The value of view[8] is 10n'); + + assert.sameValue( + Atomics.exchange(view, 8, -5n), + 10n, + 'Atomics.exchange(view, 8, -5n) returns 10n' + ); - var view = new TA(sab, 32, 20); - var control = new TA(ab, 0, 2); + control[0] = -5n; - view[8] = 0; - assert.sameValue(Atomics.exchange(view, 8, 10), 0, - 'Atomics.exchange(view, 8, 10) returns 0'); - assert.sameValue(view[8], 10, 'The value of view[8] is 10'); + assert.sameValue( + view[8], + control[0], + 'The value of view[8] equals the value of `control[0]` (-5n)' + ); - assert.sameValue(Atomics.exchange(view, 8, -5), 10, - 'Atomics.exchange(view, 8, -5) returns 10'); - control[0] = -5; - assert.sameValue(view[8], control[0], 'The value of view[8] equals the value of control[0] (-5)'); + view[3] = -5n; + control[0] = -5n; - view[3] = -5; - control[0] = -5; - assert.sameValue(Atomics.exchange(view, 3, 0), control[0], - 'Atomics.exchange(view, 3, 0) equals the value of control[0] (-5)'); + assert.sameValue( + Atomics.exchange(view, 3, 0n), + control[0], + 'Atomics.exchange(view, 3, 0n) returns the value of `control[0]` (-5n)' + ); - control[0] = 12345; - view[3] = 12345; - assert.sameValue(Atomics.exchange(view, 3, 0), control[0], - 'Atomics.exchange(view, 3, 0) equals the value of control[0] (12345)'); + control[0] = 12345n; + view[3] = 12345n; - control[0] = 123456789; - view[3] = 123456789; - assert.sameValue(Atomics.exchange(view, 3, 0), control[0], - 'Atomics.exchange(view, 3, 0) equals the value of control[0] (123456789)'); + assert.sameValue( + Atomics.exchange(view, 3, 0n), + control[0], + 'Atomics.exchange(view, 3, 0n) returns the value of `control[0]` (12345n)' + ); + + control[0] = 123456789n; + view[3] = 123456789n; + + assert.sameValue( + Atomics.exchange(view, 3, 0n), + control[0], + 'Atomics.exchange(view, 3, 0n) returns the value of `control[0]` (123456789n)' + ); - // In-bounds boundary cases for indexing testWithAtomicsInBoundsIndices(function(IdxGen) { let Idx = IdxGen(view); - view.fill(0); - // Atomics.store() computes an index from Idx in the same way as other - // Atomics operations, not quite like view[Idx]. - Atomics.store(view, Idx, 37); - assert.sameValue(Atomics.exchange(view, Idx, 0), 37, 'Atomics.exchange(view, Idx, 0) returns 37'); + view.fill(0n); + Atomics.store(view, Idx, 37n); + + assert.sameValue( + Atomics.exchange(view, Idx, 0n), + 37n, + 'Atomics.exchange(view, Idx, 0n) returns 37n' + ); }); -}); +}); \ No newline at end of file diff --git a/test/built-ins/Atomics/exchange/bigint/nonshared-int-views.js b/test/built-ins/Atomics/exchange/bigint/nonshared-int-views.js index 8a2d2a8259..c5fc8213b5 100644 --- a/test/built-ins/Atomics/exchange/bigint/nonshared-int-views.js +++ b/test/built-ins/Atomics/exchange/bigint/nonshared-int-views.js @@ -1,6 +1,5 @@ // Copyright (C) 2018 Rick Waldron. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. - /*--- esid: sec-atomics.exchange description: > @@ -8,11 +7,10 @@ description: > includes: [testBigIntTypedArray.js] features: [ArrayBuffer, arrow-function, Atomics, BigInt, TypedArray] ---*/ - -var buffer = new ArrayBuffer(16); +var buffer = new ArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 2); testWithBigIntTypedArrayConstructors(function(TA) { assert.throws(TypeError, function() { - Atomics.exchange(new TA(buffer), 0, 0); - }, 'Atomics.exchange(new TA(buffer), 0, 0) throws TypeError'); -}); + Atomics.exchange(new TA(buffer), 0n, 0n); + }, '`Atomics.exchange(new TA(buffer), 0n, 0n)` throws TypeError'); +}); \ No newline at end of file diff --git a/test/built-ins/Atomics/exchange/expected-return-value.js b/test/built-ins/Atomics/exchange/expected-return-value.js index 58eab15ef4..ef2e979928 100644 --- a/test/built-ins/Atomics/exchange/expected-return-value.js +++ b/test/built-ins/Atomics/exchange/expected-return-value.js @@ -27,9 +27,10 @@ info: | features: [Atomics, SharedArrayBuffer, TypedArray] ---*/ -var buffer = new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4); -var i32a = new Int32Array(buffer); -var update = 0b00000001000000001000000010000001; +const i32a = new Int32Array( + new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4) +); +const update = 0b00000001000000001000000010000001; assert.sameValue( Atomics.exchange(i32a, 0, update), @@ -39,5 +40,5 @@ assert.sameValue( assert.sameValue( i32a[0], update, - 'The value of i32a[0] equals the value of update (0b00000001000000001000000010000001)' + 'The value of i32a[0] equals the value of `update` (0b00000001000000001000000010000001)' ); diff --git a/test/built-ins/Atomics/exchange/good-views.js b/test/built-ins/Atomics/exchange/good-views.js index d0a21d455e..c3f63ab9e0 100644 --- a/test/built-ins/Atomics/exchange/good-views.js +++ b/test/built-ins/Atomics/exchange/good-views.js @@ -8,15 +8,15 @@ includes: [testAtomics.js, testTypedArray.js] features: [ArrayBuffer, arrow-function, Atomics, DataView, for-of, let, SharedArrayBuffer, TypedArray] ---*/ -var sab = new SharedArrayBuffer(1024); -var ab = new ArrayBuffer(16); -var views = intArrayConstructors.slice(); +const sab = new SharedArrayBuffer(1024); +const ab = new ArrayBuffer(16); +const views = intArrayConstructors.slice(); testWithTypedArrayConstructors(function(TA) { // Make it interesting - use non-zero byteOffsets and non-zero indexes. - var view = new TA(sab, 32, 20); - var control = new TA(ab, 0, 2); + const view = new TA(sab, 32, 20); + const control = new TA(ab, 0, 2); view[8] = 0; assert.sameValue(Atomics.exchange(view, 8, 10), 0, @@ -26,22 +26,22 @@ testWithTypedArrayConstructors(function(TA) { assert.sameValue(Atomics.exchange(view, 8, -5), 10, 'Atomics.exchange(view, 8, -5) returns 10'); control[0] = -5; - assert.sameValue(view[8], control[0], 'The value of view[8] equals the value of control[0] (-5)'); + assert.sameValue(view[8], control[0], 'The value of view[8] equals the value of `control[0]` (-5)'); view[3] = -5; control[0] = -5; assert.sameValue(Atomics.exchange(view, 3, 0), control[0], - 'Atomics.exchange(view, 3, 0) equals the value of control[0] (-5)'); + 'Atomics.exchange(view, 3, 0) returns the value of `control[0]` (-5)'); control[0] = 12345; view[3] = 12345; assert.sameValue(Atomics.exchange(view, 3, 0), control[0], - 'Atomics.exchange(view, 3, 0) equals the value of control[0] (12345)'); + 'Atomics.exchange(view, 3, 0) returns the value of `control[0]` (12345)'); control[0] = 123456789; view[3] = 123456789; assert.sameValue(Atomics.exchange(view, 3, 0), control[0], - 'Atomics.exchange(view, 3, 0) equals the value of control[0] (123456789)'); + 'Atomics.exchange(view, 3, 0) returns the value of `control[0]` (123456789)'); // In-bounds boundary cases for indexing testWithAtomicsInBoundsIndices(function(IdxGen) { diff --git a/test/built-ins/Atomics/exchange/non-views.js b/test/built-ins/Atomics/exchange/non-views.js index 02a899ec4f..20e1acda7e 100644 --- a/test/built-ins/Atomics/exchange/non-views.js +++ b/test/built-ins/Atomics/exchange/non-views.js @@ -12,5 +12,5 @@ features: [ArrayBuffer, arrow-function, Atomics, DataView, for-of, let, SharedAr testWithAtomicsNonViewValues(function(view) { assert.throws(TypeError, function() { Atomics.exchange(view, 0, 0); - }, 'Atomics.exchange(view, 0, 0) throws TypeError'); + }, '`Atomics.exchange(view, 0, 0)` throws TypeError'); }); diff --git a/test/built-ins/Atomics/exchange/nonshared-int-views.js b/test/built-ins/Atomics/exchange/nonshared-int-views.js index 8de5815f5f..f3514d1165 100644 --- a/test/built-ins/Atomics/exchange/nonshared-int-views.js +++ b/test/built-ins/Atomics/exchange/nonshared-int-views.js @@ -15,5 +15,5 @@ var views = intArrayConstructors.slice(); testWithTypedArrayConstructors(function(TA) { assert.throws(TypeError, function() { Atomics.exchange(new TA(buffer), 0, 0); - }, 'Atomics.exchange(new TA(buffer), 0, 0) throws TypeError'); + }, '`Atomics.exchange(new TA(buffer), 0, 0)` throws TypeError'); }, views); diff --git a/test/built-ins/Atomics/exchange/shared-nonint-views.js b/test/built-ins/Atomics/exchange/shared-nonint-views.js index c3e4ad4d0a..371c9e191f 100644 --- a/test/built-ins/Atomics/exchange/shared-nonint-views.js +++ b/test/built-ins/Atomics/exchange/shared-nonint-views.js @@ -14,5 +14,5 @@ var buffer = new SharedArrayBuffer(1024); testWithTypedArrayConstructors(function(TA) { assert.throws(TypeError, function() { Atomics.exchange(new TA(buffer), 0, 0); - }, 'Atomics.exchange(new TA(buffer), 0, 0) throws TypeError'); + }, '`Atomics.exchange(new TA(buffer), 0, 0)` throws TypeError'); }, floatArrayConstructors); diff --git a/test/built-ins/Atomics/isLockFree/bigint/corner-cases.js b/test/built-ins/Atomics/isLockFree/bigint/corner-cases.js index ee48ff883c..51958fe100 100644 --- a/test/built-ins/Atomics/isLockFree/bigint/corner-cases.js +++ b/test/built-ins/Atomics/isLockFree/bigint/corner-cases.js @@ -1,6 +1,5 @@ // Copyright (C) 2018 Rick Waldron. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. - /*--- esid: sec-atomics.islockfree description: > @@ -8,22 +7,24 @@ description: > features: [arrow-function, Atomics, SharedArrayBuffer, ArrayBuffer, DataView, BigInt, let, TypedArray, for-of] includes: [testAtomics.js, testBigIntTypedArray.js] ---*/ - assert.sameValue( Atomics.isLockFree(hide(3, Number.NaN)), false, 'Atomics.isLockFree(hide(3, Number.NaN)) returns false' ); + assert.sameValue( Atomics.isLockFree(hide(3, -1)), false, 'Atomics.isLockFree(hide(3, -1)) returns false' ); + assert.sameValue( Atomics.isLockFree(hide(3, 3.14)), false, 'Atomics.isLockFree(hide(3, 3.14)) returns false' ); + assert.sameValue( Atomics.isLockFree(hide(3, 0)), false, @@ -33,12 +34,13 @@ assert.sameValue( assert.sameValue( Atomics.isLockFree('1'), Atomics.isLockFree(1), - 'Atomics.isLockFree(\'1\') returns Atomics.isLockFree(1)' + 'Atomics.isLockFree("1") returns Atomics.isLockFree(1)' ); + assert.sameValue( Atomics.isLockFree('3'), Atomics.isLockFree(3), - 'Atomics.isLockFree(\'3\') returns Atomics.isLockFree(3)' + 'Atomics.isLockFree("3") returns Atomics.isLockFree(3)' ); assert.sameValue( @@ -47,30 +49,26 @@ assert.sameValue( 'Atomics.isLockFree(true) returns Atomics.isLockFree(1)' ); -assert.sameValue( - Atomics.isLockFree(1), - Atomics.isLockFree({valueOf: () => 1}), - 'Atomics.isLockFree(1) returns Atomics.isLockFree({valueOf: () => 1})' -); -assert.sameValue( - Atomics.isLockFree(3), - Atomics.isLockFree({valueOf: () => 3}), - 'Atomics.isLockFree(3) returns Atomics.isLockFree({valueOf: () => 3})' -); -assert.sameValue( - Atomics.isLockFree(1), - Atomics.isLockFree({toString: () => '1'}), - 'Atomics.isLockFree(1) returns Atomics.isLockFree({toString: () => \'1\'})' -); -assert.sameValue( - Atomics.isLockFree(3), - Atomics.isLockFree({toString: () => '3'}), - 'Atomics.isLockFree(3) returns Atomics.isLockFree({toString: () => \'3\'})' -); +assert.sameValue(Atomics.isLockFree(1), Atomics.isLockFree({ + valueOf: () => 1 +}), 'Atomics.isLockFree(1) returns Atomics.isLockFree({\n valueOf: () => 1\n})'); + +assert.sameValue(Atomics.isLockFree(3), Atomics.isLockFree({ + valueOf: () => 3 +}), 'Atomics.isLockFree(3) returns Atomics.isLockFree({\n valueOf: () => 3\n})'); + +assert.sameValue(Atomics.isLockFree(1), Atomics.isLockFree({ + toString: () => '1' +}), 'Atomics.isLockFree(1) returns Atomics.isLockFree({\n toString: () => "1"\n})'); + +assert.sameValue(Atomics.isLockFree(3), Atomics.isLockFree({ + toString: () => '3' +}), 'Atomics.isLockFree(3) returns Atomics.isLockFree({\n toString: () => "3"\n})'); function hide(k, x) { if (k) { - return hide(k - 3, x) + x; + return BigInt(hide(k - 3, x) + x); } - return 0; -} + + return 0n; +} \ No newline at end of file diff --git a/test/built-ins/Atomics/isLockFree/bigint/expected-return-value.js b/test/built-ins/Atomics/isLockFree/bigint/expected-return-value.js index 69cad37db6..b73f2901c8 100644 --- a/test/built-ins/Atomics/isLockFree/bigint/expected-return-value.js +++ b/test/built-ins/Atomics/isLockFree/bigint/expected-return-value.js @@ -28,7 +28,7 @@ testWithBigIntTypedArrayConstructors(function(TA) { assert.sameValue( Atomics.isLockFree(TA.BYTES_PER_ELEMENT), observed, - 'Atomics.isLockFree(TA.BYTES_PER_ELEMENT) equals the value of `observed` (Atomics.isLockFree(TA.BYTES_PER_ELEMENT))' + 'Atomics.isLockFree(TA.BYTES_PER_ELEMENT) returns the value of `observed` (Atomics.isLockFree(TA.BYTES_PER_ELEMENT))' ); }); diff --git a/test/built-ins/Atomics/isLockFree/corner-cases.js b/test/built-ins/Atomics/isLockFree/corner-cases.js index 8f77cda292..d4e713e8f3 100644 --- a/test/built-ins/Atomics/isLockFree/corner-cases.js +++ b/test/built-ins/Atomics/isLockFree/corner-cases.js @@ -32,12 +32,12 @@ assert.sameValue( assert.sameValue( Atomics.isLockFree('1'), Atomics.isLockFree(1), - 'Atomics.isLockFree("1") returns Atomics.isLockFree(1)' + 'Atomics.isLockFree(\'1\') returns Atomics.isLockFree(1)' ); assert.sameValue( Atomics.isLockFree('3'), Atomics.isLockFree(3), - 'Atomics.isLockFree("3") returns Atomics.isLockFree(3)' + 'Atomics.isLockFree(\'3\') returns Atomics.isLockFree(3)' ); assert.sameValue( @@ -59,12 +59,12 @@ assert.sameValue( assert.sameValue( Atomics.isLockFree(1), Atomics.isLockFree({toString: () => '1'}), - 'Atomics.isLockFree(1) returns Atomics.isLockFree({toString: () => "1"})' + 'Atomics.isLockFree(1) returns Atomics.isLockFree({toString: () => \'1\'})' ); assert.sameValue( Atomics.isLockFree(3), Atomics.isLockFree({toString: () => '3'}), - 'Atomics.isLockFree(3) returns Atomics.isLockFree({toString: () => "3"})' + 'Atomics.isLockFree(3) returns Atomics.isLockFree({toString: () => \'3\'})' ); function hide(k, x) { diff --git a/test/built-ins/Atomics/isLockFree/expected-return-value.js b/test/built-ins/Atomics/isLockFree/expected-return-value.js index cd5795c784..72448c6576 100644 --- a/test/built-ins/Atomics/isLockFree/expected-return-value.js +++ b/test/built-ins/Atomics/isLockFree/expected-return-value.js @@ -32,7 +32,7 @@ var isLockFree8; assert.sameValue( Atomics.isLockFree(1), isLockFree1, - 'Atomics.isLockFree(1) equals the value of `isLockFree1` (1)' + 'Atomics.isLockFree(1) returns the value of `isLockFree1` (Atomics.isLockFree(1))' ); }; { @@ -47,7 +47,7 @@ var isLockFree8; assert.sameValue( Atomics.isLockFree(2), isLockFree2, - 'Atomics.isLockFree(2) equals the value of `isLockFree2` (2)' + 'Atomics.isLockFree(2) returns the value of `isLockFree2` (Atomics.isLockFree(2))' ); }; { @@ -55,8 +55,8 @@ var isLockFree8; // // If n equals 4, return true. // - assert.sameValue(typeof isLockFree4, 'boolean', 'The value of `typeof isLockFree` is "boolean"'); - assert.sameValue(isLockFree4, true, 'The value of `isLockFree` is true'); + assert.sameValue(typeof isLockFree4, 'boolean', 'The value of `typeof isLockFree4` is "boolean"'); + assert.sameValue(isLockFree4, true, 'The value of `isLockFree4` is true'); }; { @@ -71,14 +71,14 @@ var isLockFree8; assert.sameValue( Atomics.isLockFree(8), isLockFree8, - 'Atomics.isLockFree(8) equals the value of `isLockFree8` (8)' + 'Atomics.isLockFree(8) returns the value of `isLockFree8` (Atomics.isLockFree(8))' ); }; { for (let i = 0; i < 12; i++) { if (![1, 2, 4, 8].includes(i)) { - assert.sameValue(Atomics.isLockFree(i), false); + assert.sameValue(Atomics.isLockFree(i), false, 'Atomics.isLockFree(i) returns false'); } } }; @@ -86,17 +86,17 @@ var isLockFree8; assert.sameValue( Atomics.isLockFree(1), isLockFree1, - 'Later call to Atomics.isLockFree(1) equals the value of `isLockFree1` (1)' + 'Atomics.isLockFree(1) returns the value of `isLockFree1` (Atomics.isLockFree(1))' ); assert.sameValue( Atomics.isLockFree(2), isLockFree2, - 'Later call to Atomics.isLockFree(2) equals the value of `isLockFree2` (2)' + 'Atomics.isLockFree(2) returns the value of `isLockFree2` (Atomics.isLockFree(2))' ); assert.sameValue( Atomics.isLockFree(8), isLockFree8, - 'Later call to Atomics.isLockFree(8) equals the value of `isLockFree8` (8)' + 'Atomics.isLockFree(8) returns the value of `isLockFree8` (Atomics.isLockFree(8))' ); // Duplicates behavior created by loop from above diff --git a/test/built-ins/Atomics/load/bad-range.js b/test/built-ins/Atomics/load/bad-range.js index 14054e0dbc..c698ded175 100644 --- a/test/built-ins/Atomics/load/bad-range.js +++ b/test/built-ins/Atomics/load/bad-range.js @@ -17,6 +17,6 @@ testWithTypedArrayConstructors(function(TA) { testWithAtomicsOutOfBoundsIndices(function(IdxGen) { assert.throws(RangeError, function() { Atomics.load(view, IdxGen(view)); - }, 'Atomics.load(view, IdxGen(view)) throws RangeError'); + }, '`Atomics.load(view, IdxGen(view))` throws RangeError'); }); }, views); diff --git a/test/built-ins/Atomics/load/bigint/bad-range.js b/test/built-ins/Atomics/load/bigint/bad-range.js index 3f25785087..9da162b6a7 100644 --- a/test/built-ins/Atomics/load/bigint/bad-range.js +++ b/test/built-ins/Atomics/load/bigint/bad-range.js @@ -9,13 +9,13 @@ includes: [testAtomics.js, testBigIntTypedArray.js] features: [ArrayBuffer, arrow-function, Atomics, BigInt, DataView, for-of, let, SharedArrayBuffer, TypedArray] ---*/ -var buffer = new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 2); +var buffer = new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 2); testWithBigIntTypedArrayConstructors(function(TA) { let view = new TA(buffer); testWithAtomicsOutOfBoundsIndices(function(IdxGen) { assert.throws(RangeError, function() { Atomics.load(view, IdxGen(view)); - }, 'Atomics.load(view, IdxGen(view)) throws RangeError'); + }, '`Atomics.load(view, IdxGen(view))` throws RangeError'); }); }); diff --git a/test/built-ins/Atomics/load/bigint/good-views.js b/test/built-ins/Atomics/load/bigint/good-views.js index e044358c01..bc6824d133 100644 --- a/test/built-ins/Atomics/load/bigint/good-views.js +++ b/test/built-ins/Atomics/load/bigint/good-views.js @@ -1,45 +1,48 @@ // Copyright (C) 2018 Rick Waldron. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. - /*--- esid: sec-atomics.load description: Test Atomics.load on arrays that allow atomic operations. includes: [testAtomics.js, testBigIntTypedArray.js] features: [ArrayBuffer, arrow-function, Atomics, BigInt, DataView, for-of, let, SharedArrayBuffer, TypedArray] ---*/ - -var sab = new SharedArrayBuffer(1024); -var ab = new ArrayBuffer(16); - +const sab = new SharedArrayBuffer(1024); +const ab = new ArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 2); testWithBigIntTypedArrayConstructors(function(TA) { - // Make it interesting - use non-zero byteOffsets and non-zero indexes. - - var view = new TA(sab, 32, 20); - var control = new TA(ab, 0, 2); - - view[3] = -5; - control[0] = -5; - assert.sameValue(Atomics.load(view, 3), control[0], - "Result is subject to coercion"); - - control[0] = 12345; - view[3] = 12345; - assert.sameValue(Atomics.load(view, 3), control[0], - "Result is subject to chopping"); - - control[0] = 123456789; - view[3] = 123456789; - assert.sameValue(Atomics.load(view, 3), control[0], - "Result is subject to chopping"); + const view = new TA(sab, 32, 20); + const control = new TA(ab, 0, 2); + view[3] = -5n; + control[0] = -5n; + + assert.sameValue( + Atomics.load(view, 3), + control[0], + 'Atomics.load(view, 3) returns the value of `control[0]` (-5n)' + ); + + control[0] = 12345n; + view[3] = 12345n; + + assert.sameValue( + Atomics.load(view, 3), + control[0], + 'Atomics.load(view, 3) returns the value of `control[0]` (12345n)' + ); + + control[0] = 123456789n; + view[3] = 123456789n; + + assert.sameValue( + Atomics.load(view, 3), + control[0], + 'Atomics.load(view, 3) returns the value of `control[0]` (123456789n)' + ); - // In-bounds boundary cases for indexing testWithAtomicsInBoundsIndices(function(IdxGen) { let Idx = IdxGen(view); - view.fill(0); - // Atomics.store() computes an index from Idx in the same way as other - // Atomics operations, not quite like view[Idx]. - Atomics.store(view, Idx, 37); - assert.sameValue(Atomics.load(view, Idx), 37); + view.fill(0n); + Atomics.store(view, Idx, 37n); + assert.sameValue(Atomics.load(view, Idx), 37n, 'Atomics.load(view, Idx) returns 37n'); }); -}); +}); \ No newline at end of file diff --git a/test/built-ins/Atomics/load/bigint/nonshared-int-views.js b/test/built-ins/Atomics/load/bigint/nonshared-int-views.js index 8dc6195901..949fb74596 100644 --- a/test/built-ins/Atomics/load/bigint/nonshared-int-views.js +++ b/test/built-ins/Atomics/load/bigint/nonshared-int-views.js @@ -9,7 +9,7 @@ includes: [testBigIntTypedArray.js] features: [ArrayBuffer, arrow-function, Atomics, BigInt, TypedArray] ---*/ -var ab = new ArrayBuffer(16); +var ab = new ArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 2); testWithBigIntTypedArrayConstructors(function(TA) { @@ -17,5 +17,5 @@ testWithBigIntTypedArrayConstructors(function(TA) { assert.throws(TypeError, function() { Atomics.load(view, 0); - }, 'Atomics.load(view, 0) throws TypeError'); + }, '`Atomics.load(view, 0)` throws TypeError'); }); diff --git a/test/built-ins/Atomics/load/expected-return-value.js b/test/built-ins/Atomics/load/expected-return-value.js index bc373f27a9..204d18058f 100644 --- a/test/built-ins/Atomics/load/expected-return-value.js +++ b/test/built-ins/Atomics/load/expected-return-value.js @@ -28,13 +28,18 @@ info: | features: [Atomics, SharedArrayBuffer, TypedArray] ---*/ -var buffer = new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4); -var i32a = new Int32Array(buffer); -var update = 0b00000001000000001000000010000001; +const i32a = new Int32Array( + new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4) +); +const update = 0b00000001000000001000000010000001; -assert.sameValue(Atomics.load(i32a, 0), 0); +assert.sameValue(Atomics.load(i32a, 0), 0, 'Atomics.load(i32a, 0) returns 0'); i32a[0] = update; -assert.sameValue(Atomics.load(i32a, 0), update); +assert.sameValue( + Atomics.load(i32a, 0), + update, + 'Atomics.load(i32a, 0) returns the value of `update` (0b00000001000000001000000010000001)' +); diff --git a/test/built-ins/Atomics/load/good-views.js b/test/built-ins/Atomics/load/good-views.js index b36b892513..0f43410a51 100644 --- a/test/built-ins/Atomics/load/good-views.js +++ b/test/built-ins/Atomics/load/good-views.js @@ -8,31 +8,31 @@ includes: [testAtomics.js, testTypedArray.js] features: [ArrayBuffer, arrow-function, Atomics, DataView, for-of, let, SharedArrayBuffer, TypedArray] ---*/ -var sab = new SharedArrayBuffer(1024); -var ab = new ArrayBuffer(16); +const sab = new SharedArrayBuffer(1024); +const ab = new ArrayBuffer(16); -var views = intArrayConstructors.slice(); +const views = intArrayConstructors.slice(); testWithTypedArrayConstructors(function(TA) { // Make it interesting - use non-zero byteOffsets and non-zero indexes. - var view = new TA(sab, 32, 20); - var control = new TA(ab, 0, 2); + const view = new TA(sab, 32, 20); + const control = new TA(ab, 0, 2); view[3] = -5; control[0] = -5; assert.sameValue(Atomics.load(view, 3), control[0], - "Result is subject to coercion"); + 'Atomics.load(view, 3) returns the value of `control[0]` (-5)'); control[0] = 12345; view[3] = 12345; assert.sameValue(Atomics.load(view, 3), control[0], - "Result is subject to chopping"); + 'Atomics.load(view, 3) returns the value of `control[0]` (12345)'); control[0] = 123456789; view[3] = 123456789; assert.sameValue(Atomics.load(view, 3), control[0], - "Result is subject to chopping"); + 'Atomics.load(view, 3) returns the value of `control[0]` (123456789)'); // In-bounds boundary cases for indexing testWithAtomicsInBoundsIndices(function(IdxGen) { @@ -41,6 +41,6 @@ testWithTypedArrayConstructors(function(TA) { // Atomics.store() computes an index from Idx in the same way as other // Atomics operations, not quite like view[Idx]. Atomics.store(view, Idx, 37); - assert.sameValue(Atomics.load(view, Idx), 37); + assert.sameValue(Atomics.load(view, Idx), 37, 'Atomics.load(view, Idx) returns 37'); }); }, views); diff --git a/test/built-ins/Atomics/load/non-views.js b/test/built-ins/Atomics/load/non-views.js index 2dab45f5da..ac9d0f57a7 100644 --- a/test/built-ins/Atomics/load/non-views.js +++ b/test/built-ins/Atomics/load/non-views.js @@ -12,5 +12,5 @@ features: [ArrayBuffer, arrow-function, Atomics, DataView, for-of, let, SharedAr testWithAtomicsNonViewValues(function(view) { assert.throws(TypeError, function() { Atomics.load(view, 0); - }, 'Atomics.load(view, 0) throws TypeError'); + }, '`Atomics.load(view, 0)` throws TypeError'); }); diff --git a/test/built-ins/Atomics/load/nonshared-int-views.js b/test/built-ins/Atomics/load/nonshared-int-views.js index 6c33c02091..58f04ddc7a 100644 --- a/test/built-ins/Atomics/load/nonshared-int-views.js +++ b/test/built-ins/Atomics/load/nonshared-int-views.js @@ -9,14 +9,13 @@ includes: [testTypedArray.js] features: [ArrayBuffer, Atomics, TypedArray] ---*/ -var ab = new ArrayBuffer(16); - -var views = intArrayConstructors.slice(); +const buffer = new ArrayBuffer(16); +const views = intArrayConstructors.slice(); testWithTypedArrayConstructors(function(TA) { - var view = new TA(ab); + const view = new TA(buffer); assert.throws(TypeError, function() { Atomics.load(view, 0); - }, 'Atomics.load(view, 0) throws TypeError'); + }, '`Atomics.load(view, 0)` throws TypeError'); }, views); diff --git a/test/built-ins/Atomics/load/shared-nonint-views.js b/test/built-ins/Atomics/load/shared-nonint-views.js index 3e1f875a9d..ea493ccf82 100644 --- a/test/built-ins/Atomics/load/shared-nonint-views.js +++ b/test/built-ins/Atomics/load/shared-nonint-views.js @@ -9,9 +9,9 @@ includes: [testTypedArray.js] features: [Atomics, SharedArrayBuffer, TypedArray] ---*/ -var buffer = new SharedArrayBuffer(1024); +const buffer = new SharedArrayBuffer(1024); testWithTypedArrayConstructors(function(TA) { assert.throws(TypeError, function() { Atomics.load(new TA(buffer), 0); - }, 'Atomics.load(new TA(buffer), 0) throws TypeError'); + }, '`Atomics.load(new TA(buffer), 0)` throws TypeError'); }, floatArrayConstructors); diff --git a/test/built-ins/Atomics/or/bad-range.js b/test/built-ins/Atomics/or/bad-range.js index 679eae4895..b3f94b5e34 100644 --- a/test/built-ins/Atomics/or/bad-range.js +++ b/test/built-ins/Atomics/or/bad-range.js @@ -17,6 +17,6 @@ testWithTypedArrayConstructors(function(TA) { testWithAtomicsOutOfBoundsIndices(function(IdxGen) { assert.throws(RangeError, function() { Atomics.or(view, IdxGen(view), 10); - }, 'Atomics.or(view, IdxGen(view), 10) throws RangeError'); + }, '`Atomics.or(view, IdxGen(view), 10)` throws RangeError'); }); }, views); diff --git a/test/built-ins/Atomics/or/bigint/bad-range.js b/test/built-ins/Atomics/or/bigint/bad-range.js index 81d866a55f..c8440e9b04 100644 --- a/test/built-ins/Atomics/or/bigint/bad-range.js +++ b/test/built-ins/Atomics/or/bigint/bad-range.js @@ -1,6 +1,5 @@ // Copyright (C) 2018 Rick Waldron. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. - /*--- esid: sec-atomics.or description: > @@ -8,14 +7,14 @@ description: > includes: [testAtomics.js, testBigIntTypedArray.js] features: [ArrayBuffer, arrow-function, Atomics, BigInt, DataView, for-of, let, SharedArrayBuffer, TypedArray] ---*/ - -var buffer = new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 2); +var buffer = new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 2); testWithBigIntTypedArrayConstructors(function(TA) { let view = new TA(buffer); + testWithAtomicsOutOfBoundsIndices(function(IdxGen) { assert.throws(RangeError, function() { - Atomics.or(view, IdxGen(view), 10); - }, 'Atomics.or(view, IdxGen(view), 10) throws RangeError'); + Atomics.or(view, IdxGen(view), 10n); + }, '`Atomics.or(view, IdxGen(view), 10n)` throws RangeError'); }); -}); +}); \ No newline at end of file diff --git a/test/built-ins/Atomics/or/bigint/good-views.js b/test/built-ins/Atomics/or/bigint/good-views.js index 5c9afcf62a..fd882a3629 100644 --- a/test/built-ins/Atomics/or/bigint/good-views.js +++ b/test/built-ins/Atomics/or/bigint/good-views.js @@ -1,60 +1,97 @@ // Copyright (C) 2018 Rick Waldron. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. - /*--- esid: sec-atomics.or description: Test Atomics.or on arrays that allow atomic operations includes: [testAtomics.js, testBigIntTypedArray.js] features: [ArrayBuffer, arrow-function, Atomics, BigInt, DataView, for-of, let, SharedArrayBuffer, TypedArray] ---*/ - -var sab = new SharedArrayBuffer(1024); -var ab = new ArrayBuffer(16); +const sab = new SharedArrayBuffer(1024); +const ab = new ArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 2); testWithBigIntTypedArrayConstructors(function(TA) { - // Make it interesting - use non-zero byteOffsets and non-zero indexes. - - var view = new TA(sab, 32, 20); - var control = new TA(ab, 0, 2); - - view[8] = 0x33333333; - control[0] = 0x33333333; - assert.sameValue(Atomics.or(view, 8, 0x55555555), control[0], - "Result is subject to chopping"); - - control[0] = 0x77777777; - assert.sameValue(view[8], control[0]); - assert.sameValue(Atomics.or(view, 8, 0xF0F0F0F0), control[0], - "Result is subject to chopping"); - - control[0] = 0xF7F7F7F7; - assert.sameValue(view[8], control[0]); - - view[3] = -5; - control[0] = -5; - assert.sameValue(Atomics.or(view, 3, 0), control[0], - "Result is negative and subject to coercion"); - assert.sameValue(view[3], control[0]); - - control[0] = 12345; - view[3] = 12345; - assert.sameValue(Atomics.or(view, 3, 0), control[0], - "Result is subject to chopping"); - assert.sameValue(view[3], control[0]); - - control[0] = 123456789; - view[3] = 123456789; - assert.sameValue(Atomics.or(view, 3, 0), control[0], - "Result is subject to chopping"); - assert.sameValue(view[3], control[0]); - - // In-bounds boundary cases for indexing + const view = new TA(sab, 32, 20); + const control = new TA(ab, 0, 2); + view[8] = 0x33333333n; + control[0] = 0x33333333n; + + assert.sameValue( + Atomics.or(view, 8, 0x55555555n), + control[0], + 'Atomics.or(view, 8, 0x55555555n) returns the value of `control[0]` (0x33333333n)' + ); + + control[0] = 0x77777777n; + + assert.sameValue( + view[8], + control[0], + 'The value of view[8] equals the value of `control[0]` (0x77777777n)' + ); + + assert.sameValue( + Atomics.or(view, 8, 0xF0F0F0F0n), + control[0], + 'Atomics.or(view, 8, 0xF0F0F0F0n) returns the value of `control[0]` (0x77777777n)' + ); + + control[0] = 0xF7F7F7F7n; + + assert.sameValue( + view[8], + control[0], + 'The value of view[8] equals the value of `control[0]` (0xF7F7F7F7n)' + ); + + view[3] = -5n; + control[0] = -5n; + + assert.sameValue( + Atomics.or(view, 3, 0n), + control[0], + 'Atomics.or(view, 3, 0n) returns the value of `control[0]` (-5n)' + ); + + assert.sameValue( + view[3], + control[0], + 'The value of view[3] equals the value of `control[0]` (-5n)' + ); + + control[0] = 12345n; + view[3] = 12345n; + + assert.sameValue( + Atomics.or(view, 3, 0n), + control[0], + 'Atomics.or(view, 3, 0n) returns the value of `control[0]` (12345n)' + ); + + assert.sameValue( + view[3], + control[0], + 'The value of view[3] equals the value of `control[0]` (12345n)' + ); + + control[0] = 123456789n; + view[3] = 123456789n; + + assert.sameValue( + Atomics.or(view, 3, 0n), + control[0], + 'Atomics.or(view, 3, 0n) returns the value of `control[0]` (123456789n)' + ); + + assert.sameValue( + view[3], + control[0], + 'The value of view[3] equals the value of `control[0]` (123456789n)' + ); + testWithAtomicsInBoundsIndices(function(IdxGen) { let Idx = IdxGen(view); - view.fill(0); - // Atomics.store() computes an index from Idx in the same way as other - // Atomics operations, not quite like view[Idx]. - Atomics.store(view, Idx, 37); - assert.sameValue(Atomics.or(view, Idx, 0), 37); + view.fill(0n); + Atomics.store(view, Idx, 37n); + assert.sameValue(Atomics.or(view, Idx, 0n), 37n, 'Atomics.or(view, Idx, 0n) returns 37n'); }); -}); +}); \ No newline at end of file diff --git a/test/built-ins/Atomics/or/bigint/nonshared-int-views.js b/test/built-ins/Atomics/or/bigint/nonshared-int-views.js index ae8b56117f..1dea6f2429 100644 --- a/test/built-ins/Atomics/or/bigint/nonshared-int-views.js +++ b/test/built-ins/Atomics/or/bigint/nonshared-int-views.js @@ -1,6 +1,5 @@ // Copyright (C) 2018 Rick Waldron. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. - /*--- esid: sec-atomics.or description: > @@ -8,11 +7,10 @@ description: > includes: [testBigIntTypedArray.js] features: [ArrayBuffer, arrow-function, Atomics, BigInt, TypedArray] ---*/ - -var buffer = new ArrayBuffer(16); +const buffer = new ArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 2); testWithBigIntTypedArrayConstructors(function(TA) { assert.throws(TypeError, function() { - Atomics.or(new TA(buffer), 0, 0); - }, 'Atomics.or(new TA(buffer), 0, 0) throws TypeError'); -}); + Atomics.or(new TA(buffer), 0, 0n); + }, '`Atomics.or(new TA(buffer), 0, 0n)` throws TypeError'); +}); \ No newline at end of file diff --git a/test/built-ins/Atomics/or/expected-return-value.js b/test/built-ins/Atomics/or/expected-return-value.js index 71971d2c85..9b560247eb 100644 --- a/test/built-ins/Atomics/or/expected-return-value.js +++ b/test/built-ins/Atomics/or/expected-return-value.js @@ -27,9 +27,20 @@ info: | features: [Atomics, SharedArrayBuffer, TypedArray] ---*/ -var buffer = new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4); -var i32a = new Int32Array(buffer); -var update = 0b00000001000000001000000010000001; +const i32a = new Int32Array( + new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4) +); +const a = 0b00000001000000001000000010000001; +const b = 0b00000001111111111000000011111111; +const c = 0b00000001111111111000000011111111; + +i32a[0] = a; + +assert.sameValue( + Atomics.or(i32a, 0, b), + a, + 'Atomics.or(i32a, 0, b) returns the value of `a` (0b00000001000000001000000010000001)' +); + +assert.sameValue(i32a[0], c, 'The value of i32a[0] equals the value of `c` (0b00000001111111111000000011111111)'); -assert.sameValue(Atomics.or(i32a, 0, update), 0); -assert.sameValue(i32a[0], 0 | update); diff --git a/test/built-ins/Atomics/or/good-views.js b/test/built-ins/Atomics/or/good-views.js index 228500d69a..7522f1da43 100644 --- a/test/built-ins/Atomics/or/good-views.js +++ b/test/built-ins/Atomics/or/good-views.js @@ -21,33 +21,53 @@ testWithTypedArrayConstructors(function(TA) { view[8] = 0x33333333; control[0] = 0x33333333; assert.sameValue(Atomics.or(view, 8, 0x55555555), control[0], - "Result is subject to chopping"); + 'Atomics.or(view, 8, 0x55555555) returns the value of `control[0]` (0x33333333)'); control[0] = 0x77777777; - assert.sameValue(view[8], control[0]); + assert.sameValue( + view[8], + control[0], + 'The value of view[8] equals the value of `control[0]` (0x77777777)' + ); assert.sameValue(Atomics.or(view, 8, 0xF0F0F0F0), control[0], - "Result is subject to chopping"); + 'Atomics.or(view, 8, 0xF0F0F0F0) returns the value of `control[0]` (0x77777777)'); control[0] = 0xF7F7F7F7; - assert.sameValue(view[8], control[0]); + assert.sameValue( + view[8], + control[0], + 'The value of view[8] equals the value of `control[0]` (0xF7F7F7F7)' + ); view[3] = -5; control[0] = -5; assert.sameValue(Atomics.or(view, 3, 0), control[0], - "Result is negative and subject to coercion"); - assert.sameValue(view[3], control[0]); + 'Atomics.or(view, 3, 0) returns the value of `control[0]` (-5)'); + assert.sameValue( + view[3], + control[0], + 'The value of view[3] equals the value of `control[0]` (-5)' + ); control[0] = 12345; view[3] = 12345; assert.sameValue(Atomics.or(view, 3, 0), control[0], - "Result is subject to chopping"); - assert.sameValue(view[3], control[0]); + 'Atomics.or(view, 3, 0) returns the value of `control[0]` (12345)'); + assert.sameValue( + view[3], + control[0], + 'The value of view[3] equals the value of `control[0]` (12345)' + ); control[0] = 123456789; view[3] = 123456789; assert.sameValue(Atomics.or(view, 3, 0), control[0], - "Result is subject to chopping"); - assert.sameValue(view[3], control[0]); + 'Atomics.or(view, 3, 0) returns the value of `control[0]` (123456789)'); + assert.sameValue( + view[3], + control[0], + 'The value of view[3] equals the value of `control[0]` (123456789)' + ); // In-bounds boundary cases for indexing testWithAtomicsInBoundsIndices(function(IdxGen) { @@ -56,6 +76,6 @@ testWithTypedArrayConstructors(function(TA) { // Atomics.store() computes an index from Idx in the same way as other // Atomics operations, not quite like view[Idx]. Atomics.store(view, Idx, 37); - assert.sameValue(Atomics.or(view, Idx, 0), 37); + assert.sameValue(Atomics.or(view, Idx, 0), 37, 'Atomics.or(view, Idx, 0) returns 37'); }); }, views); diff --git a/test/built-ins/Atomics/or/non-views.js b/test/built-ins/Atomics/or/non-views.js index 04f82bacfc..4cebf0f892 100644 --- a/test/built-ins/Atomics/or/non-views.js +++ b/test/built-ins/Atomics/or/non-views.js @@ -12,5 +12,5 @@ features: [ArrayBuffer, arrow-function, Atomics, DataView, for-of, let, SharedAr testWithAtomicsNonViewValues(function(view) { assert.throws(TypeError, function() { Atomics.or(view, 0, 0); - }, 'Atomics.or(view, 0, 0) throws TypeError'); + }, '`Atomics.or(view, 0, 0)` throws TypeError'); }); diff --git a/test/built-ins/Atomics/or/nonshared-int-views.js b/test/built-ins/Atomics/or/nonshared-int-views.js index 5c92bd5665..13d226697d 100644 --- a/test/built-ins/Atomics/or/nonshared-int-views.js +++ b/test/built-ins/Atomics/or/nonshared-int-views.js @@ -9,11 +9,11 @@ includes: [testTypedArray.js] features: [ArrayBuffer, Atomics, TypedArray] ---*/ -var buffer = new ArrayBuffer(16); -var views = intArrayConstructors.slice(); +const buffer = new ArrayBuffer(16); +const views = intArrayConstructors.slice(); testWithTypedArrayConstructors(function(TA) { assert.throws(TypeError, function() { Atomics.or(new TA(buffer), 0, 0); - }, 'Atomics.or(new TA(buffer), 0, 0) throws TypeError'); + }, '`Atomics.or(new TA(buffer), 0, 0)` throws TypeError'); }, views); diff --git a/test/built-ins/Atomics/or/shared-nonint-views.js b/test/built-ins/Atomics/or/shared-nonint-views.js index 2dd48cbc3c..04ba84ab55 100644 --- a/test/built-ins/Atomics/or/shared-nonint-views.js +++ b/test/built-ins/Atomics/or/shared-nonint-views.js @@ -14,7 +14,7 @@ var buffer = new SharedArrayBuffer(1024); testWithTypedArrayConstructors(function(TA) { assert.throws(TypeError, function() { Atomics.or(new TA(buffer), 0, 0); - }, 'Atomics.or(new TA(buffer), 0, 0) throws TypeError'); + }, '`Atomics.or(new TA(buffer), 0, 0)` throws TypeError'); }, floatArrayConstructors); diff --git a/test/built-ins/Atomics/prop-desc.js b/test/built-ins/Atomics/prop-desc.js index 57cfb2ecba..90825f14f7 100644 --- a/test/built-ins/Atomics/prop-desc.js +++ b/test/built-ins/Atomics/prop-desc.js @@ -24,15 +24,15 @@ includes: [propertyHelper.js] features: [Atomics] ---*/ -assert.sameValue(typeof Atomics, "object"); +assert.sameValue(typeof Atomics, "object", 'The value of `typeof Atomics` is "object"'); assert.throws(TypeError, function() { Atomics(); -}, "no [[Call]]"); +}, '`Atomics()` throws TypeError'); assert.throws(TypeError, function() { new Atomics(); -}, "no [[Construct]]"); +}, '`new Atomics()` throws TypeError'); verifyProperty(this, "Atomics", { enumerable: false, diff --git a/test/built-ins/Atomics/proto.js b/test/built-ins/Atomics/proto.js index 8072c47494..d6275cb56c 100644 --- a/test/built-ins/Atomics/proto.js +++ b/test/built-ins/Atomics/proto.js @@ -13,4 +13,8 @@ info: | features: [Atomics] ---*/ -assert.sameValue(Object.getPrototypeOf(Atomics), Object.prototype); +assert.sameValue( + Object.getPrototypeOf(Atomics), + Object.prototype, + 'Object.getPrototypeOf(Atomics) returns the value of `Object.prototype`' +); diff --git a/test/built-ins/Atomics/store/bad-range.js b/test/built-ins/Atomics/store/bad-range.js index 224347fd36..fd26e25b82 100644 --- a/test/built-ins/Atomics/store/bad-range.js +++ b/test/built-ins/Atomics/store/bad-range.js @@ -9,14 +9,14 @@ includes: [testAtomics.js, testTypedArray.js] features: [ArrayBuffer, arrow-function, Atomics, DataView, for-of, let, SharedArrayBuffer, TypedArray] ---*/ -var buffer = new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 2); -var views = intArrayConstructors.slice(); +const buffer = new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 2); +const views = intArrayConstructors.slice(); testWithTypedArrayConstructors(function(TA) { - let view = new TA(buffer); + const view = new TA(buffer); testWithAtomicsOutOfBoundsIndices(function(IdxGen) { assert.throws(RangeError, function() { Atomics.store(view, IdxGen(view), 10); - }, 'Atomics.store(view, IdxGen(view), 10) throws RangeError'); + }, '`Atomics.store(view, IdxGen(view), 10)` throws RangeError'); }); }, views); diff --git a/test/built-ins/Atomics/store/bigint/bad-range.js b/test/built-ins/Atomics/store/bigint/bad-range.js index 38527f23c5..7cf5180359 100644 --- a/test/built-ins/Atomics/store/bigint/bad-range.js +++ b/test/built-ins/Atomics/store/bigint/bad-range.js @@ -1,6 +1,5 @@ // Copyright (C) 2018 Rick Waldron. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. - /*--- esid: sec-atomics.store description: > @@ -8,14 +7,14 @@ description: > includes: [testAtomics.js, testBigIntTypedArray.js] features: [ArrayBuffer, arrow-function, Atomics, BigInt, DataView, for-of, let, SharedArrayBuffer, TypedArray] ---*/ - -var buffer = new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 2); +const buffer = new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 2); testWithBigIntTypedArrayConstructors(function(TA) { - let view = new TA(buffer); + const view = new TA(buffer); + testWithAtomicsOutOfBoundsIndices(function(IdxGen) { assert.throws(RangeError, function() { - Atomics.store(view, IdxGen(view), 10); - }, 'Atomics.store(view, IdxGen(view), 10) throws RangeError'); + Atomics.store(view, IdxGen(view), 10n); + }, '`Atomics.store(view, IdxGen(view), 10n)` throws RangeError'); }); -}); +}); \ No newline at end of file diff --git a/test/built-ins/Atomics/store/bigint/good-views.js b/test/built-ins/Atomics/store/bigint/good-views.js index e6b27141f8..08b40f0f51 100644 --- a/test/built-ins/Atomics/store/bigint/good-views.js +++ b/test/built-ins/Atomics/store/bigint/good-views.js @@ -1,59 +1,42 @@ // Copyright (C) 2018 Rick Waldron. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. - /*--- esid: sec-atomics.store description: Test Atomics.store on arrays that allow atomic operations. includes: [testAtomics.js, testBigIntTypedArray.js] features: [ArrayBuffer, arrow-function, Atomics, BigInt, DataView, for-of, let, SharedArrayBuffer, TypedArray] ---*/ - -var sab = new SharedArrayBuffer(1024); -var ab = new ArrayBuffer(16); +// Make it interesting - use non-zero byteOffsets and non-zero indexes. +// In-bounds boundary cases for indexing +const sab = new SharedArrayBuffer(1024); +const ab = new ArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 2); testWithBigIntTypedArrayConstructors(function(TA) { - // Make it interesting - use non-zero byteOffsets and non-zero indexes. - - var view = new TA(sab, 32, 20); - var control = new TA(ab, 0, 2); - - for (let val of [10, -5, - 12345, - 123456789, - Math.PI, - "33", - { - valueOf: () => 33 - }, - undefined - ]) - { - assert.sameValue(Atomics.store(view, 3, val), ToInteger(val), - "Atomics.store returns its third argument (" + val + ") converted to Integer, not the input value nor the value that was stored"); + const view = new TA(sab, 32, 20); + const control = new TA(ab, 0, 2); + + for (let val of [10n, -5n, 12345n, 123456789n, BigInt('33'), { + valueOf: () => 33n + }, BigInt(undefined)]) { + assert.sameValue( + Atomics.store(view, 3, val), + BigInt(val), + 'Atomics.store(view, 3, val) returns BigInt(val)' + ); control[0] = val; - assert.sameValue(view[3], control[0]); + + assert.sameValue( + view[3], + control[0], + 'The value of view[3] equals the value of `control[0]` (val)' + ); } - // In-bounds boundary cases for indexing testWithAtomicsInBoundsIndices(function(IdxGen) { let Idx = IdxGen(view); - view.fill(0); - Atomics.store(view, Idx, 37); - assert.sameValue(Atomics.load(view, Idx), 37); + view.fill(0n); + Atomics.store(view, Idx, 37n); + assert.sameValue(Atomics.load(view, Idx), 37n, 'Atomics.load(view, Idx) returns 37n'); }); }); - -function ToInteger(v) { - v = +v; - if (isNaN(v)) { - return 0; - } - if (v == 0 || !isFinite(v)) { - return v; - } - if (v < 0) { - return -Math.floor(Math.abs(v)); - } - return Math.floor(v); -} diff --git a/test/built-ins/Atomics/store/bigint/nonshared-int-views.js b/test/built-ins/Atomics/store/bigint/nonshared-int-views.js index ab5942d81b..b1999d514e 100644 --- a/test/built-ins/Atomics/store/bigint/nonshared-int-views.js +++ b/test/built-ins/Atomics/store/bigint/nonshared-int-views.js @@ -1,6 +1,5 @@ // Copyright (C) 2018 Rick Waldron. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. - /*--- esid: sec-atomics.store description: > @@ -8,11 +7,10 @@ description: > includes: [testBigIntTypedArray.js] features: [ArrayBuffer, arrow-function, Atomics, BigInt, TypedArray] ---*/ - -var buffer = new ArrayBuffer(16); +const buffer = new ArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 2); testWithBigIntTypedArrayConstructors(function(TA) { assert.throws(TypeError, function() { - Atomics.store(new TA(buffer), 0, 0); - }, 'Atomics.store(new TA(buffer), 0, 0) throws TypeError'); -}); + Atomics.store(new TA(buffer), 0, 0n); + }, '`Atomics.store(new TA(buffer), 0, 0n)` throws TypeError'); +}); \ No newline at end of file diff --git a/test/built-ins/Atomics/store/expected-return-value.js b/test/built-ins/Atomics/store/expected-return-value.js index 010886bbde..1ccff20c35 100644 --- a/test/built-ins/Atomics/store/expected-return-value.js +++ b/test/built-ins/Atomics/store/expected-return-value.js @@ -18,9 +18,18 @@ info: | features: [Atomics, SharedArrayBuffer, TypedArray] ---*/ -var buffer = new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4); -var i32a = new Int32Array(buffer); -var update = 0b00000001000000001000000010000001; +const i32a = new Int32Array( + new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4) +); +const update = 0b00000001000000001000000010000001; -assert.sameValue(Atomics.store(i32a, 0, update), update); -assert.sameValue(i32a[0], update); +assert.sameValue( + Atomics.store(i32a, 0, update), + update, + 'Atomics.store(i32a, 0, update) returns the value of `update` (0b00000001000000001000000010000001)' +); +assert.sameValue( + i32a[0], + update, + 'The value of i32a[0] equals the value of `update` (0b00000001000000001000000010000001)' +); diff --git a/test/built-ins/Atomics/store/good-views.js b/test/built-ins/Atomics/store/good-views.js index 4e665a7639..43a0c5f56f 100644 --- a/test/built-ins/Atomics/store/good-views.js +++ b/test/built-ins/Atomics/store/good-views.js @@ -8,15 +8,15 @@ includes: [testAtomics.js, testTypedArray.js] features: [ArrayBuffer, arrow-function, Atomics, DataView, for-of, let, SharedArrayBuffer, TypedArray] ---*/ -var sab = new SharedArrayBuffer(1024); -var ab = new ArrayBuffer(16); -var views = intArrayConstructors.slice(); +const sab = new SharedArrayBuffer(1024); +const ab = new ArrayBuffer(16); +const views = intArrayConstructors.slice(); testWithTypedArrayConstructors(function(TA) { // Make it interesting - use non-zero byteOffsets and non-zero indexes. - var view = new TA(sab, 32, 20); - var control = new TA(ab, 0, 2); + const view = new TA(sab, 32, 20); + const control = new TA(ab, 0, 2); for (let val of [10, -5, 12345, @@ -30,10 +30,14 @@ testWithTypedArrayConstructors(function(TA) { ]) { assert.sameValue(Atomics.store(view, 3, val), ToInteger(val), - "Atomics.store returns its third argument (" + val + ") converted to Integer, not the input value nor the value that was stored"); + 'Atomics.store(view, 3, val) returns ToInteger(val)'); control[0] = val; - assert.sameValue(view[3], control[0]); + assert.sameValue( + view[3], + control[0], + 'The value of view[3] equals the value of `control[0]` (val)' + ); } // In-bounds boundary cases for indexing @@ -41,7 +45,7 @@ testWithTypedArrayConstructors(function(TA) { let Idx = IdxGen(view); view.fill(0); Atomics.store(view, Idx, 37); - assert.sameValue(Atomics.load(view, Idx), 37); + assert.sameValue(Atomics.load(view, Idx), 37, 'Atomics.load(view, Idx) returns 37'); }); }, views); diff --git a/test/built-ins/Atomics/store/non-views.js b/test/built-ins/Atomics/store/non-views.js index bc256a3a27..aa0046aeaf 100644 --- a/test/built-ins/Atomics/store/non-views.js +++ b/test/built-ins/Atomics/store/non-views.js @@ -12,5 +12,5 @@ features: [ArrayBuffer, arrow-function, Atomics, DataView, for-of, let, SharedAr testWithAtomicsNonViewValues(function(view) { assert.throws(TypeError, function() { Atomics.store(view, 0, 0); - }, 'Atomics.store(view, 0, 0) throws TypeError'); + }, '`Atomics.store(view, 0, 0)` throws TypeError'); }); diff --git a/test/built-ins/Atomics/store/nonshared-int-views.js b/test/built-ins/Atomics/store/nonshared-int-views.js index 90591d4489..06541264d8 100644 --- a/test/built-ins/Atomics/store/nonshared-int-views.js +++ b/test/built-ins/Atomics/store/nonshared-int-views.js @@ -9,11 +9,11 @@ includes: [testTypedArray.js] features: [ArrayBuffer, Atomics, TypedArray] ---*/ -var buffer = new ArrayBuffer(16); -var views = intArrayConstructors.slice(); +const buffer = new ArrayBuffer(16); +const views = intArrayConstructors.slice(); testWithTypedArrayConstructors(function(TA) { assert.throws(TypeError, function() { Atomics.store(new TA(buffer), 0, 0); - }, 'Atomics.store(new TA(buffer), 0, 0) throws TypeError'); + }, '`Atomics.store(new TA(buffer), 0, 0)` throws TypeError'); }, views); diff --git a/test/built-ins/Atomics/store/shared-nonint-views.js b/test/built-ins/Atomics/store/shared-nonint-views.js index fd3d159e89..acb7d8d880 100644 --- a/test/built-ins/Atomics/store/shared-nonint-views.js +++ b/test/built-ins/Atomics/store/shared-nonint-views.js @@ -14,7 +14,7 @@ var buffer = new SharedArrayBuffer(1024); testWithTypedArrayConstructors(function(TA) { assert.throws(TypeError, function() { Atomics.store(new TA(buffer), 0, 0); - }, 'Atomics.store(new TA(buffer), 0, 0) throws TypeError'); + }, '`Atomics.store(new TA(buffer), 0, 0)` throws TypeError'); }, floatArrayConstructors); diff --git a/test/built-ins/Atomics/sub/bad-range.js b/test/built-ins/Atomics/sub/bad-range.js index 6d9871bb9d..e041a78748 100644 --- a/test/built-ins/Atomics/sub/bad-range.js +++ b/test/built-ins/Atomics/sub/bad-range.js @@ -17,6 +17,6 @@ testWithTypedArrayConstructors(function(TA) { testWithAtomicsOutOfBoundsIndices(function(IdxGen) { assert.throws(RangeError, function() { Atomics.sub(view, IdxGen(view), 10); - }, 'Atomics.sub(view, IdxGen(view), 10) throws RangeError'); + }, '`Atomics.sub(view, IdxGen(view), 10)` throws RangeError'); }); }, views); diff --git a/test/built-ins/Atomics/sub/bigint/bad-range.js b/test/built-ins/Atomics/sub/bigint/bad-range.js index d033c212e0..9ca736812f 100644 --- a/test/built-ins/Atomics/sub/bigint/bad-range.js +++ b/test/built-ins/Atomics/sub/bigint/bad-range.js @@ -1,6 +1,5 @@ // Copyright (C) 2018 Rick Waldron. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. - /*--- esid: sec-atomics.sub description: > @@ -8,14 +7,14 @@ description: > includes: [testAtomics.js, testBigIntTypedArray.js] features: [ArrayBuffer, arrow-function, Atomics, BigInt, DataView, for-of, let, SharedArrayBuffer, TypedArray] ---*/ - -var buffer = new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 2); +const buffer = new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 2); testWithBigIntTypedArrayConstructors(function(TA) { - let view = new TA(buffer); + const view = new TA(buffer); + testWithAtomicsOutOfBoundsIndices(function(IdxGen) { assert.throws(RangeError, function() { - Atomics.sub(view, IdxGen(view), 10); - }, 'Atomics.sub(view, IdxGen(view), 10) throws RangeError'); + Atomics.sub(view, IdxGen(view), 10n); + }, '`Atomics.sub(view, IdxGen(view), 10n)` throws RangeError'); }); -}); +}); \ No newline at end of file diff --git a/test/built-ins/Atomics/sub/bigint/good-views.js b/test/built-ins/Atomics/sub/bigint/good-views.js index ca79f54086..676dd8b5c3 100644 --- a/test/built-ins/Atomics/sub/bigint/good-views.js +++ b/test/built-ins/Atomics/sub/bigint/good-views.js @@ -1,53 +1,57 @@ // Copyright (C) 2018 Rick Waldron. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. - /*--- esid: sec-atomics.sub description: Test Atomics.sub on arrays that allow atomic operations includes: [testAtomics.js, testBigIntTypedArray.js] features: [ArrayBuffer, arrow-function, Atomics, BigInt, DataView, for-of, let, SharedArrayBuffer, TypedArray] ---*/ - -var sab = new SharedArrayBuffer(1024); -var ab = new ArrayBuffer(16); +// Make it interesting - use non-zero byteOffsets and non-zero indexes. +// In-bounds boundary cases for indexing +// Atomics.store() computes an index from Idx in the same way as other +// Atomics operations, not quite like view[Idx]. +const sab = new SharedArrayBuffer(1024); +const ab = new ArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 2); testWithBigIntTypedArrayConstructors(function(TA) { - // Make it interesting - use non-zero byteOffsets and non-zero indexes. - - var view = new TA(sab, 32, 20); - var control = new TA(ab, 0, 2); - - view[8] = 100; - assert.sameValue(Atomics.sub(view, 8, 10), 100, - "Subtract positive number"); - assert.sameValue(view[8], 90); - - assert.sameValue(Atomics.sub(view, 8, -5), 90, - "Subtract negative number, though result remains positive"); - assert.sameValue(view[8], 95); - - view[3] = -5; - control[0] = -5; - assert.sameValue(Atomics.sub(view, 3, 0), control[0], - "Result is negative and subject to coercion"); - - control[0] = 12345; - view[3] = 12345; - assert.sameValue(Atomics.sub(view, 3, 0), control[0], - "Result is subject to chopping"); - - control[0] = 123456789; - view[3] = 123456789; - assert.sameValue(Atomics.sub(view, 3, 0), control[0], - "Result is subject to chopping"); + const view = new TA(sab, 32, 20); + const control = new TA(ab, 0, 2); + view[8] = 100n; + assert.sameValue(Atomics.sub(view, 8, 10n), 100n, 'Atomics.sub(view, 8, 10n) returns 100n'); + assert.sameValue(view[8], 90n, 'The value of view[8] is 90n'); + assert.sameValue(Atomics.sub(view, 8, -5n), 90n, 'Atomics.sub(view, 8, -5n) returns 90n'); + assert.sameValue(view[8], 95, 'The value of view[8] is 95'); + view[3] = -5n; + control[0] = -5n; + + assert.sameValue( + Atomics.sub(view, 3, 0n), + control[0], + 'Atomics.sub(view, 3, 0n) returns the value of `control[0]` (-5n)' + ); + + control[0] = 12345n; + view[3] = 12345n; + + assert.sameValue( + Atomics.sub(view, 3, 0n), + control[0], + 'Atomics.sub(view, 3, 0n) returns the value of `control[0]` (12345n)' + ); + + control[0] = 123456789n; + view[3] = 123456789n; + + assert.sameValue( + Atomics.sub(view, 3, 0n), + control[0], + 'Atomics.sub(view, 3, 0n) returns the value of `control[0]` (123456789n)' + ); - // In-bounds boundary cases for indexing testWithAtomicsInBoundsIndices(function(IdxGen) { let Idx = IdxGen(view); - view.fill(0); - // Atomics.store() computes an index from Idx in the same way as other - // Atomics operations, not quite like view[Idx]. - Atomics.store(view, Idx, 37); - assert.sameValue(Atomics.sub(view, Idx, 0), 37); + view.fill(0n); + Atomics.store(view, Idx, 37n); + assert.sameValue(Atomics.sub(view, Idx, 0n), 37n, 'Atomics.sub(view, Idx, 0n) returns 37n'); }); -}); +}); \ No newline at end of file diff --git a/test/built-ins/Atomics/sub/bigint/nonshared-int-views.js b/test/built-ins/Atomics/sub/bigint/nonshared-int-views.js index de1455b301..58274797df 100644 --- a/test/built-ins/Atomics/sub/bigint/nonshared-int-views.js +++ b/test/built-ins/Atomics/sub/bigint/nonshared-int-views.js @@ -1,6 +1,5 @@ // Copyright (C) 2018 Rick Waldron. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. - /*--- esid: sec-atomics.sub description: > @@ -8,11 +7,10 @@ description: > includes: [testBigIntTypedArray.js] features: [ArrayBuffer, arrow-function, Atomics, BigInt, TypedArray] ---*/ - -var buffer = new ArrayBuffer(16); +const buffer = new ArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 2); testWithBigIntTypedArrayConstructors(function(TA) { assert.throws(TypeError, function() { - Atomics.sub(new TA(buffer), 0, 0); - }, 'Atomics.sub(new TA(buffer), 0, 0) throws TypeError'); -}); + Atomics.sub(new TA(buffer), 0, 0n); + }, '`Atomics.sub(new TA(buffer), 0, 0n)` throws TypeError'); +}); \ No newline at end of file diff --git a/test/built-ins/Atomics/sub/expected-return-value.js b/test/built-ins/Atomics/sub/expected-return-value.js index eb0fcf88ba..c4d1d1bf6e 100644 --- a/test/built-ins/Atomics/sub/expected-return-value.js +++ b/test/built-ins/Atomics/sub/expected-return-value.js @@ -27,11 +27,16 @@ info: | features: [Atomics, SharedArrayBuffer, TypedArray] ---*/ -var buffer = new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4); -var i32a = new Int32Array(buffer); -var update = 0b00000001000000001000000010000001; +const i32a = new Int32Array( + new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4) +); +const update = 0b00000001000000001000000010000001; i32a[0] = update; -assert.sameValue(Atomics.sub(i32a, 0, update), update); -assert.sameValue(i32a[0], 0); +assert.sameValue( + Atomics.sub(i32a, 0, update), + update, + 'Atomics.sub(i32a, 0, update) returns the value of `update` (0b00000001000000001000000010000001)' +); +assert.sameValue(i32a[0], 0, 'The value of i32a[0] is 0'); diff --git a/test/built-ins/Atomics/sub/good-views.js b/test/built-ins/Atomics/sub/good-views.js index 411e1ad185..e05c6720c2 100644 --- a/test/built-ins/Atomics/sub/good-views.js +++ b/test/built-ins/Atomics/sub/good-views.js @@ -20,27 +20,27 @@ testWithTypedArrayConstructors(function(TA) { view[8] = 100; assert.sameValue(Atomics.sub(view, 8, 10), 100, - "Subtract positive number"); - assert.sameValue(view[8], 90); + 'Atomics.sub(view, 8, 10) returns 100'); + assert.sameValue(view[8], 90, 'The value of view[8] is 90'); assert.sameValue(Atomics.sub(view, 8, -5), 90, - "Subtract negative number, though result remains positive"); - assert.sameValue(view[8], 95); + 'Atomics.sub(view, 8, -5) returns 90'); + assert.sameValue(view[8], 95, 'The value of view[8] is 95'); view[3] = -5; control[0] = -5; assert.sameValue(Atomics.sub(view, 3, 0), control[0], - "Result is negative and subject to coercion"); + 'Atomics.sub(view, 3, 0) returns the value of `control[0]` (-5)'); control[0] = 12345; view[3] = 12345; assert.sameValue(Atomics.sub(view, 3, 0), control[0], - "Result is subject to chopping"); + 'Atomics.sub(view, 3, 0) returns the value of `control[0]` (12345)'); control[0] = 123456789; view[3] = 123456789; assert.sameValue(Atomics.sub(view, 3, 0), control[0], - "Result is subject to chopping"); + 'Atomics.sub(view, 3, 0) returns the value of `control[0]` (123456789)'); // In-bounds boundary cases for indexing testWithAtomicsInBoundsIndices(function(IdxGen) { @@ -49,6 +49,6 @@ testWithTypedArrayConstructors(function(TA) { // Atomics.store() computes an index from Idx in the same way as other // Atomics operations, not quite like view[Idx]. Atomics.store(view, Idx, 37); - assert.sameValue(Atomics.sub(view, Idx, 0), 37); + assert.sameValue(Atomics.sub(view, Idx, 0), 37, 'Atomics.sub(view, Idx, 0) returns 37'); }); }, views); diff --git a/test/built-ins/Atomics/sub/non-views.js b/test/built-ins/Atomics/sub/non-views.js index 46233994e6..695f021863 100644 --- a/test/built-ins/Atomics/sub/non-views.js +++ b/test/built-ins/Atomics/sub/non-views.js @@ -12,5 +12,5 @@ features: [ArrayBuffer, arrow-function, Atomics, DataView, for-of, let, SharedAr testWithAtomicsNonViewValues(function(view) { assert.throws(TypeError, function() { Atomics.sub(view, 0, 0); - }, 'Atomics.sub(view, 0, 0) throws TypeError'); + }, '`Atomics.sub(view, 0, 0)` throws TypeError'); }); diff --git a/test/built-ins/Atomics/sub/nonshared-int-views.js b/test/built-ins/Atomics/sub/nonshared-int-views.js index ff7bbf0925..b3f6c74a1c 100644 --- a/test/built-ins/Atomics/sub/nonshared-int-views.js +++ b/test/built-ins/Atomics/sub/nonshared-int-views.js @@ -9,11 +9,11 @@ includes: [testTypedArray.js] features: [ArrayBuffer, Atomics, TypedArray] ---*/ -var buffer = new ArrayBuffer(16); -var views = intArrayConstructors.slice(); +const buffer = new ArrayBuffer(16); +const views = intArrayConstructors.slice(); testWithTypedArrayConstructors(function(TA) { assert.throws(TypeError, function() { Atomics.sub(new TA(buffer), 0, 0); - }, 'Atomics.sub(new TA(buffer), 0, 0) throws TypeError'); + }, '`Atomics.sub(new TA(buffer), 0, 0)` throws TypeError'); }, views); diff --git a/test/built-ins/Atomics/sub/shared-nonint-views.js b/test/built-ins/Atomics/sub/shared-nonint-views.js index 9c373891cf..599f77f413 100644 --- a/test/built-ins/Atomics/sub/shared-nonint-views.js +++ b/test/built-ins/Atomics/sub/shared-nonint-views.js @@ -14,7 +14,7 @@ var buffer = new SharedArrayBuffer(1024); testWithTypedArrayConstructors(function(TA) { assert.throws(TypeError, function() { Atomics.sub(new TA(buffer), 0, 0); - }, 'Atomics.sub(new TA(buffer), 0, 0) throws TypeError'); + }, '`Atomics.sub(new TA(buffer), 0, 0)` throws TypeError'); }, floatArrayConstructors); diff --git a/test/built-ins/Atomics/wait/bad-range.js b/test/built-ins/Atomics/wait/bad-range.js index 8299a66f0f..607149e6b4 100644 --- a/test/built-ins/Atomics/wait/bad-range.js +++ b/test/built-ins/Atomics/wait/bad-range.js @@ -22,5 +22,5 @@ const i32a = new Int32Array( testWithAtomicsOutOfBoundsIndices(function(IdxGen) { assert.throws(RangeError, function() { Atomics.wait(i32a, IdxGen(i32a), 0, 0); - }, 'Atomics.wait(i32a, IdxGen(i32a), 0, 0) throws RangeError'); + }, '`Atomics.wait(i32a, IdxGen(i32a), 0, 0)` throws RangeError'); }); diff --git a/test/built-ins/Atomics/wait/bigint/bad-range.js b/test/built-ins/Atomics/wait/bigint/bad-range.js index 4a942951ae..ae0644e618 100644 --- a/test/built-ins/Atomics/wait/bigint/bad-range.js +++ b/test/built-ins/Atomics/wait/bigint/bad-range.js @@ -21,6 +21,6 @@ const i64a = new BigInt64Array( testWithAtomicsOutOfBoundsIndices(function(IdxGen) { assert.throws(RangeError, function() { - Atomics.wait(i64a, IdxGen(i64a), 0, 0); - }, 'Atomics.wait(i64a, IdxGen(i64a), 0, 0) throws RangeError'); + Atomics.wait(i64a, IdxGen(i64a), 0n, 0); + }, '`Atomics.wait(i64a, IdxGen(i64a), 0n, 0)` throws RangeError'); }); diff --git a/test/built-ins/Atomics/wait/bigint/cannot-suspend-throws.js b/test/built-ins/Atomics/wait/bigint/cannot-suspend-throws.js index 08b6551bb8..05ad9aba09 100644 --- a/test/built-ins/Atomics/wait/bigint/cannot-suspend-throws.js +++ b/test/built-ins/Atomics/wait/bigint/cannot-suspend-throws.js @@ -1,6 +1,5 @@ // Copyright (C) 2018 Amal Hussein. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. - /*--- esid: sec-atomics.wait description: > @@ -17,11 +16,8 @@ info: | features: [Atomics, BigInt, SharedArrayBuffer, TypedArray] flags: [CanBlockIsFalse] ---*/ - -const i64a = new BigInt64Array( - new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 8) -); +const i64a = new BigInt64Array(new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 8)); assert.throws(TypeError, function() { - Atomics.wait(i64a, 0, 0, 0); -}); + Atomics.wait(i64a, 0, 0n, 0); +}, '`Atomics.wait(i64a, 0, 0n, 0)` throws TypeError'); diff --git a/test/built-ins/Atomics/wait/bigint/false-for-timeout-agent.js b/test/built-ins/Atomics/wait/bigint/false-for-timeout-agent.js index 9ed38e8987..54732a390b 100644 --- a/test/built-ins/Atomics/wait/bigint/false-for-timeout-agent.js +++ b/test/built-ins/Atomics/wait/bigint/false-for-timeout-agent.js @@ -32,9 +32,9 @@ $262.agent.start(` $262.agent.receiveBroadcast(function(sab) { const i64a = new BigInt64Array(sab); const before = $262.agent.monotonicNow(); - $262.agent.report(Atomics.wait(i64a, 0, 0, false)); - $262.agent.report(Atomics.wait(i64a, 0, 0, valueOf)); - $262.agent.report(Atomics.wait(i64a, 0, 0, toPrimitive)); + $262.agent.report(Atomics.wait(i64a, 0, 0n, false)); + $262.agent.report(Atomics.wait(i64a, 0, 0n, valueOf)); + $262.agent.report(Atomics.wait(i64a, 0, 0n, toPrimitive)); $262.agent.report($262.agent.monotonicNow() - before); $262.agent.leaving(); }); @@ -47,18 +47,30 @@ const i64a = new BigInt64Array( $262.agent.broadcast(i64a.buffer); $262.agent.sleep(100); -assert.sameValue($262.agent.getReport(), 'timed-out'); -assert.sameValue($262.agent.getReport(), 'timed-out'); -assert.sameValue($262.agent.getReport(), 'timed-out'); +assert.sameValue( + $262.agent.getReport(), + 'timed-out', + '$262.agent.getReport() returns "timed-out"' +); +assert.sameValue( + $262.agent.getReport(), + 'timed-out', + '$262.agent.getReport() returns "timed-out"' +); +assert.sameValue( + $262.agent.getReport(), + 'timed-out', + '$262.agent.getReport() returns "timed-out"' +); const lapse = $262.agent.getReport(); assert( lapse >= 0, - `${lapse} should be greater than, or equal to 0` + 'The result of `(lapse >= 0)` is true' ); assert( lapse <= $262.agent.MAX_TIME_EPSILON, - `${lapse} should be less than ${$262.agent.MAX_TIME_EPSILON}` + 'The result of `(lapse <= $262.agent.MAX_TIME_EPSILON)` is true' ); -assert.sameValue(Atomics.wake(i64a, 0), 0); +assert.sameValue(Atomics.wake(i64a, 0), 0, 'Atomics.wake(i64a, 0) returns 0'); diff --git a/test/built-ins/Atomics/wait/bigint/false-for-timeout.js b/test/built-ins/Atomics/wait/bigint/false-for-timeout.js index 2188167e54..b16ac53274 100644 --- a/test/built-ins/Atomics/wait/bigint/false-for-timeout.js +++ b/test/built-ins/Atomics/wait/bigint/false-for-timeout.js @@ -32,7 +32,19 @@ const toPrimitive = { } }; -assert.sameValue(Atomics.wait(i64a, 0, 0, false), "timed-out"); -assert.sameValue(Atomics.wait(i64a, 0, 0, valueOf), "timed-out"); -assert.sameValue(Atomics.wait(i64a, 0, 0, toPrimitive), "timed-out"); +assert.sameValue( + Atomics.wait(i64a, 0, 0n, false), + "timed-out", + 'Atomics.wait(i64a, 0, 0n, false) returns "timed-out"' +); +assert.sameValue( + Atomics.wait(i64a, 0, 0n, valueOf), + "timed-out", + 'Atomics.wait(i64a, 0, 0n, valueOf) returns "timed-out"' +); +assert.sameValue( + Atomics.wait(i64a, 0, 0n, toPrimitive), + "timed-out", + 'Atomics.wait(i64a, 0, 0n, toPrimitive) returns "timed-out"' +); diff --git a/test/built-ins/Atomics/wait/bigint/good-views.js b/test/built-ins/Atomics/wait/bigint/good-views.js deleted file mode 100644 index 0c1bbc0ca8..0000000000 --- a/test/built-ins/Atomics/wait/bigint/good-views.js +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright (C) 2018 Rick Waldron. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-atomics.wait -description: > - Test Atomics.wait on arrays that allow atomic operations, - in an Agent that is allowed to wait. -includes: [atomicsHelper.js] -features: [Atomics, BigInt] ----*/ - -// Let's assume 'wait' is not allowed on the main thread, -// even in the shell. - -$262.agent.start(` - const sab = new SharedArrayBuffer(1024); - const ab = new ArrayBuffer(16); - - const good_indices = [ (view) => 0/-1, // -0 - (view) => '-0', - (view) => view.length - 1, - (view) => ({ valueOf: () => 0 }), - (view) => ({ toString: () => '0', valueOf: false }) // non-callable valueOf triggers invocation of toString - ]; - - const view = new BigInt64Array(sab, 32, 20); - - view[0] = 0; - $262.agent.report("A " + Atomics.wait(view, 0, 0, 0)) - $262.agent.report("B " + Atomics.wait(view, 0, 37, 0)); - - // In-bounds boundary cases for indexing - for ( let IdxGen of good_indices ) { - let Idx = IdxGen(view); - view.fill(0); - // Atomics.store() computes an index from Idx in the same way as other - // Atomics operations, not quite like view[Idx]. - Atomics.store(view, Idx, 37); - $262.agent.report("C " + Atomics.wait(view, Idx, 0)); - } - - $262.agent.report("done"); - $262.agent.leaving(); -`); - -assert.sameValue($262.agent.getReport(), 'A timed-out'); -assert.sameValue($262.agent.getReport(), 'B not-equal'); -assert.sameValue($262.agent.getReport(), 'C not-equal'); diff --git a/test/built-ins/Atomics/wait/bigint/nan-for-timeout.js b/test/built-ins/Atomics/wait/bigint/nan-for-timeout.js index 21723c9bec..04c8343fe3 100644 --- a/test/built-ins/Atomics/wait/bigint/nan-for-timeout.js +++ b/test/built-ins/Atomics/wait/bigint/nan-for-timeout.js @@ -20,7 +20,7 @@ features: [Atomics, BigInt, SharedArrayBuffer, TypedArray] $262.agent.start(` $262.agent.receiveBroadcast(function(sab) { const i64a = new BigInt64Array(sab); - $262.agent.report(Atomics.wait(i64a, 0, 0, NaN)); // NaN => +Infinity + $262.agent.report(Atomics.wait(i64a, 0, 0n, NaN)); // NaN => +Infinity $262.agent.leaving(); }); `); @@ -31,5 +31,5 @@ const i64a = new BigInt64Array( $262.agent.broadcast(i64a.buffer); $262.agent.sleep(100); -assert.sameValue(Atomics.wake(i64a, 0), 1); -assert.sameValue($262.agent.getReport(), 'ok'); +assert.sameValue(Atomics.wake(i64a, 0), 1, 'Atomics.wake(i64a, 0) returns 1'); +assert.sameValue($262.agent.getReport(), 'ok', '$262.agent.getReport() returns "ok"'); diff --git a/test/built-ins/Atomics/wait/bigint/negative-index-throws.js b/test/built-ins/Atomics/wait/bigint/negative-index-throws.js index 9acd86db1e..552b710478 100644 --- a/test/built-ins/Atomics/wait/bigint/negative-index-throws.js +++ b/test/built-ins/Atomics/wait/bigint/negative-index-throws.js @@ -27,13 +27,13 @@ const poisoned = { assert.throws(RangeError, function() { Atomics.wait(i64a, -Infinity, poisoned, poisoned); -}); +}, '`Atomics.wait(i64a, -Infinity, poisoned, poisoned)` throws RangeError'); assert.throws(RangeError, function() { Atomics.wait(i64a, -7.999, poisoned, poisoned); -}); +}, '`Atomics.wait(i64a, -7.999, poisoned, poisoned)` throws RangeError'); assert.throws(RangeError, function() { Atomics.wait(i64a, -1, poisoned, poisoned); -}); +}, '`Atomics.wait(i64a, -1, poisoned, poisoned)` throws RangeError'); assert.throws(RangeError, function() { Atomics.wait(i64a, -300, poisoned, poisoned); -}); +}, '`Atomics.wait(i64a, -300, poisoned, poisoned)` throws RangeError'); diff --git a/test/built-ins/Atomics/wait/bigint/negative-timeout-agent.js b/test/built-ins/Atomics/wait/bigint/negative-timeout-agent.js index d828c990c9..d46bc8b691 100644 --- a/test/built-ins/Atomics/wait/bigint/negative-timeout-agent.js +++ b/test/built-ins/Atomics/wait/bigint/negative-timeout-agent.js @@ -23,5 +23,9 @@ const i64a = new BigInt64Array( $262.agent.broadcast(i64a.buffer); $262.agent.sleep(10); -assert.sameValue($262.agent.getReport(), 'timed-out'); -assert.sameValue(Atomics.wake(i64a, 0), 0); +assert.sameValue( + $262.agent.getReport(), + 'timed-out', + '$262.agent.getReport() returns "timed-out"' +); +assert.sameValue(Atomics.wake(i64a, 0), 0, 'Atomics.wake(i64a, 0) returns 0'); diff --git a/test/built-ins/Atomics/wait/bigint/negative-timeout.js b/test/built-ins/Atomics/wait/bigint/negative-timeout.js index a3239d9ce0..35bc0d57f6 100644 --- a/test/built-ins/Atomics/wait/bigint/negative-timeout.js +++ b/test/built-ins/Atomics/wait/bigint/negative-timeout.js @@ -13,4 +13,8 @@ const i64a = new BigInt64Array( new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 8) ); -assert.sameValue(Atomics.wait(i64a, 0, 0, -1), "timed-out"); +assert.sameValue( + Atomics.wait(i64a, 0, 0n, -1), + "timed-out", + 'Atomics.wait(i64a, 0, 0n, -1) returns "timed-out"' +); diff --git a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-no-operation.js b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-no-operation.js index cb91b6da4e..221668f83d 100644 --- a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-no-operation.js +++ b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-no-operation.js @@ -40,7 +40,11 @@ $262.agent.sleep(10); const lapse = $262.agent.getReport(); assert( lapse >= TIMEOUT, - `${lapse} should be at least ${TIMEOUT}` + 'The result of `(lapse >= TIMEOUT)` is true' ); -assert.sameValue($262.agent.getReport(), 'timed-out'); -assert.sameValue(Atomics.wake(i64a, 0), 0); +assert.sameValue( + $262.agent.getReport(), + 'timed-out', + '$262.agent.getReport() returns "timed-out"' +); +assert.sameValue(Atomics.wake(i64a, 0), 0, 'Atomics.wake(i64a, 0) returns 0'); diff --git a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-add.js b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-add.js index 2cc3ddae5f..7e223b6b04 100644 --- a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-add.js +++ b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-add.js @@ -18,7 +18,7 @@ $262.agent.start(` $262.agent.receiveBroadcast(function(sab) { const i64a = new BigInt64Array(sab); const before = $262.agent.monotonicNow(); - const unpark = Atomics.wait(i64a, 0, 0, ${TIMEOUT}); + const unpark = Atomics.wait(i64a, 0, 0n, ${TIMEOUT}); $262.agent.report($262.agent.monotonicNow() - before); $262.agent.report(unpark); $262.agent.leaving(); @@ -33,9 +33,13 @@ Atomics.add(i64a, 0, 1); const lapse = $262.agent.getReport(); assert( lapse >= TIMEOUT, - `${lapse} should be at least ${TIMEOUT}` + 'The result of `(lapse >= TIMEOUT)` is true' ); -assert.sameValue($262.agent.getReport(), 'timed-out'); -assert.sameValue(Atomics.wake(i64a, 0), 0); +assert.sameValue( + $262.agent.getReport(), + 'timed-out', + '$262.agent.getReport() returns "timed-out"' +); +assert.sameValue(Atomics.wake(i64a, 0), 0, 'Atomics.wake(i64a, 0) returns 0'); diff --git a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-and.js b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-and.js index 2d92ce6f43..5352f006bf 100644 --- a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-and.js +++ b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-and.js @@ -17,7 +17,7 @@ $262.agent.start(` $262.agent.receiveBroadcast(function(sab) { const i64a = new BigInt64Array(sab); const before = $262.agent.monotonicNow(); - const unpark = Atomics.wait(i64a, 0, 0, ${TIMEOUT}); + const unpark = Atomics.wait(i64a, 0, 0n, ${TIMEOUT}); $262.agent.report($262.agent.monotonicNow() - before); $262.agent.report(unpark); $262.agent.leaving(); @@ -32,9 +32,13 @@ Atomics.and(i64a, 0, 1); const lapse = $262.agent.getReport(); assert( lapse >= TIMEOUT, - `${lapse} should be at least ${TIMEOUT}` + 'The result of `(lapse >= TIMEOUT)` is true' ); -assert.sameValue($262.agent.getReport(), 'timed-out'); -assert.sameValue(Atomics.wake(i64a, 0), 0); +assert.sameValue( + $262.agent.getReport(), + 'timed-out', + '$262.agent.getReport() returns "timed-out"' +); +assert.sameValue(Atomics.wake(i64a, 0), 0, 'Atomics.wake(i64a, 0) returns 0'); diff --git a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-compareExchange.js b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-compareExchange.js index b6faecf477..3b36acc82c 100644 --- a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-compareExchange.js +++ b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-compareExchange.js @@ -17,7 +17,7 @@ $262.agent.start(` $262.agent.receiveBroadcast(function(sab) { const i64a = new BigInt64Array(sab); const before = $262.agent.monotonicNow(); - const unpark = Atomics.wait(i64a, 0, 0, ${TIMEOUT}); + const unpark = Atomics.wait(i64a, 0, 0n, ${TIMEOUT}); $262.agent.report($262.agent.monotonicNow() - before); $262.agent.report(unpark); $262.agent.leaving(); @@ -32,7 +32,11 @@ Atomics.compareExchange(i64a, 0, 0, 1); const lapse = $262.agent.getReport(); assert( lapse >= TIMEOUT, - `${lapse} should be at least ${TIMEOUT}` + 'The result of `(lapse >= TIMEOUT)` is true' ); -assert.sameValue($262.agent.getReport(), 'timed-out'); -assert.sameValue(Atomics.wake(i64a, 0), 0); +assert.sameValue( + $262.agent.getReport(), + 'timed-out', + '$262.agent.getReport() returns "timed-out"' +); +assert.sameValue(Atomics.wake(i64a, 0), 0, 'Atomics.wake(i64a, 0) returns 0'); diff --git a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-exchange.js b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-exchange.js index 23b63d38fc..d50a5c20ff 100644 --- a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-exchange.js +++ b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-exchange.js @@ -17,7 +17,7 @@ $262.agent.start(` $262.agent.receiveBroadcast(function(sab) { const i64a = new BigInt64Array(sab); const before = $262.agent.monotonicNow(); - const unpark = Atomics.wait(i64a, 0, 0, ${TIMEOUT}); + const unpark = Atomics.wait(i64a, 0, 0n, ${TIMEOUT}); $262.agent.report($262.agent.monotonicNow() - before); $262.agent.report(unpark); $262.agent.leaving(); @@ -32,8 +32,12 @@ Atomics.exchange(i64a, 0, 1); const lapse = $262.agent.getReport(); assert( lapse >= TIMEOUT, - `${lapse} should be at least ${TIMEOUT}` + 'The result of `(lapse >= TIMEOUT)` is true' ); -assert.sameValue($262.agent.getReport(), 'timed-out'); -assert.sameValue(Atomics.wake(i64a, 0), 0); +assert.sameValue( + $262.agent.getReport(), + 'timed-out', + '$262.agent.getReport() returns "timed-out"' +); +assert.sameValue(Atomics.wake(i64a, 0), 0, 'Atomics.wake(i64a, 0) returns 0'); diff --git a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-or.js b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-or.js index 352642bfa5..29d0adb0fe 100644 --- a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-or.js +++ b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-or.js @@ -17,7 +17,7 @@ $262.agent.start(` $262.agent.receiveBroadcast(function(sab) { const i64a = new BigInt64Array(sab); const before = $262.agent.monotonicNow(); - const unpark = Atomics.wait(i64a, 0, 0, ${TIMEOUT}); + const unpark = Atomics.wait(i64a, 0, 0n, ${TIMEOUT}); $262.agent.report($262.agent.monotonicNow() - before); $262.agent.report(unpark); $262.agent.leaving(); @@ -32,9 +32,13 @@ Atomics.or(i64a, 0, 1); const lapse = $262.agent.getReport(); assert( lapse >= TIMEOUT, - `${lapse} should be at least ${TIMEOUT}` + 'The result of `(lapse >= TIMEOUT)` is true' ); -assert.sameValue($262.agent.getReport(), 'timed-out'); -assert.sameValue(Atomics.wake(i64a, 0), 0); +assert.sameValue( + $262.agent.getReport(), + 'timed-out', + '$262.agent.getReport() returns "timed-out"' +); +assert.sameValue(Atomics.wake(i64a, 0), 0, 'Atomics.wake(i64a, 0) returns 0'); diff --git a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-store.js b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-store.js index 7f955ac2c0..646a6ea4f5 100644 --- a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-store.js +++ b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-store.js @@ -17,7 +17,7 @@ $262.agent.start(` $262.agent.receiveBroadcast(function(sab) { const i64a = new BigInt64Array(sab); const before = $262.agent.monotonicNow(); - const unpark = Atomics.wait(i64a, 0, 0, ${TIMEOUT}); + const unpark = Atomics.wait(i64a, 0, 0n, ${TIMEOUT}); $262.agent.report($262.agent.monotonicNow() - before); $262.agent.report(unpark); $262.agent.leaving(); @@ -32,8 +32,12 @@ Atomics.store(i64a, 0, 0x111111); const lapse = $262.agent.getReport(); assert( lapse >= TIMEOUT, - `${lapse} should be at least ${TIMEOUT}` + 'The result of `(lapse >= TIMEOUT)` is true' ); -assert.sameValue($262.agent.getReport(), 'timed-out'); -assert.sameValue(Atomics.wake(i64a, 0), 0); +assert.sameValue( + $262.agent.getReport(), + 'timed-out', + '$262.agent.getReport() returns "timed-out"' +); +assert.sameValue(Atomics.wake(i64a, 0), 0, 'Atomics.wake(i64a, 0) returns 0'); diff --git a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-sub.js b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-sub.js index 68bcdea9a3..b60d398743 100644 --- a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-sub.js +++ b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-sub.js @@ -17,7 +17,7 @@ $262.agent.start(` $262.agent.receiveBroadcast(function(sab) { const i64a = new BigInt64Array(sab); const before = $262.agent.monotonicNow(); - const unpark = Atomics.wait(i64a, 0, 0, ${TIMEOUT}); + const unpark = Atomics.wait(i64a, 0, 0n, ${TIMEOUT}); $262.agent.report($262.agent.monotonicNow() - before); $262.agent.report(unpark); $262.agent.leaving(); @@ -32,7 +32,11 @@ Atomics.sub(i64a, 0, 1); const lapse = $262.agent.getReport(); assert( lapse >= TIMEOUT, - `${lapse} should be at least ${TIMEOUT}` + 'The result of `(lapse >= TIMEOUT)` is true' ); -assert.sameValue($262.agent.getReport(), 'timed-out'); -assert.sameValue(Atomics.wake(i64a, 0), 0); +assert.sameValue( + $262.agent.getReport(), + 'timed-out', + '$262.agent.getReport() returns "timed-out"' +); +assert.sameValue(Atomics.wake(i64a, 0), 0, 'Atomics.wake(i64a, 0) returns 0'); diff --git a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-xor.js b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-xor.js index b06ac9565c..542a3f4335 100644 --- a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-xor.js +++ b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-xor.js @@ -17,7 +17,7 @@ $262.agent.start(` $262.agent.receiveBroadcast(function(sab) { const i64a = new BigInt64Array(sab); const before = $262.agent.monotonicNow(); - const unpark = Atomics.wait(i64a, 0, 0, ${TIMEOUT}); + const unpark = Atomics.wait(i64a, 0, 0n, ${TIMEOUT}); $262.agent.report($262.agent.monotonicNow() - before); $262.agent.report(unpark); $262.agent.leaving(); @@ -32,10 +32,14 @@ Atomics.xor(i64a, 0, 1); const lapse = $262.agent.getReport(); assert( lapse >= TIMEOUT, - `${lapse} should be at least ${TIMEOUT}` + 'The result of `(lapse >= TIMEOUT)` is true' ); -assert.sameValue($262.agent.getReport(), 'timed-out'); -assert.sameValue(Atomics.wake(i64a, 0), 0); +assert.sameValue( + $262.agent.getReport(), + 'timed-out', + '$262.agent.getReport() returns "timed-out"' +); +assert.sameValue(Atomics.wake(i64a, 0), 0, 'Atomics.wake(i64a, 0) returns 0'); diff --git a/test/built-ins/Atomics/wait/bigint/non-bigint64-typedarray-throws.js b/test/built-ins/Atomics/wait/bigint/non-bigint64-typedarray-throws.js index 6278a5c328..e6437c19df 100644 --- a/test/built-ins/Atomics/wait/bigint/non-bigint64-typedarray-throws.js +++ b/test/built-ins/Atomics/wait/bigint/non-bigint64-typedarray-throws.js @@ -16,7 +16,7 @@ info: | ... 5. If waitable is true, then - a. If typeName is not "Int32Array" or "BigInt64Array", + a. If typeName is not "BigInt64Array", throw a TypeError exception. features: [Atomics, BigInt, SharedArrayBuffer, TypedArray, ArrayBuffer, DataView, let, arrow-function, for-of, Atomics, BigInt, SharedArrayBuffer, TypedArray] @@ -34,10 +34,10 @@ const poisoned = { }; assert.throws(TypeError, function() { - Atomics.wait(i64a, 0, 0, 0); -}, 'BigUint64Array'); + Atomics.wait(i64a, 0, 0n, 0); +}, '`Atomics.wait(i64a, 0, 0n, 0)` throws TypeError'); assert.throws(TypeError, function() { Atomics.wait(i64a, poisoned, poisoned, poisoned); -}, 'BigUint64Array'); +}, '`Atomics.wait(i64a, poisoned, poisoned, poisoned)` throws TypeError'); diff --git a/test/built-ins/Atomics/wait/bigint/non-shared-bufferdata-throws.js b/test/built-ins/Atomics/wait/bigint/non-shared-bufferdata-throws.js index cbe7776b1d..fefbd333b2 100644 --- a/test/built-ins/Atomics/wait/bigint/non-shared-bufferdata-throws.js +++ b/test/built-ins/Atomics/wait/bigint/non-shared-bufferdata-throws.js @@ -26,9 +26,9 @@ const poisoned = { }; assert.throws(TypeError, function() { - Atomics.wait(i64a, 0, 0, 0); -}, 'Atomics.wait(i64a, 0, 0, 0) on ArrayBuffer throws TypeError'); + Atomics.wait(i64a, 0, 0n, 0); +}, '`Atomics.wait(i64a, 0, 0n, 0)` throws TypeError'); assert.throws(TypeError, function() { Atomics.wait(i64a, poisoned, poisoned, poisoned); -}, 'Atomics.wait(i64a, poisoned, poisoned, poisoned) on ArrayBuffer throws TypeError'); +}, '`Atomics.wait(i64a, poisoned, poisoned, poisoned)` throws TypeError'); diff --git a/test/built-ins/Atomics/wait/bigint/null-bufferdata-throws.js b/test/built-ins/Atomics/wait/bigint/null-bufferdata-throws.js index 0420510c6b..ae4e3c2a0e 100644 --- a/test/built-ins/Atomics/wait/bigint/null-bufferdata-throws.js +++ b/test/built-ins/Atomics/wait/bigint/null-bufferdata-throws.js @@ -42,4 +42,4 @@ try { assert.throws(TypeError, function() { Atomics.wait(i64a, poisoned, poisoned, poisoned); -}, 'Atomics.wait(i64a, poisoned, poisoned, poisoned) on detached buffer throws TypeError'); +}, '`Atomics.wait(i64a, poisoned, poisoned, poisoned)` throws TypeError'); diff --git a/test/built-ins/Atomics/wait/bigint/out-of-range-index-throws.js b/test/built-ins/Atomics/wait/bigint/out-of-range-index-throws.js index d4d936860b..ac029a9f60 100644 --- a/test/built-ins/Atomics/wait/bigint/out-of-range-index-throws.js +++ b/test/built-ins/Atomics/wait/bigint/out-of-range-index-throws.js @@ -28,10 +28,10 @@ const poisoned = { assert.throws(RangeError, function() { Atomics.wait(i64a, Infinity, poisoned, poisoned); -}); +}, '`Atomics.wait(i64a, Infinity, poisoned, poisoned)` throws RangeError'); assert.throws(RangeError, function() { Atomics.wait(i64a, 2, poisoned, poisoned); -}); +}, '`Atomics.wait(i64a, 2, poisoned, poisoned)` throws RangeError'); assert.throws(RangeError, function() { Atomics.wait(i64a, 200, poisoned, poisoned); -}); +}, '`Atomics.wait(i64a, 200, poisoned, poisoned)` throws RangeError'); diff --git a/test/built-ins/Atomics/wait/bigint/value-not-equal.js b/test/built-ins/Atomics/wait/bigint/value-not-equal.js index c67f828080..99be75f72d 100644 --- a/test/built-ins/Atomics/wait/bigint/value-not-equal.js +++ b/test/built-ins/Atomics/wait/bigint/value-not-equal.js @@ -18,12 +18,12 @@ includes: [atomicsHelper.js] features: [Atomics, BigInt, SharedArrayBuffer, TypedArray] ---*/ -var value = 42; +const value = 42n; $262.agent.start(` $262.agent.receiveBroadcast(function(sab) { const i64a = new BigInt64Array(sab); - + Atomics.add(i64a, 1, 1); $262.agent.report(Atomics.store(i64a, 0, ${value})); $262.agent.report(Atomics.wait(i64a, 0, 0)); $262.agent.leaving(); @@ -35,8 +35,16 @@ const i64a = new BigInt64Array( ); $262.agent.broadcast(i64a.buffer); -$262.agent.sleep(100); +$262.agent.waitUntil(i64a, 1, 1); -assert.sameValue($262.agent.getReport(), value.toString()); -assert.sameValue($262.agent.getReport(), 'not-equal'); +assert.sameValue( + $262.agent.getReport(), + '42', + '$262.agent.getReport() returns "42"' +); +assert.sameValue( + $262.agent.getReport(), + 'not-equal', + '$262.agent.getReport() returns "not-equal"' +); diff --git a/test/built-ins/Atomics/wait/bigint/waiterlist-order-of-operations-is-fifo.js b/test/built-ins/Atomics/wait/bigint/waiterlist-order-of-operations-is-fifo.js index 95a554b72d..f9758bac6a 100644 --- a/test/built-ins/Atomics/wait/bigint/waiterlist-order-of-operations-is-fifo.js +++ b/test/built-ins/Atomics/wait/bigint/waiterlist-order-of-operations-is-fifo.js @@ -24,7 +24,7 @@ $262.agent.start(` const i64a = new BigInt64Array(sab); $262.agent.report(${agent1}); - $262.agent.report(Atomics.wait(i64a, 1, 0)); + $262.agent.report(Atomics.wait(i64a, 1, 0n)); $262.agent.report(${agent1}); $262.agent.leaving(); }); @@ -35,7 +35,7 @@ $262.agent.start(` const i64a = new BigInt64Array(sab); $262.agent.report(${agent2}); - $262.agent.report(Atomics.wait(i64a, 2, 0)); + $262.agent.report(Atomics.wait(i64a, 2, 0n)); $262.agent.report(${agent2}); $262.agent.leaving(); }); @@ -46,7 +46,7 @@ $262.agent.start(` const i64a = new BigInt64Array(sab); $262.agent.report(${agent3}); - $262.agent.report(Atomics.wait(i64a, 3, 0)); + $262.agent.report(Atomics.wait(i64a, 3, 0n)); $262.agent.report(${agent3}); $262.agent.leaving(); }); @@ -64,14 +64,26 @@ $262.agent.sleep(100); const started = [$262.agent.getReport(), $262.agent.getReport(), $262.agent.getReport()]; // Agents must wake in the order they waited -assert.sameValue(Atomics.wake(i64a, 1, 1), 1); -assert.sameValue($262.agent.getReport(), 'ok'); -assert.sameValue($262.agent.getReport(), started[0]); +assert.sameValue(Atomics.wake(i64a, 1, 1), 1, 'Atomics.wake(i64a, 1, 1) returns 1'); +assert.sameValue($262.agent.getReport(), 'ok', '$262.agent.getReport() returns "ok"'); +assert.sameValue( + $262.agent.getReport(), + started[0], + `$262.agent.getReport() returns the value of 'started[0]' (${started[0]})` +); -assert.sameValue(Atomics.wake(i64a, 2, 1), 1); -assert.sameValue($262.agent.getReport(), 'ok'); -assert.sameValue($262.agent.getReport(), started[1]); +assert.sameValue(Atomics.wake(i64a, 2, 1), 1, 'Atomics.wake(i64a, 2, 1) returns 1'); +assert.sameValue($262.agent.getReport(), 'ok', '$262.agent.getReport() returns "ok"'); +assert.sameValue( + $262.agent.getReport(), + started[1], + `$262.agent.getReport() returns the value of 'started[1]' (${started[1]})` +); -assert.sameValue(Atomics.wake(i64a, 3, 1), 1); -assert.sameValue($262.agent.getReport(), 'ok'); -assert.sameValue($262.agent.getReport(), started[2]); +assert.sameValue(Atomics.wake(i64a, 3, 1), 1, 'Atomics.wake(i64a, 3, 1) returns 1'); +assert.sameValue($262.agent.getReport(), 'ok', '$262.agent.getReport() returns "ok"'); +assert.sameValue( + $262.agent.getReport(), + started[2], + `$262.agent.getReport() returns the value of 'started[2]' (${started[2]})` +); diff --git a/test/built-ins/Atomics/wait/bigint/was-woken-before-timeout.js b/test/built-ins/Atomics/wait/bigint/was-woken-before-timeout.js index d9084dcdf5..48ad7d3abe 100644 --- a/test/built-ins/Atomics/wait/bigint/was-woken-before-timeout.js +++ b/test/built-ins/Atomics/wait/bigint/was-woken-before-timeout.js @@ -29,7 +29,7 @@ $262.agent.start(` $262.agent.receiveBroadcast(function(sab) { const i64a = new BigInt64Array(sab); const before = $262.agent.monotonicNow(); - const unpark = Atomics.wait(i64a, 0, 0, ${timeout}); + const unpark = Atomics.wait(i64a, 0, 0n, ${timeout}); $262.agent.report($262.agent.monotonicNow() - before); $262.agent.report(unpark); $262.agent.leaving(); @@ -43,14 +43,14 @@ const i64a = new BigInt64Array( $262.agent.broadcast(i64a.buffer); $262.agent.sleep(sleeping); -assert.sameValue(Atomics.wake(i64a, 0), 1); +assert.sameValue(Atomics.wake(i64a, 0), 1, 'Atomics.wake(i64a, 0) returns 1'); const lapse = $262.agent.getReport(); assert( sleeping + lapse < timeout, - `${sleeping + lapse} should be less than ${timeout}` + 'The result of `(sleeping + lapse < timeout)` is true' ); -assert.sameValue($262.agent.getReport(), 'ok'); +assert.sameValue($262.agent.getReport(), 'ok', '$262.agent.getReport() returns "ok"'); diff --git a/test/built-ins/Atomics/wait/cannot-suspend-throws.js b/test/built-ins/Atomics/wait/cannot-suspend-throws.js index 39792eb682..48941b8cab 100644 --- a/test/built-ins/Atomics/wait/cannot-suspend-throws.js +++ b/test/built-ins/Atomics/wait/cannot-suspend-throws.js @@ -24,4 +24,4 @@ const i32a = new Int32Array( assert.throws(TypeError, function() { Atomics.wait(i32a, 0, 0, 0); -}); +}, '`Atomics.wait(i32a, 0, 0, 0)` throws TypeError'); diff --git a/test/built-ins/Atomics/wait/false-for-timeout-agent.js b/test/built-ins/Atomics/wait/false-for-timeout-agent.js index 1bdda0a50e..85bd22bc85 100644 --- a/test/built-ins/Atomics/wait/false-for-timeout-agent.js +++ b/test/built-ins/Atomics/wait/false-for-timeout-agent.js @@ -47,15 +47,27 @@ const i32a = new Int32Array( $262.agent.broadcast(i32a.buffer); $262.agent.sleep(100); -assert.sameValue($262.agent.getReport(), 'timed-out'); -assert.sameValue($262.agent.getReport(), 'timed-out'); -assert.sameValue($262.agent.getReport(), 'timed-out'); +assert.sameValue( + $262.agent.getReport(), + 'timed-out', + '$262.agent.getReport() returns "timed-out"' +); +assert.sameValue( + $262.agent.getReport(), + 'timed-out', + '$262.agent.getReport() returns "timed-out"' +); +assert.sameValue( + $262.agent.getReport(), + 'timed-out', + '$262.agent.getReport() returns "timed-out"' +); var lapse = $262.agent.getReport(); -assert(lapse >= 0, 'timeout should be a min of 0ms'); +assert(lapse >= 0, 'The result of `(lapse >= 0)` is true (The result of `(lapse >= 0)` is true (timeout should be a min of 0ms))'); -assert(lapse <= $262.agent.MAX_TIME_EPSILON, `timeout should be a max of ${$262.agent.MAX_TIME_EPSILON}`); +assert(lapse <= $262.agent.MAX_TIME_EPSILON, 'The result of `(lapse <= $262.agent.MAX_TIME_EPSILON)` is true (The result of `(lapse <= $262.agent.MAX_TIME_EPSILON)` is true)'); -assert.sameValue(Atomics.wake(i32a, 0), 0); +assert.sameValue(Atomics.wake(i32a, 0), 0, 'Atomics.wake(i32a, 0) returns 0'); diff --git a/test/built-ins/Atomics/wait/false-for-timeout.js b/test/built-ins/Atomics/wait/false-for-timeout.js index b79fe25fe3..c008d21f61 100644 --- a/test/built-ins/Atomics/wait/false-for-timeout.js +++ b/test/built-ins/Atomics/wait/false-for-timeout.js @@ -32,7 +32,19 @@ const toPrimitive = { } }; -assert.sameValue(Atomics.wait(i32a, 0, 0, false), 'timed-out'); -assert.sameValue(Atomics.wait(i32a, 0, 0, valueOf), 'timed-out'); -assert.sameValue(Atomics.wait(i32a, 0, 0, toPrimitive), 'timed-out'); +assert.sameValue( + Atomics.wait(i32a, 0, 0, false), + 'timed-out', + 'Atomics.wait(i32a, 0, 0, false) returns "timed-out"' +); +assert.sameValue( + Atomics.wait(i32a, 0, 0, valueOf), + 'timed-out', + 'Atomics.wait(i32a, 0, 0, valueOf) returns "timed-out"' +); +assert.sameValue( + Atomics.wait(i32a, 0, 0, toPrimitive), + 'timed-out', + 'Atomics.wait(i32a, 0, 0, toPrimitive) returns "timed-out"' +); diff --git a/test/built-ins/Atomics/wait/good-views.js b/test/built-ins/Atomics/wait/good-views.js index 536293c23e..f699c69346 100644 --- a/test/built-ins/Atomics/wait/good-views.js +++ b/test/built-ins/Atomics/wait/good-views.js @@ -44,6 +44,18 @@ $262.agent.start(` $262.agent.leaving(); `); -assert.sameValue($262.agent.getReport(), 'A timed-out'); -assert.sameValue($262.agent.getReport(), 'B not-equal'); -assert.sameValue($262.agent.getReport(), 'C not-equal'); +assert.sameValue( + $262.agent.getReport(), + 'A timed-out', + '$262.agent.getReport() returns "A timed-out"' +); +assert.sameValue( + $262.agent.getReport(), + 'B not-equal', + '$262.agent.getReport() returns "B not-equal"' +); +assert.sameValue( + $262.agent.getReport(), + 'C not-equal', + '$262.agent.getReport() returns "C not-equal"' +); diff --git a/test/built-ins/Atomics/wait/nan-for-timeout.js b/test/built-ins/Atomics/wait/nan-for-timeout.js index 7ae886c772..3a1b109e0d 100644 --- a/test/built-ins/Atomics/wait/nan-for-timeout.js +++ b/test/built-ins/Atomics/wait/nan-for-timeout.js @@ -32,5 +32,5 @@ const i32a = new Int32Array( $262.agent.broadcast(i32a.buffer); $262.agent.sleep(500); // Ample time -assert.sameValue(Atomics.wake(i32a, 0), 1); -assert.sameValue($262.agent.getReport(), "ok"); +assert.sameValue(Atomics.wake(i32a, 0), 1, 'Atomics.wake(i32a, 0) returns 1'); +assert.sameValue($262.agent.getReport(), "ok", '$262.agent.getReport() returns "ok"'); diff --git a/test/built-ins/Atomics/wait/negative-index-throws.js b/test/built-ins/Atomics/wait/negative-index-throws.js index 5cb009486f..0c2ecffcf5 100644 --- a/test/built-ins/Atomics/wait/negative-index-throws.js +++ b/test/built-ins/Atomics/wait/negative-index-throws.js @@ -30,13 +30,13 @@ const poisoned = { assert.throws(RangeError, function() { Atomics.wait(i32a, -Infinity, poisoned, poisoned); -}); +}, '`Atomics.wait(i32a, -Infinity, poisoned, poisoned)` throws RangeError'); assert.throws(RangeError, function() { Atomics.wait(i32a, -7.999, poisoned, poisoned); -}); +}, '`Atomics.wait(i32a, -7.999, poisoned, poisoned)` throws RangeError'); assert.throws(RangeError, function() { Atomics.wait(i32a, -1, poisoned, poisoned); -}); +}, '`Atomics.wait(i32a, -1, poisoned, poisoned)` throws RangeError'); assert.throws(RangeError, function() { Atomics.wait(i32a, -300, poisoned, poisoned); -}); +}, '`Atomics.wait(i32a, -300, poisoned, poisoned)` throws RangeError'); diff --git a/test/built-ins/Atomics/wait/negative-timeout-agent.js b/test/built-ins/Atomics/wait/negative-timeout-agent.js index 4b93eeb05f..15ee04348d 100644 --- a/test/built-ins/Atomics/wait/negative-timeout-agent.js +++ b/test/built-ins/Atomics/wait/negative-timeout-agent.js @@ -24,5 +24,9 @@ const i32a = new Int32Array( $262.agent.broadcast(i32a.buffer); $262.agent.sleep(100); -assert.sameValue($262.agent.getReport(), 'timed-out'); -assert.sameValue(Atomics.wake(i32a, 0), 0); +assert.sameValue( + $262.agent.getReport(), + 'timed-out', + '$262.agent.getReport() returns "timed-out"' +); +assert.sameValue(Atomics.wake(i32a, 0), 0, 'Atomics.wake(i32a, 0) returns 0'); diff --git a/test/built-ins/Atomics/wait/negative-timeout.js b/test/built-ins/Atomics/wait/negative-timeout.js index 97a2ed91dd..59c74af2c0 100644 --- a/test/built-ins/Atomics/wait/negative-timeout.js +++ b/test/built-ins/Atomics/wait/negative-timeout.js @@ -13,4 +13,8 @@ const i32a = new Int32Array( new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4) ); -assert.sameValue(Atomics.wait(i32a, 0, 0, -1), "timed-out"); +assert.sameValue( + Atomics.wait(i32a, 0, 0, -1), + "timed-out", + 'Atomics.wait(i32a, 0, 0, -1) returns "timed-out"' +); diff --git a/test/built-ins/Atomics/wait/no-spurious-wakeup-on-add.js b/test/built-ins/Atomics/wait/no-spurious-wakeup-on-add.js index 4ed4cc2b37..6e43276b66 100644 --- a/test/built-ins/Atomics/wait/no-spurious-wakeup-on-add.js +++ b/test/built-ins/Atomics/wait/no-spurious-wakeup-on-add.js @@ -33,9 +33,13 @@ Atomics.add(i32a, 0, 1); const lapse = $262.agent.getReport(); assert( lapse >= TIMEOUT, - `${lapse} should be at least ${TIMEOUT}` + 'The result of `(lapse >= TIMEOUT)` is true (The result of `(lapse >= TIMEOUT)` is true)' ); -assert.sameValue($262.agent.getReport(), 'timed-out'); -assert.sameValue(Atomics.wake(i32a, 0), 0); +assert.sameValue( + $262.agent.getReport(), + 'timed-out', + '$262.agent.getReport() returns "timed-out"' +); +assert.sameValue(Atomics.wake(i32a, 0), 0, 'Atomics.wake(i32a, 0) returns 0'); diff --git a/test/built-ins/Atomics/wait/no-spurious-wakeup-on-and.js b/test/built-ins/Atomics/wait/no-spurious-wakeup-on-and.js index 66f6bc7c03..2d6216185b 100644 --- a/test/built-ins/Atomics/wait/no-spurious-wakeup-on-and.js +++ b/test/built-ins/Atomics/wait/no-spurious-wakeup-on-and.js @@ -33,9 +33,13 @@ Atomics.and(i32a, 0, 1); const lapse = $262.agent.getReport(); assert( lapse >= TIMEOUT, - `${lapse} should be at least ${TIMEOUT}` + 'The result of `(lapse >= TIMEOUT)` is true (The result of `(lapse >= TIMEOUT)` is true)' ); -assert.sameValue($262.agent.getReport(), 'timed-out'); -assert.sameValue(Atomics.wake(i32a, 0), 0); +assert.sameValue( + $262.agent.getReport(), + 'timed-out', + '$262.agent.getReport() returns "timed-out"' +); +assert.sameValue(Atomics.wake(i32a, 0), 0, 'Atomics.wake(i32a, 0) returns 0'); diff --git a/test/built-ins/Atomics/wait/no-spurious-wakeup-on-compareExchange.js b/test/built-ins/Atomics/wait/no-spurious-wakeup-on-compareExchange.js index fdb8bd04fe..d48ad4bf56 100644 --- a/test/built-ins/Atomics/wait/no-spurious-wakeup-on-compareExchange.js +++ b/test/built-ins/Atomics/wait/no-spurious-wakeup-on-compareExchange.js @@ -33,7 +33,11 @@ Atomics.compareExchange(i32a, 0, 0, 1); const lapse = $262.agent.getReport(); assert( lapse >= TIMEOUT, - `${lapse} should be at least ${TIMEOUT}` + 'The result of `(lapse >= TIMEOUT)` is true (The result of `(lapse >= TIMEOUT)` is true)' ); -assert.sameValue($262.agent.getReport(), 'timed-out'); -assert.sameValue(Atomics.wake(i32a, 0), 0); +assert.sameValue( + $262.agent.getReport(), + 'timed-out', + '$262.agent.getReport() returns "timed-out"' +); +assert.sameValue(Atomics.wake(i32a, 0), 0, 'Atomics.wake(i32a, 0) returns 0'); diff --git a/test/built-ins/Atomics/wait/no-spurious-wakeup-on-exchange.js b/test/built-ins/Atomics/wait/no-spurious-wakeup-on-exchange.js index 6976bcdfcc..11a9cc295f 100644 --- a/test/built-ins/Atomics/wait/no-spurious-wakeup-on-exchange.js +++ b/test/built-ins/Atomics/wait/no-spurious-wakeup-on-exchange.js @@ -33,8 +33,12 @@ Atomics.exchange(i32a, 0, 1); const lapse = $262.agent.getReport(); assert( lapse >= TIMEOUT, - `${lapse} should be at least ${TIMEOUT}` + 'The result of `(lapse >= TIMEOUT)` is true (The result of `(lapse >= TIMEOUT)` is true)' ); -assert.sameValue($262.agent.getReport(), 'timed-out'); -assert.sameValue(Atomics.wake(i32a, 0), 0); +assert.sameValue( + $262.agent.getReport(), + 'timed-out', + '$262.agent.getReport() returns "timed-out"' +); +assert.sameValue(Atomics.wake(i32a, 0), 0, 'Atomics.wake(i32a, 0) returns 0'); diff --git a/test/built-ins/Atomics/wait/no-spurious-wakeup-on-or.js b/test/built-ins/Atomics/wait/no-spurious-wakeup-on-or.js index 847706e762..7e39a50df1 100644 --- a/test/built-ins/Atomics/wait/no-spurious-wakeup-on-or.js +++ b/test/built-ins/Atomics/wait/no-spurious-wakeup-on-or.js @@ -33,9 +33,13 @@ Atomics.or(i32a, 0, 1); const lapse = $262.agent.getReport(); assert( lapse >= TIMEOUT, - `${lapse} should be at least ${TIMEOUT}` + 'The result of `(lapse >= TIMEOUT)` is true (The result of `(lapse >= TIMEOUT)` is true)' ); -assert.sameValue($262.agent.getReport(), 'timed-out'); -assert.sameValue(Atomics.wake(i32a, 0), 0); +assert.sameValue( + $262.agent.getReport(), + 'timed-out', + '$262.agent.getReport() returns "timed-out"' +); +assert.sameValue(Atomics.wake(i32a, 0), 0, 'Atomics.wake(i32a, 0) returns 0'); diff --git a/test/built-ins/Atomics/wait/no-spurious-wakeup-on-store.js b/test/built-ins/Atomics/wait/no-spurious-wakeup-on-store.js index e2e918fab4..bff44f4f1d 100644 --- a/test/built-ins/Atomics/wait/no-spurious-wakeup-on-store.js +++ b/test/built-ins/Atomics/wait/no-spurious-wakeup-on-store.js @@ -33,8 +33,12 @@ Atomics.store(i32a, 0, 0x111111); const lapse = $262.agent.getReport(); assert( lapse >= TIMEOUT, - `${lapse} should be at least ${TIMEOUT}` + 'The result of `(lapse >= TIMEOUT)` is true (The result of `(lapse >= TIMEOUT)` is true)' ); -assert.sameValue($262.agent.getReport(), 'timed-out'); -assert.sameValue(Atomics.wake(i32a, 0), 0); +assert.sameValue( + $262.agent.getReport(), + 'timed-out', + '$262.agent.getReport() returns "timed-out"' +); +assert.sameValue(Atomics.wake(i32a, 0), 0, 'Atomics.wake(i32a, 0) returns 0'); diff --git a/test/built-ins/Atomics/wait/no-spurious-wakeup-on-sub.js b/test/built-ins/Atomics/wait/no-spurious-wakeup-on-sub.js index 196d3d2604..317157442b 100644 --- a/test/built-ins/Atomics/wait/no-spurious-wakeup-on-sub.js +++ b/test/built-ins/Atomics/wait/no-spurious-wakeup-on-sub.js @@ -33,7 +33,11 @@ Atomics.sub(i32a, 0, 1); const lapse = $262.agent.getReport(); assert( lapse >= TIMEOUT, - `${lapse} should be at least ${TIMEOUT}` + 'The result of `(lapse >= TIMEOUT)` is true (The result of `(lapse >= TIMEOUT)` is true)' ); -assert.sameValue($262.agent.getReport(), 'timed-out'); -assert.sameValue(Atomics.wake(i32a, 0), 0); +assert.sameValue( + $262.agent.getReport(), + 'timed-out', + '$262.agent.getReport() returns "timed-out"' +); +assert.sameValue(Atomics.wake(i32a, 0), 0, 'Atomics.wake(i32a, 0) returns 0'); diff --git a/test/built-ins/Atomics/wait/no-spurious-wakeup-on-xor.js b/test/built-ins/Atomics/wait/no-spurious-wakeup-on-xor.js index 83c7c97af9..e4e0014373 100644 --- a/test/built-ins/Atomics/wait/no-spurious-wakeup-on-xor.js +++ b/test/built-ins/Atomics/wait/no-spurious-wakeup-on-xor.js @@ -33,10 +33,14 @@ Atomics.xor(i32a, 0, 1); const lapse = $262.agent.getReport(); assert( lapse >= TIMEOUT, - `${lapse} should be at least ${TIMEOUT}` + 'The result of `(lapse >= TIMEOUT)` is true (The result of `(lapse >= TIMEOUT)` is true)' ); -assert.sameValue($262.agent.getReport(), 'timed-out'); -assert.sameValue(Atomics.wake(i32a, 0), 0); +assert.sameValue( + $262.agent.getReport(), + 'timed-out', + '$262.agent.getReport() returns "timed-out"' +); +assert.sameValue(Atomics.wake(i32a, 0), 0, 'Atomics.wake(i32a, 0) returns 0'); diff --git a/test/built-ins/Atomics/wait/non-int32-typedarray-throws.js b/test/built-ins/Atomics/wait/non-int32-typedarray-throws.js index b0de7bcef9..fd9df6169f 100644 --- a/test/built-ins/Atomics/wait/non-int32-typedarray-throws.js +++ b/test/built-ins/Atomics/wait/non-int32-typedarray-throws.js @@ -26,53 +26,53 @@ assert.throws(TypeError, function() { new SharedArrayBuffer(Float64Array.BYTES_PER_ELEMENT * 8) ); Atomics.wait(view, poisoned, poisoned, poisoned); -}, 'Float64Array'); +}, '`const view = new Float64Array( new SharedArrayBuffer(Float64Array.BYTES_PER_ELEMENT * 8) ); Atomics.wait(view, poisoned, poisoned, poisoned)` throws TypeError'); assert.throws(TypeError, function() { const view = new Float32Array( new SharedArrayBuffer(Float32Array.BYTES_PER_ELEMENT * 4) ); Atomics.wait(view, poisoned, poisoned, poisoned); -}, 'Float32Array'); +}, '`const view = new Float32Array( new SharedArrayBuffer(Float32Array.BYTES_PER_ELEMENT * 4) ); Atomics.wait(view, poisoned, poisoned, poisoned)` throws TypeError'); assert.throws(TypeError, function() { const view = new Int16Array( new SharedArrayBuffer(Int16Array.BYTES_PER_ELEMENT * 2) ); Atomics.wait(view, poisoned, poisoned, poisoned); -}, 'Int16Array'); +}, '`const view = new Int16Array( new SharedArrayBuffer(Int16Array.BYTES_PER_ELEMENT * 2) ); Atomics.wait(view, poisoned, poisoned, poisoned)` throws TypeError'); assert.throws(TypeError, function() { const view = new Int8Array( new SharedArrayBuffer(Int8Array.BYTES_PER_ELEMENT) ); Atomics.wait(view, poisoned, poisoned, poisoned); -}, 'Int8Array'); +}, '`const view = new Int8Array( new SharedArrayBuffer(Int8Array.BYTES_PER_ELEMENT) ); Atomics.wait(view, poisoned, poisoned, poisoned)` throws TypeError'); assert.throws(TypeError, function() { const view = new Uint32Array( new SharedArrayBuffer(Uint32Array.BYTES_PER_ELEMENT * 4) ); Atomics.wait(view, poisoned, poisoned, poisoned); -}, 'Uint32Array'); +}, '`const view = new Uint32Array( new SharedArrayBuffer(Uint32Array.BYTES_PER_ELEMENT * 4) ); Atomics.wait(view, poisoned, poisoned, poisoned)` throws TypeError'); assert.throws(TypeError, function() { const view = new Uint16Array( new SharedArrayBuffer(Uint16Array.BYTES_PER_ELEMENT * 2) ); Atomics.wait(view, poisoned, poisoned, poisoned); -}, 'Uint16Array'); +}, '`const view = new Uint16Array( new SharedArrayBuffer(Uint16Array.BYTES_PER_ELEMENT * 2) ); Atomics.wait(view, poisoned, poisoned, poisoned)` throws TypeError'); assert.throws(TypeError, function() { const view = new Uint8Array( new SharedArrayBuffer(Uint8Array.BYTES_PER_ELEMENT) ); Atomics.wait(view, poisoned, poisoned, poisoned); -}, 'Uint8Array'); +}, '`const view = new Uint8Array( new SharedArrayBuffer(Uint8Array.BYTES_PER_ELEMENT) ); Atomics.wait(view, poisoned, poisoned, poisoned)` throws TypeError'); assert.throws(TypeError, function() { const view = new Uint8ClampedArray( new SharedArrayBuffer(Uint8ClampedArray.BYTES_PER_ELEMENT) ); Atomics.wait(view, poisoned, poisoned, poisoned); -}, 'Uint8ClampedArray'); +}, '`const view = new Uint8ClampedArray( new SharedArrayBuffer(Uint8ClampedArray.BYTES_PER_ELEMENT) ); Atomics.wait(view, poisoned, poisoned, poisoned)` throws TypeError'); diff --git a/test/built-ins/Atomics/wait/non-shared-bufferdata-throws.js b/test/built-ins/Atomics/wait/non-shared-bufferdata-throws.js index 164af59e2b..4da17d0bd4 100644 --- a/test/built-ins/Atomics/wait/non-shared-bufferdata-throws.js +++ b/test/built-ins/Atomics/wait/non-shared-bufferdata-throws.js @@ -27,8 +27,8 @@ const poisoned = { assert.throws(TypeError, function() { Atomics.wait(i32a, 0, 0, 0); -}); +}, '`Atomics.wait(i32a, 0, 0, 0)` throws TypeError'); assert.throws(TypeError, function() { Atomics.wait(i32a, poisoned, poisoned, poisoned); -}); +}, '`Atomics.wait(i32a, poisoned, poisoned, poisoned)` throws TypeError'); diff --git a/test/built-ins/Atomics/wait/not-a-typedarray-throws.js b/test/built-ins/Atomics/wait/not-a-typedarray-throws.js index 108f235397..62b7388f11 100644 --- a/test/built-ins/Atomics/wait/not-a-typedarray-throws.js +++ b/test/built-ins/Atomics/wait/not-a-typedarray-throws.js @@ -22,8 +22,8 @@ var poisoned = { assert.throws(TypeError, function() { Atomics.wait({}, 0, 0, 0); -}); +}, '`Atomics.wait({}, 0, 0, 0)` throws TypeError'); assert.throws(TypeError, function() { Atomics.wait({}, poisoned, poisoned, poisoned); -}); +}, '`Atomics.wait({}, poisoned, poisoned, poisoned)` throws TypeError'); diff --git a/test/built-ins/Atomics/wait/not-an-object-throws.js b/test/built-ins/Atomics/wait/not-an-object-throws.js index bcd44c9a3a..ce1c0a4937 100644 --- a/test/built-ins/Atomics/wait/not-an-object-throws.js +++ b/test/built-ins/Atomics/wait/not-an-object-throws.js @@ -21,28 +21,28 @@ var poisoned = { assert.throws(TypeError, function() { Atomics.wait(null, poisoned, poisoned, poisoned); -}, 'null'); +}, '`Atomics.wait(null, poisoned, poisoned, poisoned)` throws TypeError'); assert.throws(TypeError, function() { Atomics.wait(undefined, poisoned, poisoned, poisoned); -}, 'undefined'); +}, '`Atomics.wait(undefined, poisoned, poisoned, poisoned)` throws TypeError'); assert.throws(TypeError, function() { Atomics.wait(true, poisoned, poisoned, poisoned); -}, 'true'); +}, '`Atomics.wait(true, poisoned, poisoned, poisoned)` throws TypeError'); assert.throws(TypeError, function() { Atomics.wait(false, poisoned, poisoned, poisoned); -}, 'false'); +}, '`Atomics.wait(false, poisoned, poisoned, poisoned)` throws TypeError'); assert.throws(TypeError, function() { Atomics.wait('***string***', poisoned, poisoned, poisoned); -}, 'String'); +}, '`Atomics.wait(\'***string***\', poisoned, poisoned, poisoned)` throws TypeError'); assert.throws(TypeError, function() { Atomics.wait(Number.NEGATIVE_INFINITY, poisoned, poisoned, poisoned); -}, 'Number.NEGATIVE_INFINITY'); +}, '`Atomics.wait(Number.NEGATIVE_INFINITY, poisoned, poisoned, poisoned)` throws TypeError'); assert.throws(TypeError, function() { Atomics.wait(Symbol('***symbol***'), poisoned, poisoned, poisoned); -}, 'Symbol'); +}, '`Atomics.wait(Symbol(\'***symbol***\'), poisoned, poisoned, poisoned)` throws TypeError'); diff --git a/test/built-ins/Atomics/wait/null-bufferdata-throws.js b/test/built-ins/Atomics/wait/null-bufferdata-throws.js index 27bf1f272a..b2a562de7b 100644 --- a/test/built-ins/Atomics/wait/null-bufferdata-throws.js +++ b/test/built-ins/Atomics/wait/null-bufferdata-throws.js @@ -34,4 +34,4 @@ try { assert.throws(TypeError, function() { Atomics.wait(i32a, poisoned, poisoned, poisoned); -}); +}, '`Atomics.wait(i32a, poisoned, poisoned, poisoned)` throws TypeError'); diff --git a/test/built-ins/Atomics/wait/null-for-timeout-agent.js b/test/built-ins/Atomics/wait/null-for-timeout-agent.js index 6ba9a4f5b7..e9add11675 100644 --- a/test/built-ins/Atomics/wait/null-for-timeout-agent.js +++ b/test/built-ins/Atomics/wait/null-for-timeout-agent.js @@ -47,15 +47,27 @@ const i32a = new Int32Array( $262.agent.broadcast(i32a.buffer); $262.agent.sleep(150); -assert.sameValue($262.agent.getReport(), 'timed-out'); -assert.sameValue($262.agent.getReport(), 'timed-out'); -assert.sameValue($262.agent.getReport(), 'timed-out'); +assert.sameValue( + $262.agent.getReport(), + 'timed-out', + '$262.agent.getReport() returns "timed-out"' +); +assert.sameValue( + $262.agent.getReport(), + 'timed-out', + '$262.agent.getReport() returns "timed-out"' +); +assert.sameValue( + $262.agent.getReport(), + 'timed-out', + '$262.agent.getReport() returns "timed-out"' +); const lapse = $262.agent.getReport(); -assert(lapse >= 0, 'timeout should be a min of 0ms'); +assert(lapse >= 0, 'The result of `(lapse >= 0)` is true (The result of `(lapse >= 0)` is true (timeout should be a min of 0ms))'); -assert(lapse <= $262.agent.MAX_TIME_EPSILON, 'timeout should be a max of $262.agent.MAX_TIME_EPSILON'); +assert(lapse <= $262.agent.MAX_TIME_EPSILON, 'The result of `(lapse <= $262.agent.MAX_TIME_EPSILON)` is true (The result of `(lapse <= $262.agent.MAX_TIME_EPSILON)` is true (timeout should be a max of $262.agent.MAX_TIME_EPSILON))'); -assert.sameValue(Atomics.wake(i32a, 0), 0); +assert.sameValue(Atomics.wake(i32a, 0), 0, 'Atomics.wake(i32a, 0) returns 0'); diff --git a/test/built-ins/Atomics/wait/null-for-timeout.js b/test/built-ins/Atomics/wait/null-for-timeout.js index 63c3780c6c..63068dfb20 100644 --- a/test/built-ins/Atomics/wait/null-for-timeout.js +++ b/test/built-ins/Atomics/wait/null-for-timeout.js @@ -32,7 +32,19 @@ const toPrimitive = { } }; -assert.sameValue(Atomics.wait(i32a, 0, 0, null), "timed-out"); -assert.sameValue(Atomics.wait(i32a, 0, 0, valueOf), "timed-out"); -assert.sameValue(Atomics.wait(i32a, 0, 0, toPrimitive), "timed-out"); +assert.sameValue( + Atomics.wait(i32a, 0, 0, null), + "timed-out", + 'Atomics.wait(i32a, 0, 0, null) returns "timed-out"' +); +assert.sameValue( + Atomics.wait(i32a, 0, 0, valueOf), + "timed-out", + 'Atomics.wait(i32a, 0, 0, valueOf) returns "timed-out"' +); +assert.sameValue( + Atomics.wait(i32a, 0, 0, toPrimitive), + "timed-out", + 'Atomics.wait(i32a, 0, 0, toPrimitive) returns "timed-out"' +); diff --git a/test/built-ins/Atomics/wait/object-for-timeout-agent.js b/test/built-ins/Atomics/wait/object-for-timeout-agent.js index 6446096693..12892f9e90 100644 --- a/test/built-ins/Atomics/wait/object-for-timeout-agent.js +++ b/test/built-ins/Atomics/wait/object-for-timeout-agent.js @@ -52,15 +52,27 @@ const i32a = new Int32Array( $262.agent.broadcast(i32a.buffer); $262.agent.sleep(150); -assert.sameValue($262.agent.getReport(), 'timed-out'); -assert.sameValue($262.agent.getReport(), 'timed-out'); -assert.sameValue($262.agent.getReport(), 'timed-out'); +assert.sameValue( + $262.agent.getReport(), + 'timed-out', + '$262.agent.getReport() returns "timed-out"' +); +assert.sameValue( + $262.agent.getReport(), + 'timed-out', + '$262.agent.getReport() returns "timed-out"' +); +assert.sameValue( + $262.agent.getReport(), + 'timed-out', + '$262.agent.getReport() returns "timed-out"' +); const lapse = $262.agent.getReport(); -assert(lapse >= 0, 'timeout should be a min of 0ms'); +assert(lapse >= 0, 'The result of `(lapse >= 0)` is true (The result of `(lapse >= 0)` is true (timeout should be a min of 0ms))'); -assert(lapse <= $262.agent.MAX_TIME_EPSILON, 'timeout should be a max of $$262.agent.MAX_TIME_EPSILON'); +assert(lapse <= $262.agent.MAX_TIME_EPSILON, 'The result of `(lapse <= $262.agent.MAX_TIME_EPSILON)` is true (The result of `(lapse <= $262.agent.MAX_TIME_EPSILON)` is true (timeout should be a max of $$262.agent.MAX_TIME_EPSILON))'); -assert.sameValue(Atomics.wake(i32a, 0), 0); +assert.sameValue(Atomics.wake(i32a, 0), 0, 'Atomics.wake(i32a, 0) returns 0'); diff --git a/test/built-ins/Atomics/wait/object-for-timeout.js b/test/built-ins/Atomics/wait/object-for-timeout.js index 6af1359955..4699294d6c 100644 --- a/test/built-ins/Atomics/wait/object-for-timeout.js +++ b/test/built-ins/Atomics/wait/object-for-timeout.js @@ -42,6 +42,18 @@ const toPrimitive = { } }; -assert.sameValue(Atomics.wait(i32a, 0, 0, valueOf), 'timed-out'); -assert.sameValue(Atomics.wait(i32a, 0, 0, toString), 'timed-out'); -assert.sameValue(Atomics.wait(i32a, 0, 0, toPrimitive), 'timed-out'); +assert.sameValue( + Atomics.wait(i32a, 0, 0, valueOf), + 'timed-out', + 'Atomics.wait(i32a, 0, 0, valueOf) returns "timed-out"' +); +assert.sameValue( + Atomics.wait(i32a, 0, 0, toString), + 'timed-out', + 'Atomics.wait(i32a, 0, 0, toString) returns "timed-out"' +); +assert.sameValue( + Atomics.wait(i32a, 0, 0, toPrimitive), + 'timed-out', + 'Atomics.wait(i32a, 0, 0, toPrimitive) returns "timed-out"' +); diff --git a/test/built-ins/Atomics/wait/out-of-range-index-throws.js b/test/built-ins/Atomics/wait/out-of-range-index-throws.js index a50c31113d..023bb7237c 100644 --- a/test/built-ins/Atomics/wait/out-of-range-index-throws.js +++ b/test/built-ins/Atomics/wait/out-of-range-index-throws.js @@ -28,13 +28,13 @@ const poisoned = { assert.throws(RangeError, function() { Atomics.wait(i32a, Infinity, poisoned, poisoned); -}); +}, '`Atomics.wait(i32a, Infinity, poisoned, poisoned)` throws RangeError'); assert.throws(RangeError, function() { Atomics.wait(i32a, -1, poisoned, poisoned); -}); +}, '`Atomics.wait(i32a, -1, poisoned, poisoned)` throws RangeError'); assert.throws(RangeError, function() { Atomics.wait(i32a, 4, poisoned, poisoned); -}); +}, '`Atomics.wait(i32a, 4, poisoned, poisoned)` throws RangeError'); assert.throws(RangeError, function() { Atomics.wait(i32a, 200, poisoned, poisoned); -}); +}, '`Atomics.wait(i32a, 200, poisoned, poisoned)` throws RangeError'); diff --git a/test/built-ins/Atomics/wait/poisoned-object-for-timeout-throws-agent.js b/test/built-ins/Atomics/wait/poisoned-object-for-timeout-throws-agent.js index 6642ccfe3a..be288ee5f7 100644 --- a/test/built-ins/Atomics/wait/poisoned-object-for-timeout-throws-agent.js +++ b/test/built-ins/Atomics/wait/poisoned-object-for-timeout-throws-agent.js @@ -54,14 +54,22 @@ const i32a = new Int32Array( $262.agent.broadcast(i32a.buffer); $262.agent.sleep(150); -assert.sameValue($262.agent.getReport(), 'poisonedValueOf'); -assert.sameValue($262.agent.getReport(), 'poisonedToPrimitive'); +assert.sameValue( + $262.agent.getReport(), + 'poisonedValueOf', + '$262.agent.getReport() returns "poisonedValueOf"' +); +assert.sameValue( + $262.agent.getReport(), + 'poisonedToPrimitive', + '$262.agent.getReport() returns "poisonedToPrimitive"' +); const lapse = $262.agent.getReport(); -assert(lapse >= 0, 'timeout should be a min of 0ms'); +assert(lapse >= 0, 'The result of `(lapse >= 0)` is true (The result of `(lapse >= 0)` is true (timeout should be a min of 0ms))'); -assert(lapse <= $262.agent.MAX_TIME_EPSILON, 'timeout should be a max of $$262.agent.MAX_TIME_EPSILON'); +assert(lapse <= $262.agent.MAX_TIME_EPSILON, 'The result of `(lapse <= $262.agent.MAX_TIME_EPSILON)` is true (The result of `(lapse <= $262.agent.MAX_TIME_EPSILON)` is true (timeout should be a max of $$262.agent.MAX_TIME_EPSILON))'); -assert.sameValue(Atomics.wake(i32a, 0), 0); +assert.sameValue(Atomics.wake(i32a, 0), 0, 'Atomics.wake(i32a, 0) returns 0'); diff --git a/test/built-ins/Atomics/wait/poisoned-object-for-timeout-throws.js b/test/built-ins/Atomics/wait/poisoned-object-for-timeout-throws.js index b29c961039..e2880c29f4 100644 --- a/test/built-ins/Atomics/wait/poisoned-object-for-timeout-throws.js +++ b/test/built-ins/Atomics/wait/poisoned-object-for-timeout-throws.js @@ -36,8 +36,8 @@ const poisonedToPrimitive = { assert.throws(Test262Error, function() { Atomics.wait(i32a, 0, 0, poisonedValueOf); -}); +}, '`Atomics.wait(i32a, 0, 0, poisonedValueOf)` throws Test262Error'); assert.throws(Test262Error, function() { Atomics.wait(i32a, 0, 0, poisonedToPrimitive); -}); +}, '`Atomics.wait(i32a, 0, 0, poisonedToPrimitive)` throws Test262Error'); diff --git a/test/built-ins/Atomics/wait/symbol-for-index-throws-agent.js b/test/built-ins/Atomics/wait/symbol-for-index-throws-agent.js index 7065e97a85..86e533b3dc 100644 --- a/test/built-ins/Atomics/wait/symbol-for-index-throws-agent.js +++ b/test/built-ins/Atomics/wait/symbol-for-index-throws-agent.js @@ -67,13 +67,21 @@ const i32a = new Int32Array( $262.agent.broadcast(i32a.buffer); $262.agent.sleep(150); -assert.sameValue($262.agent.getReport(), 'Symbol("1")'); -assert.sameValue($262.agent.getReport(), 'Symbol("2")'); +assert.sameValue( + $262.agent.getReport(), + 'Symbol("1")', + '$262.agent.getReport() returns "Symbol("1")"' +); +assert.sameValue( + $262.agent.getReport(), + 'Symbol("2")', + '$262.agent.getReport() returns "Symbol("2")"' +); const lapse = $262.agent.getReport(); -assert(lapse >= 0, 'timeout should be a min of 0ms'); -assert(lapse <= $262.agent.MAX_TIME_EPSILON, 'timeout should be a max of $$262.agent.MAX_TIME_EPSILON'); +assert(lapse >= 0, 'The result of `(lapse >= 0)` is true (The result of `(lapse >= 0)` is true (timeout should be a min of 0ms))'); +assert(lapse <= $262.agent.MAX_TIME_EPSILON, 'The result of `(lapse <= $262.agent.MAX_TIME_EPSILON)` is true (The result of `(lapse <= $262.agent.MAX_TIME_EPSILON)` is true (timeout should be a max of $$262.agent.MAX_TIME_EPSILON))'); -assert.sameValue(Atomics.wake(i32a, 0), 0); +assert.sameValue(Atomics.wake(i32a, 0), 0, 'Atomics.wake(i32a, 0) returns 0'); diff --git a/test/built-ins/Atomics/wait/symbol-for-index-throws.js b/test/built-ins/Atomics/wait/symbol-for-index-throws.js index 0956311742..77a562f015 100644 --- a/test/built-ins/Atomics/wait/symbol-for-index-throws.js +++ b/test/built-ins/Atomics/wait/symbol-for-index-throws.js @@ -46,16 +46,16 @@ const poisonedToPrimitive = { assert.throws(Test262Error, function() { Atomics.wait(i32a, poisonedValueOf, poisonedValueOf, poisonedValueOf); -}); +}, '`Atomics.wait(i32a, poisonedValueOf, poisonedValueOf, poisonedValueOf)` throws Test262Error'); assert.throws(Test262Error, function() { Atomics.wait(i32a, poisonedToPrimitive, poisonedToPrimitive, poisonedToPrimitive); -}); +}, '`Atomics.wait(i32a, poisonedToPrimitive, poisonedToPrimitive, poisonedToPrimitive)` throws Test262Error'); assert.throws(TypeError, function() { Atomics.wait(i32a, Symbol('foo'), poisonedValueOf, poisonedValueOf); -}); +}, '`Atomics.wait(i32a, Symbol(\'foo\'), poisonedValueOf, poisonedValueOf)` throws TypeError'); assert.throws(TypeError, function() { Atomics.wait(i32a, Symbol('foo'), poisonedToPrimitive, poisonedToPrimitive); -}); +}, '`Atomics.wait(i32a, Symbol(\'foo\'), poisonedToPrimitive, poisonedToPrimitive)` throws TypeError'); diff --git a/test/built-ins/Atomics/wait/symbol-for-timeout-throws-agent.js b/test/built-ins/Atomics/wait/symbol-for-timeout-throws-agent.js index a0b3316558..640cda2060 100644 --- a/test/built-ins/Atomics/wait/symbol-for-timeout-throws-agent.js +++ b/test/built-ins/Atomics/wait/symbol-for-timeout-throws-agent.js @@ -41,12 +41,20 @@ const i32a = new Int32Array( $262.agent.broadcast(i32a.buffer); $262.agent.sleep(150); -assert.sameValue($262.agent.getReport(), 'Symbol("1")'); -assert.sameValue($262.agent.getReport(), 'Symbol("2")'); +assert.sameValue( + $262.agent.getReport(), + 'Symbol("1")', + '$262.agent.getReport() returns "Symbol("1")"' +); +assert.sameValue( + $262.agent.getReport(), + 'Symbol("2")', + '$262.agent.getReport() returns "Symbol("2")"' +); const lapse = $262.agent.getReport(); -assert(lapse >= 0, 'timeout should be a min of 0ms'); -assert(lapse <= $262.agent.MAX_TIME_EPSILON, 'timeout should be a max of $$262.agent.MAX_TIME_EPSILON'); +assert(lapse >= 0, 'The result of `(lapse >= 0)` is true (The result of `(lapse >= 0)` is true (timeout should be a min of 0ms))'); +assert(lapse <= $262.agent.MAX_TIME_EPSILON, 'The result of `(lapse <= $262.agent.MAX_TIME_EPSILON)` is true (The result of `(lapse <= $262.agent.MAX_TIME_EPSILON)` is true (timeout should be a max of $$262.agent.MAX_TIME_EPSILON))'); -assert.sameValue(Atomics.wake(i32a, 0), 0); +assert.sameValue(Atomics.wake(i32a, 0), 0, 'Atomics.wake(i32a, 0) returns 0'); diff --git a/test/built-ins/Atomics/wait/symbol-for-timeout-throws.js b/test/built-ins/Atomics/wait/symbol-for-timeout-throws.js index 6030e0fd13..7d2afedd3f 100644 --- a/test/built-ins/Atomics/wait/symbol-for-timeout-throws.js +++ b/test/built-ins/Atomics/wait/symbol-for-timeout-throws.js @@ -32,16 +32,16 @@ var poisonedToPrimitive = { assert.throws(Test262Error, function() { Atomics.wait(i32a, 0, 0, poisonedValueOf); -}); +}, '`Atomics.wait(i32a, 0, 0, poisonedValueOf)` throws Test262Error'); assert.throws(Test262Error, function() { Atomics.wait(i32a, 0, 0, poisonedToPrimitive); -}); +}, '`Atomics.wait(i32a, 0, 0, poisonedToPrimitive)` throws Test262Error'); assert.throws(TypeError, function() { Atomics.wait(i32a, 0, 0, Symbol("foo")); -}); +}, '`Atomics.wait(i32a, 0, 0, Symbol("foo"))` throws TypeError'); assert.throws(TypeError, function() { Atomics.wait(i32a, 0, 0, Symbol("foo")); -}); +}, '`Atomics.wait(i32a, 0, 0, Symbol("foo"))` throws TypeError'); diff --git a/test/built-ins/Atomics/wait/symbol-for-value-throws-agent.js b/test/built-ins/Atomics/wait/symbol-for-value-throws-agent.js index 6a2faa17db..1206fe1c14 100644 --- a/test/built-ins/Atomics/wait/symbol-for-value-throws-agent.js +++ b/test/built-ins/Atomics/wait/symbol-for-value-throws-agent.js @@ -58,12 +58,20 @@ const i32a = new Int32Array( $262.agent.broadcast(i32a.buffer); $262.agent.sleep(150); -assert.sameValue($262.agent.getReport(), 'Symbol("1")'); -assert.sameValue($262.agent.getReport(), 'Symbol("2")'); +assert.sameValue( + $262.agent.getReport(), + 'Symbol("1")', + '$262.agent.getReport() returns "Symbol("1")"' +); +assert.sameValue( + $262.agent.getReport(), + 'Symbol("2")', + '$262.agent.getReport() returns "Symbol("2")"' +); const lapse = $262.agent.getReport(); -assert(lapse >= 0, 'timeout should be a min of 0ms'); -assert(lapse <= $262.agent.MAX_TIME_EPSILON, 'timeout should be a max of $$262.agent.MAX_TIME_EPSILON'); +assert(lapse >= 0, 'The result of `(lapse >= 0)` is true (The result of `(lapse >= 0)` is true (timeout should be a min of 0ms))'); +assert(lapse <= $262.agent.MAX_TIME_EPSILON, 'The result of `(lapse <= $262.agent.MAX_TIME_EPSILON)` is true (The result of `(lapse <= $262.agent.MAX_TIME_EPSILON)` is true (timeout should be a max of $$262.agent.MAX_TIME_EPSILON))'); -assert.sameValue(Atomics.wake(i32a, 0), 0); +assert.sameValue(Atomics.wake(i32a, 0), 0, 'Atomics.wake(i32a, 0) returns 0'); diff --git a/test/built-ins/Atomics/wait/symbol-for-value-throws.js b/test/built-ins/Atomics/wait/symbol-for-value-throws.js index d34cf24858..c414005e67 100644 --- a/test/built-ins/Atomics/wait/symbol-for-value-throws.js +++ b/test/built-ins/Atomics/wait/symbol-for-value-throws.js @@ -37,17 +37,17 @@ const poisonedToPrimitive = { assert.throws(Test262Error, function() { Atomics.wait(i32a, 0, poisonedValueOf, poisonedValueOf); -}); +}, '`Atomics.wait(i32a, 0, poisonedValueOf, poisonedValueOf)` throws Test262Error'); assert.throws(Test262Error, function() { Atomics.wait(i32a, 0, poisonedToPrimitive, poisonedToPrimitive); -}); +}, '`Atomics.wait(i32a, 0, poisonedToPrimitive, poisonedToPrimitive)` throws Test262Error'); assert.throws(TypeError, function() { Atomics.wait(i32a, 0, Symbol("foo"), poisonedValueOf); -}); +}, '`Atomics.wait(i32a, 0, Symbol("foo"), poisonedValueOf)` throws TypeError'); assert.throws(TypeError, function() { Atomics.wait(i32a, 0, Symbol("foo"), poisonedToPrimitive); -}); +}, '`Atomics.wait(i32a, 0, Symbol("foo"), poisonedToPrimitive)` throws TypeError'); diff --git a/test/built-ins/Atomics/wait/true-for-timeout-agent.js b/test/built-ins/Atomics/wait/true-for-timeout-agent.js index be3adbb639..1b8e090a13 100644 --- a/test/built-ins/Atomics/wait/true-for-timeout-agent.js +++ b/test/built-ins/Atomics/wait/true-for-timeout-agent.js @@ -47,15 +47,27 @@ const i32a = new Int32Array( $262.agent.broadcast(i32a.buffer); $262.agent.sleep(150); -assert.sameValue($262.agent.getReport(), 'timed-out'); -assert.sameValue($262.agent.getReport(), 'timed-out'); -assert.sameValue($262.agent.getReport(), 'timed-out'); +assert.sameValue( + $262.agent.getReport(), + 'timed-out', + '$262.agent.getReport() returns "timed-out"' +); +assert.sameValue( + $262.agent.getReport(), + 'timed-out', + '$262.agent.getReport() returns "timed-out"' +); +assert.sameValue( + $262.agent.getReport(), + 'timed-out', + '$262.agent.getReport() returns "timed-out"' +); const lapse = $262.agent.getReport(); -assert(lapse >= 0, 'timeout should be a min of 0ms'); +assert(lapse >= 0, 'The result of `(lapse >= 0)` is true (The result of `(lapse >= 0)` is true (timeout should be a min of 0ms))'); -assert(lapse <= $262.agent.MAX_TIME_EPSILON, 'timeout should be a max of $$262.agent.MAX_TIME_EPSILON'); +assert(lapse <= $262.agent.MAX_TIME_EPSILON, 'The result of `(lapse <= $262.agent.MAX_TIME_EPSILON)` is true (The result of `(lapse <= $262.agent.MAX_TIME_EPSILON)` is true (timeout should be a max of $$262.agent.MAX_TIME_EPSILON))'); -assert.sameValue(Atomics.wake(i32a, 0), 0); +assert.sameValue(Atomics.wake(i32a, 0), 0, 'Atomics.wake(i32a, 0) returns 0'); diff --git a/test/built-ins/Atomics/wait/true-for-timeout.js b/test/built-ins/Atomics/wait/true-for-timeout.js index 64b4b8710b..1db2adc508 100644 --- a/test/built-ins/Atomics/wait/true-for-timeout.js +++ b/test/built-ins/Atomics/wait/true-for-timeout.js @@ -32,7 +32,19 @@ const toPrimitive = { } }; -assert.sameValue(Atomics.wait(i32a, 0, 0, true), 'timed-out'); -assert.sameValue(Atomics.wait(i32a, 0, 0, valueOf), 'timed-out'); -assert.sameValue(Atomics.wait(i32a, 0, 0, toPrimitive), 'timed-out'); +assert.sameValue( + Atomics.wait(i32a, 0, 0, true), + 'timed-out', + 'Atomics.wait(i32a, 0, 0, true) returns "timed-out"' +); +assert.sameValue( + Atomics.wait(i32a, 0, 0, valueOf), + 'timed-out', + 'Atomics.wait(i32a, 0, 0, valueOf) returns "timed-out"' +); +assert.sameValue( + Atomics.wait(i32a, 0, 0, toPrimitive), + 'timed-out', + 'Atomics.wait(i32a, 0, 0, toPrimitive) returns "timed-out"' +); diff --git a/test/built-ins/Atomics/wait/undefined-for-timeout.js b/test/built-ins/Atomics/wait/undefined-for-timeout.js index fd38c69ab3..304d40d4ef 100644 --- a/test/built-ins/Atomics/wait/undefined-for-timeout.js +++ b/test/built-ins/Atomics/wait/undefined-for-timeout.js @@ -49,7 +49,11 @@ const i32a = new Int32Array( $262.agent.broadcast(i32a.buffer); $262.agent.waitUntil(i32a, RUNNING, NUMAGENT); -assert.sameValue(Atomics.wake(i32a, WAIT_INDEX, WAKECOUNT), WAKECOUNT); +assert.sameValue( + Atomics.wake(i32a, WAIT_INDEX, WAKECOUNT), + WAKECOUNT, + 'Atomics.wake(i32a, WAIT_INDEX, WAKECOUNT) returns the value of `WAKECOUNT` (2)' +); const reports = []; for (var i = 0; i < NUMAGENT; i++) { @@ -57,5 +61,5 @@ for (var i = 0; i < NUMAGENT; i++) { } reports.sort(); -assert.sameValue(reports[0], 'A ok'); -assert.sameValue(reports[1], 'B ok'); +assert.sameValue(reports[0], 'A ok', 'The value of reports[0] is "A ok"'); +assert.sameValue(reports[1], 'B ok', 'The value of reports[1] is "B ok"'); diff --git a/test/built-ins/Atomics/wait/undefined-index-defaults-to-zero.js b/test/built-ins/Atomics/wait/undefined-index-defaults-to-zero.js index 6a01b06d9f..eff3c7167b 100644 --- a/test/built-ins/Atomics/wait/undefined-index-defaults-to-zero.js +++ b/test/built-ins/Atomics/wait/undefined-index-defaults-to-zero.js @@ -37,6 +37,6 @@ const i32a = new Int32Array( $262.agent.broadcast(i32a.buffer); $262.agent.sleep(150); -assert.sameValue(Atomics.wake(i32a, 0), 1); // wake at index 0 -assert.sameValue(Atomics.wake(i32a, 0), 0); // wake again at index 0, and 0 agents should be woken -assert.sameValue($262.agent.getReport(), 'ok'); +assert.sameValue(Atomics.wake(i32a, 0), 1, 'Atomics.wake(i32a, 0) returns 1'); // wake at index 0 +assert.sameValue(Atomics.wake(i32a, 0), 0, 'Atomics.wake(i32a, 0) returns 0'); // wake again at index 0, and 0 agents should be woken +assert.sameValue($262.agent.getReport(), 'ok', '$262.agent.getReport() returns "ok"'); diff --git a/test/built-ins/Atomics/wait/value-not-equal.js b/test/built-ins/Atomics/wait/value-not-equal.js index 8111ba45e5..3837eef8b7 100644 --- a/test/built-ins/Atomics/wait/value-not-equal.js +++ b/test/built-ins/Atomics/wait/value-not-equal.js @@ -36,6 +36,14 @@ const i32a = new Int32Array( $262.agent.broadcast(i32a.buffer); $262.agent.sleep(100); -assert.sameValue($262.agent.getReport(), value.toString()); -assert.sameValue($262.agent.getReport(), 'not-equal'); +assert.sameValue( + $262.agent.getReport(), + value.toString(), + '$262.agent.getReport() returns value.toString()' +); +assert.sameValue( + $262.agent.getReport(), + 'not-equal', + '$262.agent.getReport() returns "not-equal"' +); diff --git a/test/built-ins/Atomics/wait/wait-index-value-not-equal.js b/test/built-ins/Atomics/wait/wait-index-value-not-equal.js index 19c6c90a70..a9a6003f2b 100644 --- a/test/built-ins/Atomics/wait/wait-index-value-not-equal.js +++ b/test/built-ins/Atomics/wait/wait-index-value-not-equal.js @@ -33,6 +33,14 @@ const i32a = new Int32Array( $262.agent.broadcast(i32a.buffer); $262.agent.sleep(100); -assert.sameValue($262.agent.getReport(), 'not-equal'); -assert.sameValue($262.agent.getReport(), 'not-equal'); -assert.sameValue(Atomics.wake(i32a, 0), 0); +assert.sameValue( + $262.agent.getReport(), + 'not-equal', + '$262.agent.getReport() returns "not-equal"' +); +assert.sameValue( + $262.agent.getReport(), + 'not-equal', + '$262.agent.getReport() returns "not-equal"' +); +assert.sameValue(Atomics.wake(i32a, 0), 0, 'Atomics.wake(i32a, 0) returns 0'); diff --git a/test/built-ins/Atomics/wait/waiterlist-order-of-operations-is-fifo.js b/test/built-ins/Atomics/wait/waiterlist-order-of-operations-is-fifo.js index 418dd921be..11a910e478 100644 --- a/test/built-ins/Atomics/wait/waiterlist-order-of-operations-is-fifo.js +++ b/test/built-ins/Atomics/wait/waiterlist-order-of-operations-is-fifo.js @@ -65,14 +65,26 @@ $262.agent.sleep(100); const started = [$262.agent.getReport(), $262.agent.getReport(), $262.agent.getReport()]; // Agents must wake in the order they waited -assert.sameValue(Atomics.wake(i32a, 1, 1), 1); -assert.sameValue($262.agent.getReport(), 'ok'); -assert.sameValue($262.agent.getReport(), started[0]); +assert.sameValue(Atomics.wake(i32a, 1, 1), 1, 'Atomics.wake(i32a, 1, 1) returns 1'); +assert.sameValue($262.agent.getReport(), 'ok', '$262.agent.getReport() returns "ok"'); +assert.sameValue( + $262.agent.getReport(), + started[0], + '$262.agent.getReport() returns the value of `started[0]` (undefined)' +); -assert.sameValue(Atomics.wake(i32a, 2, 1), 1); -assert.sameValue($262.agent.getReport(), 'ok'); -assert.sameValue($262.agent.getReport(), started[1]); +assert.sameValue(Atomics.wake(i32a, 2, 1), 1, 'Atomics.wake(i32a, 2, 1) returns 1'); +assert.sameValue($262.agent.getReport(), 'ok', '$262.agent.getReport() returns "ok"'); +assert.sameValue( + $262.agent.getReport(), + started[1], + '$262.agent.getReport() returns the value of `started[1]` (undefined)' +); -assert.sameValue(Atomics.wake(i32a, 3, 1), 1); -assert.sameValue($262.agent.getReport(), 'ok'); -assert.sameValue($262.agent.getReport(), started[2]); +assert.sameValue(Atomics.wake(i32a, 3, 1), 1, 'Atomics.wake(i32a, 3, 1) returns 1'); +assert.sameValue($262.agent.getReport(), 'ok', '$262.agent.getReport() returns "ok"'); +assert.sameValue( + $262.agent.getReport(), + started[2], + '$262.agent.getReport() returns the value of `started[2]` (undefined)' +); diff --git a/test/built-ins/Atomics/wait/was-woken-before-timeout.js b/test/built-ins/Atomics/wait/was-woken-before-timeout.js index ba5c9ee4dc..24673df84c 100644 --- a/test/built-ins/Atomics/wait/was-woken-before-timeout.js +++ b/test/built-ins/Atomics/wait/was-woken-before-timeout.js @@ -43,14 +43,14 @@ const i32a = new Int32Array( $262.agent.broadcast(i32a.buffer); $262.agent.sleep(sleeping); -assert.sameValue(Atomics.wake(i32a, 0), 1); +assert.sameValue(Atomics.wake(i32a, 0), 1, 'Atomics.wake(i32a, 0) returns 1'); const lapse = $262.agent.getReport(); assert( sleeping + lapse < timeout, - `${sleeping + lapse} should be less than ${timeout}` + 'The result of `(sleeping + lapse < timeout)` is true' ); -assert.sameValue($262.agent.getReport(), 'ok'); +assert.sameValue($262.agent.getReport(), 'ok', '$262.agent.getReport() returns "ok"'); diff --git a/test/built-ins/Atomics/wake/bad-range.js b/test/built-ins/Atomics/wake/bad-range.js index 5db7b2f2a5..880ea7fbd2 100644 --- a/test/built-ins/Atomics/wake/bad-range.js +++ b/test/built-ins/Atomics/wake/bad-range.js @@ -22,5 +22,5 @@ const i32a = new Int32Array( testWithAtomicsOutOfBoundsIndices(function(IdxGen) { assert.throws(RangeError, function() { Atomics.wake(i32a, IdxGen(i32a), 0); - }, 'Atomics.wake(i32a, IdxGen(i32a), 0) throws RangeError'); + }, '`Atomics.wake(i32a, IdxGen(i32a), 0)` throws RangeError'); }); diff --git a/test/built-ins/Atomics/wake/bigint/non-bigint64-typedarray-throws.js b/test/built-ins/Atomics/wake/bigint/non-bigint64-typedarray-throws.js index d60d5b6c0d..287911c474 100644 --- a/test/built-ins/Atomics/wake/bigint/non-bigint64-typedarray-throws.js +++ b/test/built-ins/Atomics/wake/bigint/non-bigint64-typedarray-throws.js @@ -27,8 +27,8 @@ const poisoned = { assert.throws(TypeError, function() { Atomics.wait(i64a, 0, 0); -}, 'BigUint64Array'); +}, '`Atomics.wait(i64a, 0, 0)` throws TypeError'); assert.throws(TypeError, function() { Atomics.wait(i64a, poisoned, poisoned); -}, 'BigUint64Array'); +}, '`Atomics.wait(i64a, poisoned, poisoned)` throws TypeError'); diff --git a/test/built-ins/Atomics/wake/bigint/non-shared-bufferdata-throws.js b/test/built-ins/Atomics/wake/bigint/non-shared-bufferdata-throws.js index a50363cd57..99bf204576 100644 --- a/test/built-ins/Atomics/wake/bigint/non-shared-bufferdata-throws.js +++ b/test/built-ins/Atomics/wake/bigint/non-shared-bufferdata-throws.js @@ -26,8 +26,8 @@ const poisoned = { assert.throws(TypeError, function() { Atomics.wake(i64a, 0, 0); -}, 'Atomics.wake(i64a, 0, 0) on ArrayBuffer throws TypeError'); +}, '`Atomics.wake(i64a, 0, 0)` throws TypeError'); assert.throws(TypeError, function() { Atomics.wake(i64a, poisoned, poisoned); -}, 'Atomics.wake(i64a, poisoned, poisoned) on ArrayBuffer throws TypeError'); +}, '`Atomics.wake(i64a, poisoned, poisoned)` throws TypeError'); diff --git a/test/built-ins/Atomics/wake/bigint/null-bufferdata-throws.js b/test/built-ins/Atomics/wake/bigint/null-bufferdata-throws.js index 3c773de4be..4d6fac5b8f 100644 --- a/test/built-ins/Atomics/wake/bigint/null-bufferdata-throws.js +++ b/test/built-ins/Atomics/wake/bigint/null-bufferdata-throws.js @@ -33,4 +33,4 @@ try { assert.throws(TypeError, function() { Atomics.wake(i64a, poisoned, poisoned); -}, 'Atomics.wake(i64a, poisoned, poisoned) on detached buffer throws TypeError'); +}, '`Atomics.wake(i64a, poisoned, poisoned)` throws TypeError'); diff --git a/test/built-ins/Atomics/wake/bigint/wake-all-on-loc.js b/test/built-ins/Atomics/wake/bigint/wake-all-on-loc.js index 8e6568779c..d1cb63946e 100644 --- a/test/built-ins/Atomics/wake/bigint/wake-all-on-loc.js +++ b/test/built-ins/Atomics/wake/bigint/wake-all-on-loc.js @@ -53,7 +53,7 @@ $262.agent.sleep(50); assert.sameValue( Atomics.wake(i64a, WAIT_INDEX), NUMAGENT, - 'Atomics.wake(i64a, WAIT_INDEX) equals the value of `NUMAGENT` (3)' + 'Atomics.wake(i64a, WAIT_INDEX) returns the value of `NUMAGENT` (3)' ); var reports = []; diff --git a/test/built-ins/Atomics/wake/count-boundary-cases.js b/test/built-ins/Atomics/wake/count-boundary-cases.js index c0686fb0b6..654eb4f17f 100644 --- a/test/built-ins/Atomics/wake/count-boundary-cases.js +++ b/test/built-ins/Atomics/wake/count-boundary-cases.js @@ -47,7 +47,7 @@ assert.sameValue( assert.sameValue( Atomics.wake(i32a, 0, '33'), 0, - 'Atomics.wake(i32a, 0, "33") returns 0' + 'Atomics.wake(i32a, 0, \'33\') returns 0' ); assert.sameValue( Atomics.wake(i32a, 0, { valueOf: 8 }), diff --git a/test/built-ins/Atomics/wake/count-defaults-to-infinity-missing.js b/test/built-ins/Atomics/wake/count-defaults-to-infinity-missing.js index 45ca182734..29601ae79e 100644 --- a/test/built-ins/Atomics/wake/count-defaults-to-infinity-missing.js +++ b/test/built-ins/Atomics/wake/count-defaults-to-infinity-missing.js @@ -69,7 +69,7 @@ $262.agent.waitUntil(i32a, RUNNING, NUMAGENT); assert.sameValue( Atomics.wake(i32a, WAIT_INDEX /*, count missing */), NUMAGENT, - 'Atomics.wake(i32a, WAIT_INDEX /*, count missing */) equals the value of `NUMAGENT` (4)' + 'Atomics.wake(i32a, WAIT_INDEX /*, count missing */) returns the value of `NUMAGENT` (4)' ); const reports = []; diff --git a/test/built-ins/Atomics/wake/count-defaults-to-infinity-undefined.js b/test/built-ins/Atomics/wake/count-defaults-to-infinity-undefined.js index 74c91ca992..be5646351a 100644 --- a/test/built-ins/Atomics/wake/count-defaults-to-infinity-undefined.js +++ b/test/built-ins/Atomics/wake/count-defaults-to-infinity-undefined.js @@ -67,7 +67,7 @@ $262.agent.waitUntil(i32a, RUNNING, NUMAGENT); assert.sameValue( Atomics.wake(i32a, WAIT_INDEX, undefined), NUMAGENT, - 'Atomics.wake(i32a, WAIT_INDEX, undefined) equals the value of `NUMAGENT` (4)' + 'Atomics.wake(i32a, WAIT_INDEX, undefined) returns the value of `NUMAGENT` (4)' ); const reports = []; diff --git a/test/built-ins/Atomics/wake/non-int32-typedarray-throws.js b/test/built-ins/Atomics/wake/non-int32-typedarray-throws.js index aea70d3e45..b949e20aeb 100644 --- a/test/built-ins/Atomics/wake/non-int32-typedarray-throws.js +++ b/test/built-ins/Atomics/wake/non-int32-typedarray-throws.js @@ -26,53 +26,53 @@ assert.throws(TypeError, function() { new SharedArrayBuffer(Float64Array.BYTES_PER_ELEMENT * 8) ); Atomics.wake(view, poisoned, poisoned); -}, '`Atomics.wake(view), poisoned, poisoned)` throws TypeError'); +}, '`const view = new Float64Array( new SharedArrayBuffer(Float64Array.BYTES_PER_ELEMENT * 8) ); Atomics.wake(view, poisoned, poisoned)` throws TypeError'); assert.throws(TypeError, function() { const view = new Float32Array( new SharedArrayBuffer(Float32Array.BYTES_PER_ELEMENT * 4) ); Atomics.wake(view, poisoned, poisoned); -}, '`Atomics.wake(view), poisoned, poisoned)` throws TypeError'); +}, '`const view = new Float32Array( new SharedArrayBuffer(Float32Array.BYTES_PER_ELEMENT * 4) ); Atomics.wake(view, poisoned, poisoned)` throws TypeError'); assert.throws(TypeError, function() { const view = new Int16Array( new SharedArrayBuffer(Int16Array.BYTES_PER_ELEMENT * 2) ); Atomics.wake(view, poisoned, poisoned); -}, '`Atomics.wake(view), poisoned, poisoned)` throws TypeError'); +}, '`const view = new Int16Array( new SharedArrayBuffer(Int16Array.BYTES_PER_ELEMENT * 2) ); Atomics.wake(view, poisoned, poisoned)` throws TypeError'); assert.throws(TypeError, function() { const view = new Int8Array( new SharedArrayBuffer(Int8Array.BYTES_PER_ELEMENT) ); Atomics.wake(view, poisoned, poisoned); -}, '`Atomics.wake(view), poisoned, poisoned)` throws TypeError'); +}, '`const view = new Int8Array( new SharedArrayBuffer(Int8Array.BYTES_PER_ELEMENT) ); Atomics.wake(view, poisoned, poisoned)` throws TypeError'); assert.throws(TypeError, function() { const view = new Uint32Array( new SharedArrayBuffer(Uint32Array.BYTES_PER_ELEMENT * 4) ); Atomics.wake(new Uint32Array(), poisoned, poisoned); -}, '`Atomics.wake(view), poisoned, poisoned)` throws TypeError'); +}, '`const view = new Uint32Array( new SharedArrayBuffer(Uint32Array.BYTES_PER_ELEMENT * 4) ); Atomics.wake(new Uint32Array(), poisoned, poisoned)` throws TypeError'); assert.throws(TypeError, function() { const view = new Uint16Array( new SharedArrayBuffer(Uint16Array.BYTES_PER_ELEMENT * 2) ); Atomics.wake(view, poisoned, poisoned); -}, '`Atomics.wake(view), poisoned, poisoned)` throws TypeError'); +}, '`const view = new Uint16Array( new SharedArrayBuffer(Uint16Array.BYTES_PER_ELEMENT * 2) ); Atomics.wake(view, poisoned, poisoned)` throws TypeError'); assert.throws(TypeError, function() { const view = new Uint8Array( new SharedArrayBuffer(Uint8Array.BYTES_PER_ELEMENT) ); Atomics.wake(view, poisoned, poisoned); -}, '`Atomics.wait(view), poisoned, poisoned)` throws TypeError'); +}, '`const view = new Uint8Array( new SharedArrayBuffer(Uint8Array.BYTES_PER_ELEMENT) ); Atomics.wake(view, poisoned, poisoned)` throws TypeError'); assert.throws(TypeError, function() { const view = new Uint8ClampedArray( new SharedArrayBuffer(Uint8ClampedArray.BYTES_PER_ELEMENT) ); Atomics.wake(view, poisoned, poisoned); -}, '`Atomics.wake(view), poisoned, poisoned)` throws TypeError'); +}, '`const view = new Uint8ClampedArray( new SharedArrayBuffer(Uint8ClampedArray.BYTES_PER_ELEMENT) ); Atomics.wake(view, poisoned, poisoned)` throws TypeError'); diff --git a/test/built-ins/Atomics/wake/non-shared-bufferdatate-non-shared-int-views.js b/test/built-ins/Atomics/wake/non-shared-bufferdatate-non-shared-int-views.js index 6b46aff513..86a96cbd1e 100644 --- a/test/built-ins/Atomics/wake/non-shared-bufferdatate-non-shared-int-views.js +++ b/test/built-ins/Atomics/wake/non-shared-bufferdatate-non-shared-int-views.js @@ -19,24 +19,24 @@ const poisoned = { assert.throws(TypeError, function() { Atomics.wake(new Int16Array(nonsab), poisoned, poisoned); -}, 'Atomics.wake(new Int16Array(nonsab)) throws TypeError'); +}, '`Atomics.wake(new Int16Array(nonsab), poisoned, poisoned)` throws TypeError'); assert.throws(TypeError, function() { Atomics.wake(new Int8Array(nonsab), poisoned, poisoned); -}, 'Atomics.wake(new Int8Array(nonsab)) throws TypeError'); +}, '`Atomics.wake(new Int8Array(nonsab), poisoned, poisoned)` throws TypeError'); assert.throws(TypeError, function() { Atomics.wake(new Uint32Array(nonsab), poisoned, poisoned); -}, 'Atomics.wake(new Uint32Array(nonsab)) throws TypeError'); +}, '`Atomics.wake(new Uint32Array(nonsab), poisoned, poisoned)` throws TypeError'); assert.throws(TypeError, function() { Atomics.wake(new Uint16Array(nonsab), poisoned, poisoned); -}, 'Atomics.wake(new Uint16Array(nonsab)) throws TypeError'); +}, '`Atomics.wake(new Uint16Array(nonsab), poisoned, poisoned)` throws TypeError'); assert.throws(TypeError, function() { Atomics.wake(new Uint8Array(nonsab), poisoned, poisoned); -}, 'Atomics.wake(new Uint8Array(nonsab)) throws TypeError'); +}, '`Atomics.wake(new Uint8Array(nonsab), poisoned, poisoned)` throws TypeError'); assert.throws(TypeError, function() { Atomics.wake(new Uint8ClampedArray(nonsab), poisoned, poisoned); -}, 'Atomics.wake(new Uint8ClampedArray(nonsab)) throws TypeError'); +}, '`Atomics.wake(new Uint8ClampedArray(nonsab), poisoned, poisoned)` throws TypeError'); diff --git a/test/built-ins/Atomics/wake/non-shared-int-views.js b/test/built-ins/Atomics/wake/non-shared-int-views.js index 04b901edd0..278a0762f2 100644 --- a/test/built-ins/Atomics/wake/non-shared-int-views.js +++ b/test/built-ins/Atomics/wake/non-shared-int-views.js @@ -19,24 +19,24 @@ const poisoned = { assert.throws(TypeError, function() { Atomics.wake(new Int16Array(sab), poisoned, poisoned); -}, 'Atomics.wake(new Int16Array(sab)) throws TypeError'); +}, '`Atomics.wake(new Int16Array(sab), poisoned, poisoned)` throws TypeError'); assert.throws(TypeError, function() { Atomics.wake(new Int8Array(sab), poisoned, poisoned); -}, 'Atomics.wake(new Int8Array(sab)) throws TypeError'); +}, '`Atomics.wake(new Int8Array(sab), poisoned, poisoned)` throws TypeError'); assert.throws(TypeError, function() { Atomics.wake(new Uint32Array(sab), poisoned, poisoned); -}, 'Atomics.wake(new Uint32Array(sab)) throws TypeError'); +}, '`Atomics.wake(new Uint32Array(sab), poisoned, poisoned)` throws TypeError'); assert.throws(TypeError, function() { Atomics.wake(new Uint16Array(sab), poisoned, poisoned); -}, 'Atomics.wake(new Uint16Array(sab)) throws TypeError'); +}, '`Atomics.wake(new Uint16Array(sab), poisoned, poisoned)` throws TypeError'); assert.throws(TypeError, function() { Atomics.wake(new Uint8Array(sab), poisoned, poisoned); -}, 'Atomics.wake(new Uint8Array(sab)) throws TypeError'); +}, '`Atomics.wake(new Uint8Array(sab), poisoned, poisoned)` throws TypeError'); assert.throws(TypeError, function() { Atomics.wake(new Uint8ClampedArray(sab), poisoned, poisoned); -}, 'Atomics.wake(new Uint8ClampedArray(sab)) throws TypeError'); +}, '`Atomics.wake(new Uint8ClampedArray(sab), poisoned, poisoned)` throws TypeError'); diff --git a/test/built-ins/Atomics/wake/null-bufferdata-throws.js b/test/built-ins/Atomics/wake/null-bufferdata-throws.js index 3ee8e4e474..d81c76080b 100644 --- a/test/built-ins/Atomics/wake/null-bufferdata-throws.js +++ b/test/built-ins/Atomics/wake/null-bufferdata-throws.js @@ -34,4 +34,4 @@ try { assert.throws(TypeError, function() { Atomics.wake(i32a, poisoned, poisoned); -}, 'Atomics.wake(i32a, poisoned, poisoned) on detached buffer throws TypeError'); +}, '`Atomics.wake(i32a, poisoned, poisoned)` throws TypeError'); diff --git a/test/built-ins/Atomics/wake/wake-all-on-loc.js b/test/built-ins/Atomics/wake/wake-all-on-loc.js index 56136e4639..aa21761f3e 100644 --- a/test/built-ins/Atomics/wake/wake-all-on-loc.js +++ b/test/built-ins/Atomics/wake/wake-all-on-loc.js @@ -54,7 +54,7 @@ $262.agent.sleep(50); assert.sameValue( Atomics.wake(i32a, WAIT_INDEX), NUMAGENT, - 'Atomics.wake(i32a, WAIT_INDEX) equals the value of `NUMAGENT` (3)' + 'Atomics.wake(i32a, WAIT_INDEX) returns the value of `NUMAGENT` (3)' ); const reports = []; diff --git a/test/built-ins/Atomics/wake/wake-all.js b/test/built-ins/Atomics/wake/wake-all.js index c2f88accfa..eda79a07ed 100644 --- a/test/built-ins/Atomics/wake/wake-all.js +++ b/test/built-ins/Atomics/wake/wake-all.js @@ -53,7 +53,7 @@ $262.agent.sleep(50); assert.sameValue( Atomics.wake(i32a, WAIT_INDEX), NUMAGENT, - 'Atomics.wake(i32a, WAIT_INDEX) equals the value of `NUMAGENT` (3)' + 'Atomics.wake(i32a, WAIT_INDEX) returns the value of `NUMAGENT` (3)' ); const reports = []; diff --git a/test/built-ins/Atomics/wake/wake-in-order-one-time.js b/test/built-ins/Atomics/wake/wake-in-order-one-time.js index 59d11b5232..581b738457 100644 --- a/test/built-ins/Atomics/wake/wake-in-order-one-time.js +++ b/test/built-ins/Atomics/wake/wake-in-order-one-time.js @@ -49,39 +49,51 @@ $262.agent.waitUntil(i32a, RUNNING, NUMAGENT); $262.agent.sleep(50); var waiterlist = []; -assert.sameValue(Atomics.store(i32a, SPIN + 0, 1), 1); +assert.sameValue( + Atomics.store(i32a, SPIN + 0, 1), + 1, + 'Atomics.store(i32a, SPIN + 0, 1) returns 1' +); waiterlist.push($262.agent.getReport()); -assert.sameValue(Atomics.store(i32a, SPIN + 1, 1), 1); +assert.sameValue( + Atomics.store(i32a, SPIN + 1, 1), + 1, + 'Atomics.store(i32a, SPIN + 1, 1) returns 1' +); waiterlist.push($262.agent.getReport()); -assert.sameValue(Atomics.store(i32a, SPIN + 2, 1), 1); +assert.sameValue( + Atomics.store(i32a, SPIN + 2, 1), + 1, + 'Atomics.store(i32a, SPIN + 2, 1) returns 1' +); waiterlist.push($262.agent.getReport()); var notified = []; assert.sameValue( Atomics.wake(i32a, WAIT_INDEX, 1), 1, - `Notification #0: on WAIT_INDEX (0) of i32a must notify 1 waiter.` + 'Atomics.wake(i32a, WAIT_INDEX, 1) returns 1' ); notified.push($262.agent.getReport()); assert.sameValue( Atomics.wake(i32a, WAIT_INDEX, 1), 1, - `Notification #1: on WAIT_INDEX (0) of i32a must notify 1 waiter.` + 'Atomics.wake(i32a, WAIT_INDEX, 1) returns 1' ); notified.push($262.agent.getReport()); assert.sameValue( Atomics.wake(i32a, WAIT_INDEX, 1), 1, - `Notification #2: on WAIT_INDEX (0) of i32a must notify 1 waiter.` + 'Atomics.wake(i32a, WAIT_INDEX, 1) returns 1' ); notified.push($262.agent.getReport()); assert.sameValue( notified.join(''), waiterlist.join(''), - `notified and waiterlist order do not match.` + 'notified.join(\'\') returns waiterlist.join(\'\')' ); diff --git a/test/built-ins/Atomics/wake/wake-in-order.js b/test/built-ins/Atomics/wake/wake-in-order.js index 3a2700ff35..a5de6b8341 100644 --- a/test/built-ins/Atomics/wake/wake-in-order.js +++ b/test/built-ins/Atomics/wake/wake-in-order.js @@ -50,40 +50,52 @@ for (var attempt = 0; attempt < 10; attempt++) { $262.agent.sleep(50); var waiterlist = []; - assert.sameValue(Atomics.store(i32a, SPIN + 0, 1), 1); + assert.sameValue( + Atomics.store(i32a, SPIN + 0, 1), + 1, + 'Atomics.store(i32a, SPIN + 0, 1) returns 1' + ); waiterlist.push($262.agent.getReport()); - assert.sameValue(Atomics.store(i32a, SPIN + 1, 1), 1); + assert.sameValue( + Atomics.store(i32a, SPIN + 1, 1), + 1, + 'Atomics.store(i32a, SPIN + 1, 1) returns 1' + ); waiterlist.push($262.agent.getReport()); - assert.sameValue(Atomics.store(i32a, SPIN + 2, 1), 1); + assert.sameValue( + Atomics.store(i32a, SPIN + 2, 1), + 1, + 'Atomics.store(i32a, SPIN + 2, 1) returns 1' + ); waiterlist.push($262.agent.getReport()); var notified = []; assert.sameValue( Atomics.wake(i32a, WAIT_INDEX, 1), 1, - `Attempt #${attempt}, Notification #0: on WAIT_INDEX (0) of i32a must notify 1 waiter.` + 'Atomics.wake(i32a, WAIT_INDEX, 1) returns 1' ); notified.push($262.agent.getReport()); assert.sameValue( Atomics.wake(i32a, WAIT_INDEX, 1), 1, - `Attempt #${attempt}, Notification #1: on WAIT_INDEX (0) of i32a must notify 1 waiter.` + 'Atomics.wake(i32a, WAIT_INDEX, 1) returns 1' ); notified.push($262.agent.getReport()); assert.sameValue( Atomics.wake(i32a, WAIT_INDEX, 1), 1, - `Attempt #${attempt}, Notification #2: on WAIT_INDEX (0) of i32a must notify 1 waiter.` + 'Atomics.wake(i32a, WAIT_INDEX, 1) returns 1' ); notified.push($262.agent.getReport()); assert.sameValue( notified.join(''), waiterlist.join(''), - `Attempt #${attempt}: notified and waiterlist order do not match.` + 'notified.join(\'\') returns waiterlist.join(\'\')' ); } diff --git a/test/built-ins/Atomics/wake/wake-nan.js b/test/built-ins/Atomics/wake/wake-nan.js index e4a0471565..7d1e76012a 100644 --- a/test/built-ins/Atomics/wake/wake-nan.js +++ b/test/built-ins/Atomics/wake/wake-nan.js @@ -23,7 +23,7 @@ const i32a = new Int32Array( $262.agent.broadcast(i32a.buffer); $262.agent.sleep(10); // Give the agent a chance to wait -assert.sameValue(Atomics.wake(i32a, 0, NaN), 0, 'Atomics.wake(i32a, 0, NaN) returns 0, and will not actually notify any waiters.'); +assert.sameValue(Atomics.wake(i32a, 0, NaN), 0, 'Atomics.wake(i32a, 0, NaN) returns 0'); // Sleep past the timeout $262.agent.sleep(300); diff --git a/test/built-ins/Atomics/wake/wake-one.js b/test/built-ins/Atomics/wake/wake-one.js index bbf3507bfb..5d6498a477 100644 --- a/test/built-ins/Atomics/wake/wake-one.js +++ b/test/built-ins/Atomics/wake/wake-one.js @@ -46,7 +46,7 @@ $262.agent.sleep(10); assert.sameValue( Atomics.wake(i32a, 0, WAKECOUNT), WAKECOUNT, - 'Atomics.wake(i32a, 0, WAKECOUNT) equals the value of `WAKECOUNT` (1)' + 'Atomics.wake(i32a, 0, WAKECOUNT) returns the value of `WAKECOUNT` (1)' ); // Collect and check results diff --git a/test/built-ins/Atomics/wake/wake-rewake-noop.js b/test/built-ins/Atomics/wake/wake-rewake-noop.js index 086b2ea736..59080e8f4b 100644 --- a/test/built-ins/Atomics/wake/wake-rewake-noop.js +++ b/test/built-ins/Atomics/wake/wake-rewake-noop.js @@ -28,7 +28,7 @@ $262.agent.waitUntil(i32a, 1, 1); assert.sameValue(Atomics.wake(i32a, 0, 1), 1, 'Atomics.wake(i32a, 0, 1) returns 1'); -assert.sameValue($262.agent.getReport(), 'ok', 'The value of `report` is "ok"'); +assert.sameValue($262.agent.getReport(), 'ok', '$262.agent.getReport() returns "ok"'); // Already awake, this should be a noop assert.sameValue(Atomics.wake(i32a, 0, 1), 0, 'Atomics.wake(i32a, 0, 1) returns 0'); diff --git a/test/built-ins/Atomics/wake/wake-two.js b/test/built-ins/Atomics/wake/wake-two.js index 7a05ba188d..f318bac1f1 100644 --- a/test/built-ins/Atomics/wake/wake-two.js +++ b/test/built-ins/Atomics/wake/wake-two.js @@ -47,7 +47,7 @@ $262.agent.sleep(10); assert.sameValue( Atomics.wake(i32a, 0, WAKECOUNT), WAKECOUNT, - 'Atomics.wake(i32a, 0, WAKECOUNT) equals the value of `WAKECOUNT` (2)' + 'Atomics.wake(i32a, 0, WAKECOUNT) returns the value of `WAKECOUNT` (2)' ); // Sleep past the timeout diff --git a/test/built-ins/Atomics/wake/wake-zero.js b/test/built-ins/Atomics/wake/wake-zero.js index df226e98ed..85eea4fa11 100644 --- a/test/built-ins/Atomics/wake/wake-zero.js +++ b/test/built-ins/Atomics/wake/wake-zero.js @@ -42,12 +42,12 @@ $262.agent.waitUntil(i32a, RUNNING, NUMAGENT); assert.sameValue( Atomics.wake(i32a, WAIT_INDEX, WAKECOUNT), WAKECOUNT, - 'Atomics.wake(i32a, WAIT_INDEX, WAKECOUNT) equals the value of `WAKECOUNT` (0)' + 'Atomics.wake(i32a, WAIT_INDEX, WAKECOUNT) returns the value of `WAKECOUNT` (0)' ); // Sleep past the timeout $262.agent.sleep(300); for (var i = 0; i < NUMAGENT; i++) { - assert.sameValue($262.agent.getReport(), 'timed-out', `Report #${i}: must equal "timed-out"`); + assert.sameValue($262.agent.getReport(), 'timed-out', '$262.agent.getReport() returns "timed-out"'); } diff --git a/test/built-ins/Atomics/xor/bad-range.js b/test/built-ins/Atomics/xor/bad-range.js index fd5858533b..49b0c94fc5 100644 --- a/test/built-ins/Atomics/xor/bad-range.js +++ b/test/built-ins/Atomics/xor/bad-range.js @@ -17,6 +17,6 @@ testWithTypedArrayConstructors(function(TA) { testWithAtomicsOutOfBoundsIndices(function(IdxGen) { assert.throws(RangeError, function() { Atomics.xor(view, IdxGen(view), 0); - }, 'Atomics.xor(view, IdxGen(view), 0) throws RangeError'); + }, '`Atomics.xor(view, IdxGen(view), 0)` throws RangeError'); }); }, views); diff --git a/test/built-ins/Atomics/xor/bigint/bad-range.js b/test/built-ins/Atomics/xor/bigint/bad-range.js index c2b1c3b574..0cf4eb6269 100644 --- a/test/built-ins/Atomics/xor/bigint/bad-range.js +++ b/test/built-ins/Atomics/xor/bigint/bad-range.js @@ -16,6 +16,6 @@ testWithBigIntTypedArrayConstructors(function(TA) { testWithAtomicsOutOfBoundsIndices(function(IdxGen) { assert.throws(RangeError, function() { Atomics.xor(view, IdxGen(view), 10); - }, 'Atomics.xor(view, IdxGen(view), 10) throws RangeError'); + }, '`Atomics.xor(view, IdxGen(view), 10)` throws RangeError'); }); }); diff --git a/test/built-ins/Atomics/xor/bigint/good-views.js b/test/built-ins/Atomics/xor/bigint/good-views.js index b0f5159f5c..242a1f1b62 100644 --- a/test/built-ins/Atomics/xor/bigint/good-views.js +++ b/test/built-ins/Atomics/xor/bigint/good-views.js @@ -1,61 +1,102 @@ // Copyright (C) 2018 Rick Waldron. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. - /*--- esid: sec-atomics.xor description: Test Atomics.xor on arrays that allow atomic operations includes: [testAtomics.js, testBigIntTypedArray.js] features: [ArrayBuffer, arrow-function, Atomics, BigInt, DataView, for-of, let, SharedArrayBuffer, TypedArray] ---*/ - -var sab = new SharedArrayBuffer(1024); -var ab = new ArrayBuffer(16); +// Make it interesting - use non-zero byteOffsets and non-zero indexes. +// And again +// In-bounds boundary cases for indexing +// Atomics.store() computes an index from Idx in the same way as other +// Atomics operations, not quite like view[Idx]. +const sab = new SharedArrayBuffer(1024); +const ab = new ArrayBuffer(16); testWithBigIntTypedArrayConstructors(function(TA) { - // Make it interesting - use non-zero byteOffsets and non-zero indexes. - - var view = new TA(sab, 32, 20); - var control = new TA(ab, 0, 2); - - view[8] = 0x33333333; - control[0] = 0x33333333; - assert.sameValue(Atomics.xor(view, 8, 0x55555555), control[0], - "Result is subject to chopping"); - - control[0] = 0x66666666; - assert.sameValue(view[8], control[0]); - assert.sameValue(Atomics.xor(view, 8, 0xF0F0F0F0), control[0], - "Result is subject to chopping"); - - control[0] = 0x96969696; - assert.sameValue(view[8], control[0]); - - view[3] = -5; - control[0] = -5; - assert.sameValue(Atomics.xor(view, 3, 0), control[0], - "Result is negative and subject to coercion"); - assert.sameValue(view[3], control[0]); - - control[0] = 12345; - view[3] = 12345; - assert.sameValue(Atomics.xor(view, 3, 0), control[0], - "Result is subject to chopping"); - assert.sameValue(view[3], control[0]); - - // And again - control[0] = 123456789; - view[3] = 123456789; - assert.sameValue(Atomics.xor(view, 3, 0), control[0], - "Result is subject to chopping"); - assert.sameValue(view[3], control[0]); - - // In-bounds boundary cases for indexing + const view = new TA(sab, 32, 20); + const control = new TA(ab, 0, 2); + view[8] = 0x33333333n; + control[0] = 0x33333333n; + + assert.sameValue( + Atomics.xor(view, 8, 0x55555555n), + control[0], + 'Atomics.xor(view, 8, 0x55555555n) returns the value of `control[0]` (0x33333333n)' + ); + + control[0] = 0x66666666n; + + assert.sameValue( + view[8], + control[0], + 'The value of view[8] equals the value of `control[0]` (0x66666666n)' + ); + + assert.sameValue( + Atomics.xor(view, 8, 0xF0F0F0F0), + control[0], + 'Atomics.xor(view, 8, 0xF0F0F0F0) returns the value of `control[0]` (0x66666666n)' + ); + + control[0] = 0x96969696n; + + assert.sameValue( + view[8], + control[0], + 'The value of view[8] equals the value of `control[0]` (0x96969696n)' + ); + + view[3] = -5n; + control[0] = -5n; + + assert.sameValue( + Atomics.xor(view, 3, 0n), + control[0], + 'Atomics.xor(view, 3, 0n) returns the value of `control[0]` (-5n)' + ); + + assert.sameValue( + view[3], + control[0], + 'The value of view[3] equals the value of `control[0]` (-5n)' + ); + + control[0] = 12345n; + view[3] = 12345n; + + assert.sameValue( + Atomics.xor(view, 3, 0n), + control[0], + 'Atomics.xor(view, 3, 0n) returns the value of `control[0]` (12345n)' + ); + + assert.sameValue( + view[3], + control[0], + 'The value of view[3] equals the value of `control[0]` (12345n)' + ); + + control[0] = 123456789n; + view[3] = 123456789n; + + assert.sameValue( + Atomics.xor(view, 3, 0n), + control[0], + 'Atomics.xor(view, 3, 0n) returns the value of `control[0]` (123456789n)' + ); + + assert.sameValue( + view[3], + control[0], + 'The value of view[3] equals the value of `control[0]` (123456789n)' + ); + testWithAtomicsInBoundsIndices(function(IdxGen) { let Idx = IdxGen(view); - view.fill(0); - // Atomics.store() computes an index from Idx in the same way as other - // Atomics operations, not quite like view[Idx]. - Atomics.store(view, Idx, 37); - assert.sameValue(Atomics.xor(view, Idx, 0), 37); + view.fill(0n); + Atomics.store(view, Idx, 37n); + assert.sameValue(Atomics.xor(view, Idx, 0n), 37n, 'Atomics.xor(view, Idx, 0n) returns 37n'); }); -}); +}); \ No newline at end of file diff --git a/test/built-ins/Atomics/xor/bigint/nonshared-int-views.js b/test/built-ins/Atomics/xor/bigint/nonshared-int-views.js index 3648a8e3df..87a9661a73 100644 --- a/test/built-ins/Atomics/xor/bigint/nonshared-int-views.js +++ b/test/built-ins/Atomics/xor/bigint/nonshared-int-views.js @@ -14,5 +14,5 @@ var buffer = new ArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 4); testWithBigIntTypedArrayConstructors(function(TA) { assert.throws(TypeError, function() { Atomics.xor(new TA(buffer), 0, 0); - }, 'Atomics.xor(new TA(buffer), 0, 0) throws TypeError'); + }, '`Atomics.xor(new TA(buffer), 0, 0)` throws TypeError'); }); diff --git a/test/built-ins/Atomics/xor/expected-return-value.js b/test/built-ins/Atomics/xor/expected-return-value.js index d275d46658..424b67d66f 100644 --- a/test/built-ins/Atomics/xor/expected-return-value.js +++ b/test/built-ins/Atomics/xor/expected-return-value.js @@ -27,12 +27,20 @@ info: | features: [Atomics, SharedArrayBuffer, TypedArray] ---*/ -var buffer = new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4); -var i32a = new Int32Array(buffer); -var initial = 0b00000001000000001000000010000001; -var update = 0b00000001111111111000000011111111; -i32a[0] = initial; +const i32a = new Int32Array( + new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4) +); +const a = 0b00000001000000001000000010000001; +const b = 0b00000001111111111000000011111111; +const c = 0b00000000111111110000000001111110; -assert.sameValue(Atomics.xor(i32a, 0, update), initial); -assert.sameValue(i32a[0], initial ^ update); +i32a[0] = a; + +assert.sameValue( + Atomics.xor(i32a, 0, b), + a, + 'Atomics.xor(i32a, 0, b) returns the value of `a` (0b00000001000000001000000010000001)' +); + +assert.sameValue(i32a[0], c, 'The value of i32a[0] equals the value of `c` (0b00000000111111110000000001111110)'); diff --git a/test/built-ins/Atomics/xor/good-views.js b/test/built-ins/Atomics/xor/good-views.js index 76be431af4..ba5c582532 100644 --- a/test/built-ins/Atomics/xor/good-views.js +++ b/test/built-ins/Atomics/xor/good-views.js @@ -21,34 +21,54 @@ testWithTypedArrayConstructors(function(TA) { view[8] = 0x33333333; control[0] = 0x33333333; assert.sameValue(Atomics.xor(view, 8, 0x55555555), control[0], - "Result is subject to chopping"); + 'Atomics.xor(view, 8, 0x55555555) returns the value of `control[0]` (0x33333333)'); control[0] = 0x66666666; - assert.sameValue(view[8], control[0]); + assert.sameValue( + view[8], + control[0], + 'The value of view[8] equals the value of `control[0]` (0x66666666)' + ); assert.sameValue(Atomics.xor(view, 8, 0xF0F0F0F0), control[0], - "Result is subject to chopping"); + 'Atomics.xor(view, 8, 0xF0F0F0F0) returns the value of `control[0]` (0x66666666)'); control[0] = 0x96969696; - assert.sameValue(view[8], control[0]); + assert.sameValue( + view[8], + control[0], + 'The value of view[8] equals the value of `control[0]` (0x96969696)' + ); view[3] = -5; control[0] = -5; assert.sameValue(Atomics.xor(view, 3, 0), control[0], - "Result is negative and subject to coercion"); - assert.sameValue(view[3], control[0]); + 'Atomics.xor(view, 3, 0) returns the value of `control[0]` (-5)'); + assert.sameValue( + view[3], + control[0], + 'The value of view[3] equals the value of `control[0]` (-5)' + ); control[0] = 12345; view[3] = 12345; assert.sameValue(Atomics.xor(view, 3, 0), control[0], - "Result is subject to chopping"); - assert.sameValue(view[3], control[0]); + 'Atomics.xor(view, 3, 0) returns the value of `control[0]` (12345)'); + assert.sameValue( + view[3], + control[0], + 'The value of view[3] equals the value of `control[0]` (12345)' + ); // And again control[0] = 123456789; view[3] = 123456789; assert.sameValue(Atomics.xor(view, 3, 0), control[0], - "Result is subject to chopping"); - assert.sameValue(view[3], control[0]); + 'Atomics.xor(view, 3, 0) returns the value of `control[0]` (123456789)'); + assert.sameValue( + view[3], + control[0], + 'The value of view[3] equals the value of `control[0]` (123456789)' + ); // In-bounds boundary cases for indexing testWithAtomicsInBoundsIndices(function(IdxGen) { @@ -57,6 +77,6 @@ testWithTypedArrayConstructors(function(TA) { // Atomics.store() computes an index from Idx in the same way as other // Atomics operations, not quite like view[Idx]. Atomics.store(view, Idx, 37); - assert.sameValue(Atomics.xor(view, Idx, 0), 37); + assert.sameValue(Atomics.xor(view, Idx, 0), 37, 'Atomics.xor(view, Idx, 0) returns 37'); }); }, views); diff --git a/test/built-ins/Atomics/xor/non-views.js b/test/built-ins/Atomics/xor/non-views.js index b328f70001..27963e3f80 100644 --- a/test/built-ins/Atomics/xor/non-views.js +++ b/test/built-ins/Atomics/xor/non-views.js @@ -12,5 +12,5 @@ features: [ArrayBuffer, arrow-function, Atomics, DataView, for-of, let, SharedAr testWithAtomicsNonViewValues(function(view) { assert.throws(TypeError, function() { Atomics.xor(view, 0, 0); - }, 'Atomics.xor(view, 0, 0) throws TypeError'); + }, '`Atomics.xor(view, 0, 0)` throws TypeError'); }); diff --git a/test/built-ins/Atomics/xor/nonshared-int-views.js b/test/built-ins/Atomics/xor/nonshared-int-views.js index 8be4b2d7bc..7444786027 100644 --- a/test/built-ins/Atomics/xor/nonshared-int-views.js +++ b/test/built-ins/Atomics/xor/nonshared-int-views.js @@ -15,5 +15,5 @@ var views = intArrayConstructors.slice(); testWithTypedArrayConstructors(function(TA) { assert.throws(TypeError, function() { Atomics.xor(new TA(buffer), 0, 0); - }, 'Atomics.xor(new TA(buffer), 0, 0) throws TypeError'); + }, '`Atomics.xor(new TA(buffer), 0, 0)` throws TypeError'); }, views); diff --git a/test/built-ins/Atomics/xor/shared-nonint-views.js b/test/built-ins/Atomics/xor/shared-nonint-views.js index 845d459a94..13b246634e 100644 --- a/test/built-ins/Atomics/xor/shared-nonint-views.js +++ b/test/built-ins/Atomics/xor/shared-nonint-views.js @@ -14,5 +14,5 @@ var buffer = new SharedArrayBuffer(1024); testWithTypedArrayConstructors(function(TA) { assert.throws(TypeError, function() { Atomics.xor(new TA(buffer), 0, 0); - }, 'Atomics.xor(new TA(buffer), 0, 0) throws TypeError'); + }, '`Atomics.xor(new TA(buffer), 0, 0)` throws TypeError'); }, floatArrayConstructors); -- GitLab