Skip to content

Commit b24bd83

Browse files
committed
Bug 1966355 - Part 21: Import Immutable ArrayBuffer test262 tests. r=spidermonkey-reviewers,dminor
Test262 PR: <tc39/test262#4445>. Roughly half of the spec proposal is still missing coverage, see the review notes at <tc39/test262#4445 (review)>. Differential Revision: https://phabricator.services.mozilla.com/D249415 UltraBlame original commit: 8b6221835a28784ac50521fe790e6521aea5572e
1 parent 86442c5 commit b24bd83

File tree

117 files changed

+4481
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

117 files changed

+4481
-0
lines changed

js/src/tests/test262/prs/4445/browser.js

Whitespace-only changes.

js/src/tests/test262/prs/4445/built-ins/ArrayBuffer/browser.js

Whitespace-only changes.

js/src/tests/test262/prs/4445/built-ins/ArrayBuffer/prototype/browser.js

Whitespace-only changes.

js/src/tests/test262/prs/4445/built-ins/ArrayBuffer/prototype/immutable/browser.js

Whitespace-only changes.
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
2+
3+
4+
5+
6+
7+
8+
9+
10+
var ab = new ArrayBuffer(1);
11+
12+
assert.sameValue(ab.immutable, false);
13+
14+
ab = ab.transferToImmutable();
15+
16+
assert.sameValue(ab.immutable, true);
17+
18+
ab = new ArrayBuffer(1, { maxByteLength: 2 });
19+
20+
assert.sameValue(ab.immutable, false);
21+
22+
ab = ab.transferToImmutable();
23+
24+
assert.sameValue(ab.immutable, true);
25+
26+
reportCompare(0, 0);
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
2+
3+
4+
5+
6+
7+
8+
9+
10+
assert.throws(TypeError, function() {
11+
ArrayBuffer.prototype.immutable;
12+
});
13+
14+
reportCompare(0, 0);
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
2+
3+
4+
5+
6+
7+
8+
9+
10+
var getter = Object.getOwnPropertyDescriptor(
11+
ArrayBuffer.prototype, 'immutable'
12+
).get;
13+
14+
assert.sameValue(typeof getter, 'function');
15+
16+
assert.throws(TypeError, function() {
17+
getter();
18+
});
19+
20+
reportCompare(0, 0);
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
2+
3+
4+
5+
6+
7+
8+
9+
10+
11+
var desc = Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, 'immutable');
12+
13+
verifyProperty(desc.get, 'length', {
14+
value: 0,
15+
enumerable: false,
16+
writable: false,
17+
configurable: true
18+
});
19+
20+
reportCompare(0, 0);
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
2+
3+
4+
5+
6+
7+
8+
9+
10+
11+
var desc = Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, 'immutable');
12+
13+
verifyProperty(desc.get, 'name', {
14+
value: 'get immutable',
15+
enumerable: false,
16+
writable: false,
17+
configurable: true
18+
});
19+
20+
reportCompare(0, 0);
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
2+
3+
4+
5+
6+
7+
8+
9+
10+
11+
var desc = Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, 'immutable');
12+
13+
assert.sameValue(desc.set, undefined);
14+
assert.sameValue(typeof desc.get, 'function');
15+
16+
verifyProperty(ArrayBuffer.prototype, 'immutable', {
17+
enumerable: false,
18+
configurable: true
19+
});
20+
21+
reportCompare(0, 0);

js/src/tests/test262/prs/4445/built-ins/ArrayBuffer/prototype/immutable/shell.js

Whitespace-only changes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
2+
3+
4+
5+
6+
7+
8+
9+
10+
var getter = Object.getOwnPropertyDescriptor(
11+
ArrayBuffer.prototype, "immutable"
12+
).get;
13+
14+
assert.sameValue(typeof getter, "function");
15+
16+
assert.throws(TypeError, function() {
17+
getter.call({});
18+
});
19+
20+
assert.throws(TypeError, function() {
21+
getter.call([]);
22+
});
23+
24+
var ta = new Int8Array(8);
25+
assert.throws(TypeError, function() {
26+
getter.call(ta);
27+
});
28+
29+
var dv = new DataView(new ArrayBuffer(8), 0);
30+
assert.throws(TypeError, function() {
31+
getter.call(dv);
32+
});
33+
34+
reportCompare(0, 0);
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
2+
3+
4+
5+
6+
7+
8+
9+
10+
var getter = Object.getOwnPropertyDescriptor(
11+
ArrayBuffer.prototype, "immutable"
12+
).get;
13+
14+
assert.sameValue(typeof getter, "function");
15+
16+
assert.throws(TypeError, function() {
17+
getter.call(undefined);
18+
}, "this is undefined");
19+
20+
assert.throws(TypeError, function() {
21+
getter.call(null);
22+
}, "this is null");
23+
24+
assert.throws(TypeError, function() {
25+
getter.call(42);
26+
}, "this is 42");
27+
28+
assert.throws(TypeError, function() {
29+
getter.call("1");
30+
}, "this is a string");
31+
32+
assert.throws(TypeError, function() {
33+
getter.call(true);
34+
}, "this is true");
35+
36+
assert.throws(TypeError, function() {
37+
getter.call(false);
38+
}, "this is false");
39+
40+
var s = Symbol("s");
41+
assert.throws(TypeError, function() {
42+
getter.call(s);
43+
}, "this is a Symbol");
44+
45+
reportCompare(0, 0);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
2+
3+
4+
5+
6+
7+
8+
9+
10+
var immutable = Object.getOwnPropertyDescriptor(
11+
ArrayBuffer.prototype, "immutable"
12+
);
13+
14+
var getter = immutable.get;
15+
var sab = new SharedArrayBuffer(4, {maxByteLength: 20});
16+
17+
assert.sameValue(typeof getter, "function");
18+
19+
assert.throws(TypeError, function() {
20+
getter.call(sab);
21+
}, "`this` cannot be a SharedArrayBuffer");
22+
23+
reportCompare(0, 0);
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
2+
3+
4+
5+
6+
7+
8+
9+
10+
var immutable = Object.getOwnPropertyDescriptor(
11+
ArrayBuffer.prototype, "immutable"
12+
);
13+
14+
var getter = immutable.get;
15+
var sab = new SharedArrayBuffer(4);
16+
17+
assert.sameValue(typeof getter, "function");
18+
19+
assert.throws(TypeError, function() {
20+
getter.call(sab);
21+
}, "`this` cannot be a SharedArrayBuffer");
22+
23+
reportCompare(0, 0);

js/src/tests/test262/prs/4445/built-ins/ArrayBuffer/prototype/shell.js

Whitespace-only changes.

js/src/tests/test262/prs/4445/built-ins/ArrayBuffer/prototype/transferToImmutable/browser.js

Whitespace-only changes.
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
2+
3+
4+
5+
6+
7+
8+
9+
10+
11+
verifyProperty(ArrayBuffer.prototype, 'transferToImmutable', {
12+
enumerable: false,
13+
writable: true,
14+
configurable: true
15+
});
16+
17+
reportCompare(0, 0);
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
2+
3+
4+
5+
6+
7+
8+
9+
10+
assert(Object.isExtensible(ArrayBuffer.prototype.transferToImmutable));
11+
12+
reportCompare(0, 0);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
2+
3+
4+
5+
6+
7+
8+
9+
10+
var source = new ArrayBuffer(4);
11+
12+
var sourceArray = new Uint8Array(source);
13+
sourceArray[0] = 1;
14+
sourceArray[1] = 2;
15+
sourceArray[2] = 3;
16+
sourceArray[3] = 4;
17+
18+
var dest = source.transferToImmutable(5);
19+
20+
assert.sameValue(source.byteLength, 0, 'source.byteLength');
21+
assert.sameValue(source.detached, true, 'source.byteLength');
22+
23+
assert.sameValue(dest.immutable, true, 'dest.immutable');
24+
assert.sameValue(dest.resizable, false, 'dest.resizable');
25+
assert.sameValue(dest.byteLength, 5, 'dest.byteLength');
26+
assert.sameValue(dest.maxByteLength, 5, 'dest.maxByteLength');
27+
28+
var destArray = new Uint8Array(dest);
29+
30+
assert.sameValue(destArray[0], 1, 'destArray[0]');
31+
assert.sameValue(destArray[1], 2, 'destArray[1]');
32+
assert.sameValue(destArray[2], 3, 'destArray[2]');
33+
assert.sameValue(destArray[3], 4, 'destArray[3]');
34+
assert.sameValue(destArray[4], 0, 'destArray[4]');
35+
36+
reportCompare(0, 0);
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
2+
3+
4+
5+
6+
7+
8+
9+
10+
var source = new ArrayBuffer(4);
11+
12+
var sourceArray = new Uint8Array(source);
13+
sourceArray[0] = 1;
14+
sourceArray[1] = 2;
15+
sourceArray[2] = 3;
16+
sourceArray[3] = 4;
17+
18+
var dest = source.transferToImmutable();
19+
20+
assert.sameValue(source.byteLength, 0, 'source.byteLength');
21+
assert.sameValue(source.detached, true, 'source.byteLength');
22+
23+
assert.sameValue(dest.immutable, true, 'dest.immutable');
24+
assert.sameValue(dest.resizable, false, 'dest.resizable');
25+
assert.sameValue(dest.byteLength, 4, 'dest.byteLength');
26+
assert.sameValue(dest.maxByteLength, 4, 'dest.maxByteLength');
27+
28+
var destArray = new Uint8Array(dest);
29+
30+
assert.sameValue(destArray[0], 1, 'destArray[0]');
31+
assert.sameValue(destArray[1], 2, 'destArray[1]');
32+
assert.sameValue(destArray[2], 3, 'destArray[2]');
33+
assert.sameValue(destArray[3], 4, 'destArray[3]');
34+
35+
reportCompare(0, 0);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
2+
3+
4+
5+
6+
7+
8+
9+
10+
var source = new ArrayBuffer(4);
11+
12+
var sourceArray = new Uint8Array(source);
13+
sourceArray[0] = 1;
14+
sourceArray[1] = 2;
15+
sourceArray[2] = 3;
16+
sourceArray[3] = 4;
17+
18+
var dest = source.transferToImmutable(3);
19+
20+
assert.sameValue(source.byteLength, 0, 'source.byteLength');
21+
assert.sameValue(source.detached, true, 'source.byteLength');
22+
23+
assert.sameValue(dest.immutable, true, 'dest.immutable');
24+
assert.sameValue(dest.resizable, false, 'dest.resizable');
25+
assert.sameValue(dest.byteLength, 3, 'dest.byteLength');
26+
assert.sameValue(dest.maxByteLength, 3, 'dest.maxByteLength');
27+
28+
var destArray = new Uint8Array(dest);
29+
30+
assert.sameValue(destArray[0], 1, 'destArray[0]');
31+
assert.sameValue(destArray[1], 2, 'destArray[1]');
32+
assert.sameValue(destArray[2], 3, 'destArray[2]');
33+
34+
reportCompare(0, 0);

0 commit comments

Comments
 (0)