import { assert } from "./assert.js";
function test_resize_shrink() {
var ab = new ArrayBuffer(4096, { maxByteLength: 4096 });
var ta = new Int32Array(ab);
for (var i = 0; i < ta.length; i++) ta[i] = 0x42424242;
var result = ta.with(0, {
valueOf() {
ab.resize(4);
return 999;
}
});
assert(result[0] === 999);
assert(result.length === 1024);
assert(result[1] === 0);
assert(result[1023] === 0);
}
function test_detach() {
var ab = new ArrayBuffer(16);
var ta = new Int32Array(ab);
ta[0] = 1; ta[1] = 2;
var caught = false;
try {
ta.with(0, {
valueOf() {
ab.transfer();
return 999;
}
});
} catch(e) {
caught = true;
assert(e instanceof TypeError);
}
assert(caught);
}
function test_resize_zero() {
var ab = new ArrayBuffer(16, { maxByteLength: 16 });
var ta = new Int32Array(ab);
ta[0] = 1;
var caught = false;
try {
ta.with(0, {
valueOf() {
ab.resize(0);
return 999;
}
});
} catch(e) {
caught = true;
assert(e instanceof RangeError);
}
assert(caught);
}
function test_resize_grow() {
var ab = new ArrayBuffer(16, { maxByteLength: 1024 });
var ta = new Int32Array(ab);
ta[0] = 1; ta[1] = 2; ta[2] = 3; ta[3] = 4;
var result = ta.with(0, {
valueOf() {
ab.resize(1024);
return 999;
}
});
assert(result.length === 4);
assert(result[0] === 999);
assert(result[1] === 2);
assert(result[2] === 3);
assert(result[3] === 4);
}
function test_normal() {
var ta = new Int32Array([10, 20, 30, 40]);
var result = ta.with(2, 99);
assert(result.length === 4);
assert(result[0] === 10);
assert(result[1] === 20);
assert(result[2] === 99);
assert(result[3] === 40);
}
function test_negative_index() {
var ta = new Float64Array([1.5, 2.5, 3.5]);
var result = ta.with(-1, 9.9);
assert(result.length === 3);
assert(result[0] === 1.5);
assert(result[1] === 2.5);
assert(result[2] === 9.9);
}
test_resize_shrink();
test_detach();
test_resize_zero();
test_resize_grow();
test_normal();
test_negative_index();