blob: 46ddd5a139839175b852b72841d7a08fa2355413 [file] [log] [blame]
let result = {};
result.BigInt64Array_name = BigInt64Array.name;
let arr2signed = new BigInt64Array(arr1signed.buffer);
let arr2unsigned = new BigUint64Array(arr1unsigned.buffer);
result.arr1_to_arr1_signed = [];
for(let x of bigint_list){
arr1signed[0] = x;
result.arr1_to_arr1_signed.push(arr1signed[0]);
}
result.arr1_to_arr1_unsigned = [];
for(let x of bigint_list){
arr1unsigned[0] = x;
result.arr1_to_arr1_unsigned.push(arr1unsigned[0]);
}
result.arr1_to_arr2_signed = [];
for(let x of bigint_list){
arr1signed[0] = x;
result.arr1_to_arr2_signed.push(arr2signed[0]);
}
result.arr1_to_arr2_unsigned = [];
for(let x of bigint_list){
arr1unsigned[0] = x;
result.arr1_to_arr2_unsigned.push(arr2unsigned[0]);
}
result.arr2_to_arr1_signed = [];
for(let x of bigint_list){
arr2signed[0] = x;
result.arr2_to_arr1_signed.push(arr1signed[0]);
}
result.arr2_to_arr1_unsigned = [];
for(let x of bigint_list){
arr2unsigned[0] = x;
result.arr2_to_arr1_unsigned.push(arr1unsigned[0]);
}
result.assertEquals = [];
function assertEqual(cb){
result.assertEquals.push([cb.toString(), cb()]);
}
let arr1 = arr1unsigned;
let arr2 = arr2unsigned;
assertEqual(() => [arr2.BYTES_PER_ELEMENT, arr1.BYTES_PER_ELEMENT]);
assertEqual(() => [arr2.byteLength, arr1.byteLength]);
assertEqual(() => [arr2.length, arr1.length]);
assertEqual(() => [arr2.slice().length, arr1.slice().length]);
assertEqual(() => [arr2.slice(1, 5).length, arr1.slice(1, 5).length]);
arr1[0] = 1n; arr1[1] = 2n; arr1[2] = 3n; arr1[3] = 4n; arr1[4] = 5n;
result.arr2_slice = Array.from(arr2.slice(1, 5));
result.arr2_subarray = Array.from(arr2.subarray(1, 5));
let reducer = (k, v) => typeof v === 'bigint' ? v.toString() + 'n' : v;
function arraytostring(arr){
return JSON.stringify(Array.from(Array.from(arr)), reducer);
}
let sub = arr2.subarray(1, 5);
assertEqual(() => [sub.byteOffset, 8]);
sub[0] = 7n; sub[1] = 77n; sub[2] = 3n; sub[3] = 66n;
assertEqual(() => [arraytostring(arr1.slice(0, 5)), '["1n","7n","77n","3n","66n"]']);
arr1[2] = 62n;
assertEqual(() => [sub[1], 62n]);
let slice = arr2.slice(1, 5);
assertEqual(() => [slice.byteOffset, 0]);
slice[0] = 777n; slice[1] = 666n; slice[2] = 555n;
assertEqual(() => [arraytostring(arr1.slice(0, 5)), '["1n","7n","62n","3n","66n"]']);
arr2.set([2n, 4n, 8n]);
assertEqual(() => [arraytostring(arr1.slice(0, 3)), '["2n","4n","8n"]']);
arr2.set([1n, 3n, 7n], 6);
assertEqual(() => [arraytostring(arr1.slice(6, 9)), '["1n","3n","7n"]']);
arr1[15] = 111n; arr1[18] = 171n; arr1[19] = 629n;
assertEqual(() => [arraytostring(arr2.slice(-1)), '["629n"]']);
assertEqual(() => [arraytostring(arr2.slice(-5, -1)), '["111n","0n","0n","171n"]']);
assertEqual(() => [arraytostring(arr2.slice(-5, -6)), '[]']);
arr3 = new BigUint64Array(Array.from({length:5}, (_, idx) => BigInt(idx)));
assertEqual(() => [arraytostring(arr3), '["0n","1n","2n","3n","4n"]']);
arr3.copyWithin(0, 2, 10);
assertEqual(() => [arraytostring(arr3), '["2n","3n","4n","3n","4n"]']);
console.log(JSON.stringify(result, reducer));