basic.js (1377B)
1 // Basic smoke tests for large ArrayBuffers. 2 3 let gb = 1 * 1024 * 1024 * 1024; 4 5 function test1() { 6 let ab = new ArrayBuffer(7 * gb); 7 assertEq(ab.byteLength, 7 * gb); 8 9 let taInt16 = new Int16Array(ab); 10 assertEq(taInt16.byteOffset, 0); 11 assertEq(taInt16.byteLength, 7 * gb); 12 assertEq(taInt16.length, 3.5 * gb); 13 14 let taInt16LastGb = new Int16Array(ab, 6 * gb); 15 assertEq(taInt16LastGb.byteOffset, 6 * gb); 16 assertEq(taInt16LastGb.byteLength, 1 * gb); 17 assertEq(taInt16LastGb.length, 0.5 * gb); 18 19 taInt16LastGb[0] = -99; 20 assertEq(taInt16[3 * gb], -99); 21 22 let taUint8 = new Uint8Array(ab); 23 assertEq(taUint8.length, 7 * gb); 24 assertEq(taUint8[7 * gb - 1], 0); 25 26 taUint8[7 * gb - 1] = 42; 27 taUint8[7 * gb - 1]++; 28 ++taUint8[7 * gb - 1]; 29 assertEq(taUint8[7 * gb - 1], 44); 30 31 let dv = new DataView(ab); 32 assertEq(dv.getInt16(6 * gb, true), -99); 33 assertEq(dv.getUint8(7 * gb - 1, true), 44); 34 35 dv.setInt16(6 * gb + 2, 123, true); 36 assertEq(taInt16LastGb[1], 123); 37 } 38 test1(); 39 40 function test2() { 41 let taInt8 = new Int8Array(4 * gb); 42 assertEq(taInt8.length, 4 * gb); 43 taInt8[4 * gb - 4] = 42; 44 assertEq(taInt8[4 * gb - 4], 42); 45 46 let dv = new DataView(taInt8.buffer); 47 assertEq(dv.getInt32(4 * gb - 4, true), 42); 48 assertEq(dv.getBigInt64(4 * gb - 8, true), 180388626432n); 49 } 50 test2();