mirror of
https://github.com/roytam1/basilisk55.git
synced 2026-05-26 15:02:46 +00:00
69 lines
2.4 KiB
JavaScript
69 lines
2.4 KiB
JavaScript
// |reftest| skip-if(!ArrayBuffer.prototype.transfer)
|
|
|
|
var fixed = new ArrayBuffer(4);
|
|
assertEq(fixed.byteLength, 4);
|
|
assertEq(fixed.maxByteLength, 4);
|
|
assertEq(fixed.resizable, false);
|
|
assertEq(fixed.detached, false);
|
|
assertThrowsInstanceOf(() => fixed.resize(2), TypeError);
|
|
assertEq(ArrayBuffer.prototype.transfer.length, 0);
|
|
assertEq(ArrayBuffer.prototype.transferToFixedLength.length, 0);
|
|
var resizeArgumentConverted = false;
|
|
assertThrowsInstanceOf(() => fixed.resize({ valueOf() { resizeArgumentConverted = true; return 1; } }),
|
|
TypeError);
|
|
assertEq(resizeArgumentConverted, false);
|
|
|
|
var resizable = new ArrayBuffer(4, { maxByteLength: 8 });
|
|
assertEq(resizable.byteLength, 4);
|
|
assertEq(resizable.maxByteLength, 8);
|
|
assertEq(resizable.resizable, true);
|
|
|
|
var bytes = new Uint8Array(resizable);
|
|
bytes[0] = 11;
|
|
bytes[3] = 44;
|
|
resizable.resize(6);
|
|
assertEq(resizable.byteLength, 6);
|
|
assertEq(new Uint8Array(resizable)[0], 11);
|
|
assertEq(new Uint8Array(resizable)[3], 44);
|
|
assertEq(new Uint8Array(resizable)[4], 0);
|
|
assertThrowsInstanceOf(() => resizable.resize(9), RangeError);
|
|
|
|
var source = new ArrayBuffer(4);
|
|
var sourceBytes = new Uint8Array(source);
|
|
sourceBytes[0] = 1;
|
|
sourceBytes[1] = 2;
|
|
var sourceView = new Uint8Array(source);
|
|
var moved = source.transfer(6);
|
|
assertEq(source.detached, true);
|
|
assertEq(source.byteLength, 0);
|
|
assertEq(source.maxByteLength, 0);
|
|
assertEq(sourceView.length, 0);
|
|
assertEq(moved.byteLength, 6);
|
|
assertEq(moved.resizable, false);
|
|
assertEq(moved.maxByteLength, 6);
|
|
assertEq(new Uint8Array(moved)[0], 1);
|
|
assertEq(new Uint8Array(moved)[1], 2);
|
|
assertEq(new Uint8Array(moved)[4], 0);
|
|
|
|
var resizableSource = new ArrayBuffer(4, { maxByteLength: 8 });
|
|
new Uint8Array(resizableSource)[0] = 7;
|
|
var resizableMoved = resizableSource.transfer();
|
|
assertEq(resizableSource.detached, true);
|
|
assertEq(resizableSource.resizable, true);
|
|
assertEq(resizableMoved.byteLength, 4);
|
|
assertEq(resizableMoved.maxByteLength, 8);
|
|
assertEq(resizableMoved.resizable, true);
|
|
assertEq(new Uint8Array(resizableMoved)[0], 7);
|
|
|
|
var fixedMoved = resizableMoved.transferToFixedLength(10);
|
|
assertEq(resizableMoved.detached, true);
|
|
assertEq(fixedMoved.byteLength, 10);
|
|
assertEq(fixedMoved.maxByteLength, 10);
|
|
assertEq(fixedMoved.resizable, false);
|
|
assertEq(new Uint8Array(fixedMoved)[0], 7);
|
|
|
|
assertThrowsInstanceOf(() => new ArrayBuffer(4, { maxByteLength: 3 }), RangeError);
|
|
|
|
if (typeof reportCompare === "function")
|
|
reportCompare(0, 0);
|