|
| 1 | +let result = {}; |
| 2 | +result.BigInt64Array_name = BigInt64Array.name; |
| 3 | +let arr2signed = new BigInt64Array(arr1signed.buffer); |
| 4 | +let arr2unsigned = new BigUint64Array(arr1unsigned.buffer); |
| 5 | + |
| 6 | +result.arr1_to_arr1_signed = []; |
| 7 | +for(let x of bigint_list){ |
| 8 | + arr1signed[0] = x; |
| 9 | + result.arr1_to_arr1_signed.push(arr1signed[0]); |
| 10 | +} |
| 11 | + |
| 12 | +result.arr1_to_arr1_unsigned = []; |
| 13 | +for(let x of bigint_list){ |
| 14 | + arr1unsigned[0] = x; |
| 15 | + result.arr1_to_arr1_unsigned.push(arr1unsigned[0]); |
| 16 | +} |
| 17 | + |
| 18 | +result.arr1_to_arr2_signed = []; |
| 19 | +for(let x of bigint_list){ |
| 20 | + arr1signed[0] = x; |
| 21 | + result.arr1_to_arr2_signed.push(arr2signed[0]); |
| 22 | +} |
| 23 | + |
| 24 | +result.arr1_to_arr2_unsigned = []; |
| 25 | +for(let x of bigint_list){ |
| 26 | + arr1unsigned[0] = x; |
| 27 | + result.arr1_to_arr2_unsigned.push(arr2unsigned[0]); |
| 28 | +} |
| 29 | + |
| 30 | +result.arr2_to_arr1_signed = []; |
| 31 | +for(let x of bigint_list){ |
| 32 | + arr2signed[0] = x; |
| 33 | + result.arr2_to_arr1_signed.push(arr1signed[0]); |
| 34 | +} |
| 35 | + |
| 36 | +result.arr2_to_arr1_unsigned = []; |
| 37 | +for(let x of bigint_list){ |
| 38 | + arr2unsigned[0] = x; |
| 39 | + result.arr2_to_arr1_unsigned.push(arr1unsigned[0]); |
| 40 | +} |
| 41 | + |
| 42 | + |
| 43 | +result.assertEquals = []; |
| 44 | +function assertEqual(cb){ |
| 45 | + result.assertEquals.push([cb.toString(), cb()]); |
| 46 | +} |
| 47 | + |
| 48 | +let arr1 = arr1unsigned; |
| 49 | +let arr2 = arr2unsigned; |
| 50 | +assertEqual(() => [arr2.BYTES_PER_ELEMENT, arr1.BYTES_PER_ELEMENT]); |
| 51 | +assertEqual(() => [arr2.byteLength, arr1.byteLength]); |
| 52 | +assertEqual(() => [arr2.length, arr1.length]); |
| 53 | +assertEqual(() => [arr2.slice().length, arr1.slice().length]); |
| 54 | +assertEqual(() => [arr2.slice(1, 5).length, arr1.slice(1, 5).length]); |
| 55 | + |
| 56 | +arr1[0] = 1n; arr1[1] = 2n; arr1[2] = 3n; arr1[3] = 4n; arr1[4] = 5n; |
| 57 | + |
| 58 | +result.arr2_slice = Array.from(arr2.slice(1, 5)); |
| 59 | +result.arr2_subarray = Array.from(arr2.subarray(1, 5)); |
| 60 | +let reducer = (k, v) => typeof v === 'bigint' ? v.toString() + 'n' : v; |
| 61 | +function arraytostring(arr){ |
| 62 | + return JSON.stringify(Array.from(Array.from(arr)), reducer); |
| 63 | +} |
| 64 | + |
| 65 | +let sub = arr2.subarray(1, 5); |
| 66 | +assertEqual(() => [sub.byteOffset, 8]); |
| 67 | +sub[0] = 7n; sub[1] = 77n; sub[2] = 3n; sub[3] = 66n; |
| 68 | +assertEqual(() => [arraytostring(arr1.slice(0, 5)), '["1n","7n","77n","3n","66n"]']); |
| 69 | + |
| 70 | +arr1[2] = 62n; |
| 71 | +assertEqual(() => [sub[1], 62n]); |
| 72 | + |
| 73 | +let slice = arr2.slice(1, 5); |
| 74 | +assertEqual(() => [slice.byteOffset, 0]); |
| 75 | + |
| 76 | +slice[0] = 777n; slice[1] = 666n; slice[2] = 555n; |
| 77 | +assertEqual(() => [arraytostring(arr1.slice(0, 5)), '["1n","7n","62n","3n","66n"]']); |
| 78 | + |
| 79 | +arr2.set([2n, 4n, 8n]); |
| 80 | +assertEqual(() => [arraytostring(arr1.slice(0, 3)), '["2n","4n","8n"]']); |
| 81 | + |
| 82 | +arr2.set([1n, 3n, 7n], 6); |
| 83 | +assertEqual(() => [arraytostring(arr1.slice(6, 9)), '["1n","3n","7n"]']); |
| 84 | + |
| 85 | +arr1[15] = 111n; arr1[18] = 171n; arr1[19] = 629n; |
| 86 | + |
| 87 | +assertEqual(() => [arraytostring(arr2.slice(-1)), '["629n"]']); |
| 88 | +assertEqual(() => [arraytostring(arr2.slice(-5, -1)), '["111n","0n","0n","171n"]']); |
| 89 | +assertEqual(() => [arraytostring(arr2.slice(-5, -6)), '[]']); |
| 90 | + |
| 91 | +arr3 = new BigUint64Array(Array.from({length:5}, (_, idx) => BigInt(idx))); |
| 92 | +assertEqual(() => [arraytostring(arr3), '["0n","1n","2n","3n","4n"]']); |
| 93 | +arr3.copyWithin(0, 2, 10); |
| 94 | +assertEqual(() => [arraytostring(arr3), '["2n","3n","4n","3n","4n"]']); |
| 95 | + |
| 96 | +console.log(JSON.stringify(result, reducer)); |
0 commit comments