Skip to content

Commit

Permalink
Add tests for Atomics.pause (#4147)
Browse files Browse the repository at this point in the history
* Add tests for Atomics.pause

* Address review
  • Loading branch information
syg authored Jul 11, 2024
1 parent 830c521 commit 58751ca
Show file tree
Hide file tree
Showing 8 changed files with 154 additions and 0 deletions.
4 changes: 4 additions & 0 deletions features.txt
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,10 @@ source-phase-imports-module-source
# https://github.com/tc39/proposal-arraybuffer-base64
uint8array-base64

# Atomics.pause
# https://github.com/tc39/proposal-atomics-microwait
Atomics.pause

## Standard language features
#
# Language features that have been included in a published version of the
Expand Down
15 changes: 15 additions & 0 deletions test/built-ins/Atomics/pause/descriptor.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
// Copyright 2024 the V8 project authors. All rights reserved.
// This code is governed by the license found in the LICENSE file.

/*---
esid: sec-atomics.pause
description: Testing descriptor property of Atomics.pause
includes: [propertyHelper.js]
features: [Atomics.pause]
---*/

verifyProperty(Atomics, 'pause', {
enumerable: false,
writable: true,
configurable: true,
});
16 changes: 16 additions & 0 deletions test/built-ins/Atomics/pause/length.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
// Copyright 2024 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.

/*---
esid: sec-atomics.pause
description: Atomics.pause.length is 0.
includes: [propertyHelper.js]
features: [Atomics.pause]
---*/

verifyProperty(Atomics.pause, 'length', {
value: 0,
enumerable: false,
writable: false,
configurable: true,
});
16 changes: 16 additions & 0 deletions test/built-ins/Atomics/pause/name.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
// Copyright 2024 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.

/*---
esid: sec-atomics.pause
description: Atomics.pause.name is "pause".
includes: [propertyHelper.js]
features: [Atomics.pause]
---*/

verifyProperty(Atomics.pause, 'name', {
value: 'pause',
enumerable: false,
writable: false,
configurable: true,
});
19 changes: 19 additions & 0 deletions test/built-ins/Atomics/pause/negative-iterationnumber-throws.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
// Copyright 2024 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.

/*---
esid: sec-atomics.pause
description: Atomics.pause throws on negative argument values
features: [Atomics.pause]
---*/

const values = [
-1,
Number.MIN_SAFE_INTEGER,
Number.MIN_SAFE_INTEGER - 1
];

for (const v of values) {
assert.throws(RangeError, () => { Atomics.pause(v); },
`${v} is an illegal iterationNumber`);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
// Copyright (C) 2024 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.

/*---
esid: sec-atomics.pause
description: Atomics.pause throws on non-integral Number argument values
features: [Atomics.pause]
---*/

const values = [
true,
false,
null,
42.42,
-42.42,
NaN,
Infinity,
Symbol("foo"),
"bar",
"42",
/baz/,
42n,
{},
[],
function() {},
{ valueOf() { return 42; } }
];

for (const v of values) {
assert.throws(TypeError, () => { Atomics.pause(v); },
`${v ? v.toString() : v} is an illegal iterationNumber`);
}
28 changes: 28 additions & 0 deletions test/built-ins/Atomics/pause/not-a-constructor.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
// Copyright 2024 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.

/*---
esid: sec-ecmascript-standard-built-in-objects
description: Atomics.pause does not implement [[Construct]], is not new-able
info: |
ECMAScript Function Objects
Built-in function objects that are not identified as constructors do not
implement the [[Construct]] internal method unless otherwise specified in
the description of a particular function.
sec-evaluatenew
...
7. If IsConstructor(constructor) is false, throw a TypeError exception.
...
includes: [isConstructor.js]
features: [Reflect.construct, Atomics.pause]
---*/

assert.sameValue(isConstructor(Atomics.pause), false, 'isConstructor(Atomics.pause) must return false');

assert.throws(TypeError, () => {
new Atomics.pause();
});

24 changes: 24 additions & 0 deletions test/built-ins/Atomics/pause/returns-undefined.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
// Copyright 2024 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.

/*---
esid: sec-atomics.pause
description: Atomics.pause returns undefined
features: [Atomics.pause]
---*/

assert.sameValue(Atomics.pause(), undefined,
'Atomics.pause returns undefined');

const values = [
undefined,
42,
0,
-0,
Number.MAX_SAFE_INTEGER
];

for (const v of values) {
assert.sameValue(Atomics.pause(v), undefined,
'Atomics.pause returns undefined');
}

0 comments on commit 58751ca

Please sign in to comment.