Skip to content

Commit

Permalink
Add copies of resizable ArrayBuffer species constructor tests to BigI…
Browse files Browse the repository at this point in the history
…nt folders

This adds copies of the tests added in the previous commit, to the
respective BigInt folders, editing them to use the testBigIntTypedArray
helper instead of the testTypedArray helper.

See: #3723
  • Loading branch information
ptomato committed Mar 31, 2023
1 parent 8330bd6 commit be0abd9
Show file tree
Hide file tree
Showing 6 changed files with 248 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
// Copyright (C) 2023 Igalia, S.L. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-%typedarray%.prototype.filter
description: >
Throws a TypeError if new typedArray's length < count
info: |
23.2.3.10 %TypedArray%.prototype.filter ( start, end )
...
9. Let A be ? TypedArraySpeciesCreate(O, « count »).
...
23.2.4.1 TypedArraySpeciesCreate ( exemplar, argumentList )
...
3. Let result be ? TypedArrayCreate(constructor, argumentList).
23.2.4.2 TypedArrayCreate ( constructor, argumentList )
...
3. If argumentList is a List of a single Number, then
a. If the value of newTypedArray's [[ArrayLength]] internal slot <
argumentList[0], throw a TypeError exception.
...
includes: [testBigIntTypedArray.js]
features: [BigInt, Symbol.species, TypedArray, resizable-arraybuffer]
---*/

testWithBigIntTypedArrayConstructors(function(TA) {
const rab1 = new ArrayBuffer(8, {maxByteLength: 100});
const ta = new TA(rab1);
const rab2 = new ArrayBuffer(10, {maxByteLength: 20});
const lengthTracking = new TA(rab2);
rab2.resize(0);
ta.constructor = { [Symbol.species]: function() { return lengthTracking; } };
assert.throws(TypeError, function() {
ta.filter(() => true);
});
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
// Copyright (C) 2023 Igalia, S.L. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-%typedarray%.prototype.filter
description: >
Throws a TypeError if new typedArray's length < count
info: |
23.2.3.10 %TypedArray%.prototype.filter ( start, end )
...
9. Let A be ? TypedArraySpeciesCreate(O, « count »).
...
23.2.4.1 TypedArraySpeciesCreate ( exemplar, argumentList )
...
3. Let result be ? TypedArrayCreate(constructor, argumentList).
23.2.4.2 TypedArrayCreate ( constructor, argumentList )
...
3. If argumentList is a List of a single Number, then
a. If the value of newTypedArray's [[ArrayLength]] internal slot <
argumentList[0], throw a TypeError exception.
...
includes: [testBigIntTypedArray.js]
features: [BigInt, Symbol.species, TypedArray, resizable-arraybuffer]
---*/

testWithBigIntTypedArrayConstructors(function(TA) {
var sample = new TA(2);
const rab = new ArrayBuffer(10, {maxByteLength: 20});
const lengthTracking = new TA(rab);
sample.constructor = {};
sample.constructor[Symbol.species] = function() {
return lengthTracking;
};
rab.resize(0);
assert.throws(TypeError, function() {
sample.filter(() => { return true; });
});
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
// Copyright (C) 2023 Igalia, S.L. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-%typedarray%.prototype.map
description: >
Throws a TypeError if new typedArray's length < count
info: |
22.2.3.22 %TypedArray%.prototype.map ( start, end )
...
9. Let A be ? TypedArraySpeciesCreate(O, « count »).
...
23.2.4.1 TypedArraySpeciesCreate ( exemplar, argumentList )
...
3. Let result be ? TypedArrayCreate(constructor, argumentList).
23.2.4.2 TypedArrayCreate ( constructor, argumentList )
...
3. If argumentList is a List of a single Number, then
a. If the value of newTypedArray's [[ArrayLength]] internal slot <
argumentList[0], throw a TypeError exception.
...
includes: [testBigIntTypedArray.js]
features: [BigInt, Symbol.species, TypedArray, resizable-arraybuffer]
---*/

testWithBigIntTypedArrayConstructors(function(TA) {
const rab1 = new ArrayBuffer(8, {maxByteLength: 100});
const ta = new TA(rab1);
const rab2 = new ArrayBuffer(10, {maxByteLength: 20});
const lengthTracking = new TA(rab2);
rab2.resize(0);
ta.constructor = { [Symbol.species]: function() { return lengthTracking; } };
assert.throws(TypeError, function() {
ta.map(() => {});
});
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
// Copyright (C) 2023 Igalia, S.L. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-%typedarray%.prototype.map
description: >
Throws a TypeError if new typedArray's length < count
info: |
22.2.3.22 %TypedArray%.prototype.map ( start, end )
...
9. Let A be ? TypedArraySpeciesCreate(O, « count »).
...
23.2.4.1 TypedArraySpeciesCreate ( exemplar, argumentList )
...
3. Let result be ? TypedArrayCreate(constructor, argumentList).
23.2.4.2 TypedArrayCreate ( constructor, argumentList )
...
3. If argumentList is a List of a single Number, then
a. If the value of newTypedArray's [[ArrayLength]] internal slot <
argumentList[0], throw a TypeError exception.
...
includes: [testBigIntTypedArray.js]
features: [BigInt, Symbol.species, TypedArray, resizable-arraybuffer]
---*/

testWithBigIntTypedArrayConstructors(function(TA) {
const sample = new TA(2);
const rab = new ArrayBuffer(10, {maxByteLength: 20});
const lengthTracking = new TA(rab);
rab.resize(0);
sample.constructor = {};
sample.constructor[Symbol.species] = function() {
return lengthTracking;
};
assert.throws(TypeError, function() {
sample.map(() => {});
});
});

Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
// Copyright (C) 2023 Igalia, S.L. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-%typedarray%.prototype.slice
description: >
Throws a TypeError if new typedArray's length < count
info: |
23.2.3.27 %TypedArray%.prototype.slice ( start, end )
...
9. Let A be ? TypedArraySpeciesCreate(O, « count »).
...
23.2.4.1 TypedArraySpeciesCreate ( exemplar, argumentList )
...
3. Let result be ? TypedArrayCreate(constructor, argumentList).
23.2.4.2 TypedArrayCreate ( constructor, argumentList )
...
3. If argumentList is a List of a single Number, then
a. If the value of newTypedArray's [[ArrayLength]] internal slot <
argumentList[0], throw a TypeError exception.
...
includes: [testBigIntTypedArray.js]
features: [BigInt, Symbol.species, TypedArray, resizable-arraybuffer]
---*/

testWithBigIntTypedArrayConstructors(function(TA) {
const rab1 = new ArrayBuffer(8, {maxByteLength: 100});
const ta = new TA(rab1);
const rab2 = new ArrayBuffer(10, {maxByteLength: 20});
const lengthTracking = new TA(rab2);
rab2.resize(0);
ta.constructor = { [Symbol.species]: function() { return lengthTracking; } };
assert.throws(TypeError, function() {
ta.slice();
});
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
// Copyright (C) 2023 Igalia, S.L. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-%typedarray%.prototype.slice
description: >
Throws a TypeError if new typedArray's length < count
info: |
23.2.3.27 %TypedArray%.prototype.slice ( start, end )
...
9. Let A be ? TypedArraySpeciesCreate(O, « count »).
...
23.2.4.1 TypedArraySpeciesCreate ( exemplar, argumentList )
...
3. Let result be ? TypedArrayCreate(constructor, argumentList).
23.2.4.2 TypedArrayCreate ( constructor, argumentList )
...
3. If argumentList is a List of a single Number, then
a. If the value of newTypedArray's [[ArrayLength]] internal slot <
argumentList[0], throw a TypeError exception.
...
includes: [testBigIntTypedArray.js]
features: [BigInt, Symbol.species, TypedArray, resizable-arraybuffer]
---*/


testWithBigIntTypedArrayConstructors(function(TA) {
const sample = new TA(2);
const rab = new ArrayBuffer(10, {maxByteLength: 20});
const lengthTracking = new TA(rab);
rab.resize(0);
sample.constructor = {};
sample.constructor[Symbol.species] = function() {
return lengthTracking;
};
assert.throws(TypeError, function() {
sample.slice();
});
});

0 comments on commit be0abd9

Please sign in to comment.