Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add copy of transfer/transferToFixedLength tests with resizable-array…
…buffer features removed
- Loading branch information
Showing
8 changed files
with
354 additions
and
0 deletions.
There are no files selected for viewing
57 changes: 57 additions & 0 deletions
57
test/built-ins/ArrayBuffer/prototype/transfer/from-fixed-to-larger-no-resizable.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
// Copyright (C) 2021 the V8 project authors. All rights reserved. | ||
// This code is governed by the BSD license found in the LICENSE file. | ||
/*--- | ||
esid: sec-arraybuffer.prototype.transfer | ||
description: Transfering from a fixed-size ArrayBuffer into a larger ArrayBuffer | ||
info: | | ||
ArrayBuffer.prototype.transfer ( [ newLength ] ) | ||
1. Let O be the this value. | ||
2. Perform ? RequireInternalSlot(O, [[ArrayBufferData]]). | ||
3. If IsSharedArrayBuffer(O) is true, throw a TypeError exception. | ||
4. If IsDetachedBuffer(O) is true, throw a TypeError exception. | ||
5. If newLength is undefined, let newByteLength be | ||
O.[[ArrayBufferByteLength]]. | ||
6. Else, let newByteLength be ? ToIntegerOrInfinity(newLength). | ||
7. Let new be ? Construct(%ArrayBuffer%, « 𝔽(newByteLength) »). | ||
8. NOTE: This method returns a fixed-length ArrayBuffer. | ||
9. Let copyLength be min(newByteLength, O.[[ArrayBufferByteLength]]). | ||
10. Let fromBlock be O.[[ArrayBufferData]]. | ||
11. Let toBlock be new.[[ArrayBufferData]]. | ||
12. Perform CopyDataBlockBytes(toBlock, 0, fromBlock, 0, copyLength). | ||
13. NOTE: Neither creation of the new Data Block nor copying from the old | ||
Data Block are observable. Implementations reserve the right to implement | ||
this method as a zero-copy move or a realloc. | ||
14. Perform ! DetachArrayBuffer(O). | ||
15. Return new. | ||
features: [arraybuffer-transfer] | ||
---*/ | ||
|
||
// NOTE: This file is a copy of "from-fixed-to-larger.js" with the resizable | ||
// ArrayBuffer parts removed, so it can run in implementations which don't yet | ||
// support the "resizable-arraybuffer" feature. | ||
|
||
var source = new ArrayBuffer(4); | ||
|
||
var sourceArray = new Uint8Array(source); | ||
sourceArray[0] = 1; | ||
sourceArray[1] = 2; | ||
sourceArray[2] = 3; | ||
sourceArray[3] = 4; | ||
|
||
var dest = source.transfer(5); | ||
|
||
assert.sameValue(source.byteLength, 0, 'source.byteLength'); | ||
assert.throws(TypeError, function() { | ||
source.slice(); | ||
}); | ||
|
||
assert.sameValue(dest.byteLength, 5, 'dest.byteLength'); | ||
|
||
var destArray = new Uint8Array(dest); | ||
|
||
assert.sameValue(destArray[0], 1, 'destArray[0]'); | ||
assert.sameValue(destArray[1], 2, 'destArray[1]'); | ||
assert.sameValue(destArray[2], 3, 'destArray[2]'); | ||
assert.sameValue(destArray[3], 4, 'destArray[3]'); | ||
assert.sameValue(destArray[4], 0, 'destArray[4]'); |
58 changes: 58 additions & 0 deletions
58
test/built-ins/ArrayBuffer/prototype/transfer/from-fixed-to-same-no-resizable.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
// Copyright (C) 2021 the V8 project authors. All rights reserved. | ||
// This code is governed by the BSD license found in the LICENSE file. | ||
/*--- | ||
esid: sec-arraybuffer.prototype.transfer | ||
description: | | ||
Transfering from a fixed-size ArrayBuffer into an ArrayBuffer with the same | ||
byte length | ||
info: | | ||
ArrayBuffer.prototype.transfer ( [ newLength ] ) | ||
1. Let O be the this value. | ||
2. Perform ? RequireInternalSlot(O, [[ArrayBufferData]]). | ||
3. If IsSharedArrayBuffer(O) is true, throw a TypeError exception. | ||
4. If IsDetachedBuffer(O) is true, throw a TypeError exception. | ||
5. If newLength is undefined, let newByteLength be | ||
O.[[ArrayBufferByteLength]]. | ||
6. Else, let newByteLength be ? ToIntegerOrInfinity(newLength). | ||
7. Let new be ? Construct(%ArrayBuffer%, « 𝔽(newByteLength) »). | ||
8. NOTE: This method returns a fixed-length ArrayBuffer. | ||
9. Let copyLength be min(newByteLength, O.[[ArrayBufferByteLength]]). | ||
10. Let fromBlock be O.[[ArrayBufferData]]. | ||
11. Let toBlock be new.[[ArrayBufferData]]. | ||
12. Perform CopyDataBlockBytes(toBlock, 0, fromBlock, 0, copyLength). | ||
13. NOTE: Neither creation of the new Data Block nor copying from the old | ||
Data Block are observable. Implementations reserve the right to implement | ||
this method as a zero-copy move or a realloc. | ||
14. Perform ! DetachArrayBuffer(O). | ||
15. Return new. | ||
features: [arraybuffer-transfer] | ||
---*/ | ||
|
||
// NOTE: This file is a copy of "from-fixed-to-same.js" with the resizable | ||
// ArrayBuffer parts removed, so it can run in implementations which don't yet | ||
// support the "resizable-arraybuffer" feature. | ||
|
||
var source = new ArrayBuffer(4); | ||
|
||
var sourceArray = new Uint8Array(source); | ||
sourceArray[0] = 1; | ||
sourceArray[1] = 2; | ||
sourceArray[2] = 3; | ||
sourceArray[3] = 4; | ||
|
||
var dest = source.transfer(); | ||
|
||
assert.sameValue(source.byteLength, 0, 'source.byteLength'); | ||
assert.throws(TypeError, function() { | ||
source.slice(); | ||
}); | ||
|
||
assert.sameValue(dest.byteLength, 4, 'dest.byteLength'); | ||
|
||
var destArray = new Uint8Array(dest); | ||
|
||
assert.sameValue(destArray[0], 1, 'destArray[0]'); | ||
assert.sameValue(destArray[1], 2, 'destArray[1]'); | ||
assert.sameValue(destArray[2], 3, 'destArray[2]'); | ||
assert.sameValue(destArray[3], 4, 'destArray[3]'); |
55 changes: 55 additions & 0 deletions
55
test/built-ins/ArrayBuffer/prototype/transfer/from-fixed-to-smaller-no-resizable.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
// Copyright (C) 2021 the V8 project authors. All rights reserved. | ||
// This code is governed by the BSD license found in the LICENSE file. | ||
/*--- | ||
esid: sec-arraybuffer.prototype.transfer | ||
description: Transfering from a fixed-size ArrayBuffer into a smaller ArrayBuffer | ||
info: | | ||
ArrayBuffer.prototype.transfer ( [ newLength ] ) | ||
1. Let O be the this value. | ||
2. Perform ? RequireInternalSlot(O, [[ArrayBufferData]]). | ||
3. If IsSharedArrayBuffer(O) is true, throw a TypeError exception. | ||
4. If IsDetachedBuffer(O) is true, throw a TypeError exception. | ||
5. If newLength is undefined, let newByteLength be | ||
O.[[ArrayBufferByteLength]]. | ||
6. Else, let newByteLength be ? ToIntegerOrInfinity(newLength). | ||
7. Let new be ? Construct(%ArrayBuffer%, « 𝔽(newByteLength) »). | ||
8. NOTE: This method returns a fixed-length ArrayBuffer. | ||
9. Let copyLength be min(newByteLength, O.[[ArrayBufferByteLength]]). | ||
10. Let fromBlock be O.[[ArrayBufferData]]. | ||
11. Let toBlock be new.[[ArrayBufferData]]. | ||
12. Perform CopyDataBlockBytes(toBlock, 0, fromBlock, 0, copyLength). | ||
13. NOTE: Neither creation of the new Data Block nor copying from the old | ||
Data Block are observable. Implementations reserve the right to implement | ||
this method as a zero-copy move or a realloc. | ||
14. Perform ! DetachArrayBuffer(O). | ||
15. Return new. | ||
features: [arraybuffer-transfer] | ||
---*/ | ||
|
||
// NOTE: This file is a copy of "from-fixed-to-smaller.js" with the resizable | ||
// ArrayBuffer parts removed, so it can run in implementations which don't yet | ||
// support the "resizable-arraybuffer" feature. | ||
|
||
var source = new ArrayBuffer(4); | ||
|
||
var sourceArray = new Uint8Array(source); | ||
sourceArray[0] = 1; | ||
sourceArray[1] = 2; | ||
sourceArray[2] = 3; | ||
sourceArray[3] = 4; | ||
|
||
var dest = source.transfer(3); | ||
|
||
assert.sameValue(source.byteLength, 0, 'source.byteLength'); | ||
assert.throws(TypeError, function() { | ||
source.slice(); | ||
}); | ||
|
||
assert.sameValue(dest.byteLength, 3, 'dest.byteLength'); | ||
|
||
var destArray = new Uint8Array(dest); | ||
|
||
assert.sameValue(destArray[0], 1, 'destArray[0]'); | ||
assert.sameValue(destArray[1], 2, 'destArray[1]'); | ||
assert.sameValue(destArray[2], 3, 'destArray[2]'); |
49 changes: 49 additions & 0 deletions
49
test/built-ins/ArrayBuffer/prototype/transfer/from-fixed-to-zero-no-resizable.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
// Copyright (C) 2021 the V8 project authors. All rights reserved. | ||
// This code is governed by the BSD license found in the LICENSE file. | ||
/*--- | ||
esid: sec-arraybuffer.prototype.transfer | ||
description: Transfering from a fixed-size ArrayBuffer into a zero-length ArrayBuffer | ||
info: | | ||
ArrayBuffer.prototype.transfer ( [ newLength ] ) | ||
1. Let O be the this value. | ||
2. Perform ? RequireInternalSlot(O, [[ArrayBufferData]]). | ||
3. If IsSharedArrayBuffer(O) is true, throw a TypeError exception. | ||
4. If IsDetachedBuffer(O) is true, throw a TypeError exception. | ||
5. If newLength is undefined, let newByteLength be | ||
O.[[ArrayBufferByteLength]]. | ||
6. Else, let newByteLength be ? ToIntegerOrInfinity(newLength). | ||
7. Let new be ? Construct(%ArrayBuffer%, « 𝔽(newByteLength) »). | ||
8. NOTE: This method returns a fixed-length ArrayBuffer. | ||
9. Let copyLength be min(newByteLength, O.[[ArrayBufferByteLength]]). | ||
10. Let fromBlock be O.[[ArrayBufferData]]. | ||
11. Let toBlock be new.[[ArrayBufferData]]. | ||
12. Perform CopyDataBlockBytes(toBlock, 0, fromBlock, 0, copyLength). | ||
13. NOTE: Neither creation of the new Data Block nor copying from the old | ||
Data Block are observable. Implementations reserve the right to implement | ||
this method as a zero-copy move or a realloc. | ||
14. Perform ! DetachArrayBuffer(O). | ||
15. Return new. | ||
features: [arraybuffer-transfer] | ||
---*/ | ||
|
||
// NOTE: This file is a copy of "from-fixed-to-zero.js" with the resizable | ||
// ArrayBuffer parts removed, so it can run in implementations which don't yet | ||
// support the "resizable-arraybuffer" feature. | ||
|
||
var source = new ArrayBuffer(4); | ||
|
||
var sourceArray = new Uint8Array(source); | ||
sourceArray[0] = 1; | ||
sourceArray[1] = 2; | ||
sourceArray[2] = 3; | ||
sourceArray[3] = 4; | ||
|
||
var dest = source.transfer(0); | ||
|
||
assert.sameValue(source.byteLength, 0, 'source.byteLength'); | ||
assert.throws(TypeError, function() { | ||
source.slice(); | ||
}); | ||
|
||
assert.sameValue(dest.byteLength, 0, 'dest.byteLength'); |
36 changes: 36 additions & 0 deletions
36
...uilt-ins/ArrayBuffer/prototype/transferToFixedLength/from-fixed-to-larger-no-resizable.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
// Copyright (C) 2023 the V8 project authors. All rights reserved. | ||
// This code is governed by the BSD license found in the LICENSE file. | ||
/*--- | ||
esid: sec-arraybuffer.prototype.transfertofixedlength | ||
description: Transfering from a fixed-size ArrayBuffer into a larger ArrayBuffer | ||
features: [arraybuffer-transfer] | ||
---*/ | ||
|
||
// NOTE: This file is a copy of "from-fixed-to-larger.js" with the resizable | ||
// ArrayBuffer parts removed, so it can run in implementations which don't yet | ||
// support the "resizable-arraybuffer" feature. | ||
|
||
var source = new ArrayBuffer(4); | ||
|
||
var sourceArray = new Uint8Array(source); | ||
sourceArray[0] = 1; | ||
sourceArray[1] = 2; | ||
sourceArray[2] = 3; | ||
sourceArray[3] = 4; | ||
|
||
var dest = source.transferToFixedLength(5); | ||
|
||
assert.sameValue(source.byteLength, 0, 'source.byteLength'); | ||
assert.throws(TypeError, function() { | ||
source.slice(); | ||
}); | ||
|
||
assert.sameValue(dest.byteLength, 5, 'dest.byteLength'); | ||
|
||
var destArray = new Uint8Array(dest); | ||
|
||
assert.sameValue(destArray[0], 1, 'destArray[0]'); | ||
assert.sameValue(destArray[1], 2, 'destArray[1]'); | ||
assert.sameValue(destArray[2], 3, 'destArray[2]'); | ||
assert.sameValue(destArray[3], 4, 'destArray[3]'); | ||
assert.sameValue(destArray[4], 0, 'destArray[4]'); |
37 changes: 37 additions & 0 deletions
37
.../built-ins/ArrayBuffer/prototype/transferToFixedLength/from-fixed-to-same-no-resizable.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
// Copyright (C) 2023 the V8 project authors. All rights reserved. | ||
// This code is governed by the BSD license found in the LICENSE file. | ||
/*--- | ||
esid: sec-arraybuffer.prototype.transfertofixedlength | ||
description: | | ||
Transfering from a fixed-size ArrayBuffer into an ArrayBuffer with the same | ||
byte length | ||
features: [arraybuffer-transfer] | ||
---*/ | ||
|
||
// NOTE: This file is a copy of "from-fixed-to-same.js" with the resizable | ||
// ArrayBuffer parts removed, so it can run in implementations which don't yet | ||
// support the "resizable-arraybuffer" feature. | ||
|
||
var source = new ArrayBuffer(4); | ||
|
||
var sourceArray = new Uint8Array(source); | ||
sourceArray[0] = 1; | ||
sourceArray[1] = 2; | ||
sourceArray[2] = 3; | ||
sourceArray[3] = 4; | ||
|
||
var dest = source.transferToFixedLength(); | ||
|
||
assert.sameValue(source.byteLength, 0, 'source.byteLength'); | ||
assert.throws(TypeError, function() { | ||
source.slice(); | ||
}); | ||
|
||
assert.sameValue(dest.byteLength, 4, 'dest.byteLength'); | ||
|
||
var destArray = new Uint8Array(dest); | ||
|
||
assert.sameValue(destArray[0], 1, 'destArray[0]'); | ||
assert.sameValue(destArray[1], 2, 'destArray[1]'); | ||
assert.sameValue(destArray[2], 3, 'destArray[2]'); | ||
assert.sameValue(destArray[3], 4, 'destArray[3]'); |
34 changes: 34 additions & 0 deletions
34
...ilt-ins/ArrayBuffer/prototype/transferToFixedLength/from-fixed-to-smaller-no-resizable.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
// Copyright (C) 2023 the V8 project authors. All rights reserved. | ||
// This code is governed by the BSD license found in the LICENSE file. | ||
/*--- | ||
esid: sec-arraybuffer.prototype.transfertofixedlength | ||
description: Transfering from a fixed-size ArrayBuffer into a smaller ArrayBuffer | ||
features: [arraybuffer-transfer] | ||
---*/ | ||
|
||
// NOTE: This file is a copy of "from-fixed-to-samller.js" with the resizable | ||
// ArrayBuffer parts removed, so it can run in implementations which don't yet | ||
// support the "resizable-arraybuffer" feature. | ||
|
||
var source = new ArrayBuffer(4); | ||
|
||
var sourceArray = new Uint8Array(source); | ||
sourceArray[0] = 1; | ||
sourceArray[1] = 2; | ||
sourceArray[2] = 3; | ||
sourceArray[3] = 4; | ||
|
||
var dest = source.transferToFixedLength(3); | ||
|
||
assert.sameValue(source.byteLength, 0, 'source.byteLength'); | ||
assert.throws(TypeError, function() { | ||
source.slice(); | ||
}); | ||
|
||
assert.sameValue(dest.byteLength, 3, 'dest.byteLength'); | ||
|
||
var destArray = new Uint8Array(dest); | ||
|
||
assert.sameValue(destArray[0], 1, 'destArray[0]'); | ||
assert.sameValue(destArray[1], 2, 'destArray[1]'); | ||
assert.sameValue(destArray[2], 3, 'destArray[2]'); |
28 changes: 28 additions & 0 deletions
28
.../built-ins/ArrayBuffer/prototype/transferToFixedLength/from-fixed-to-zero-no-resizable.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
// Copyright (C) 2023 the V8 project authors. All rights reserved. | ||
// This code is governed by the BSD license found in the LICENSE file. | ||
/*--- | ||
esid: sec-arraybuffer.prototype.transfertofixedlength | ||
description: Transfering from a fixed-size ArrayBuffer into a zero-length ArrayBuffer | ||
features: [arraybuffer-transfer] | ||
---*/ | ||
|
||
// NOTE: This file is a copy of "from-fixed-to-zero.js" with the resizable | ||
// ArrayBuffer parts removed, so it can run in implementations which don't yet | ||
// support the "resizable-arraybuffer" feature. | ||
|
||
var source = new ArrayBuffer(4); | ||
|
||
var sourceArray = new Uint8Array(source); | ||
sourceArray[0] = 1; | ||
sourceArray[1] = 2; | ||
sourceArray[2] = 3; | ||
sourceArray[3] = 4; | ||
|
||
var dest = source.transferToFixedLength(0); | ||
|
||
assert.sameValue(source.byteLength, 0, 'source.byteLength'); | ||
assert.throws(TypeError, function() { | ||
source.slice(); | ||
}); | ||
|
||
assert.sameValue(dest.byteLength, 0, 'dest.byteLength'); |