function testBasicTypedArrays() { var ar, aridx, idx; var a = new Uint8Array(16); var b = new Uint16Array(16); var c = new Uint32Array(16); var d = new Int8Array(16); var e = new Int16Array(16); var f = new Int32Array(16); var g = new Float32Array(16); var h = new Float64Array(16); var iarrays = [ a, b, c, d, e, f ]; for (aridx = 0; aridx < iarrays.length; ++aridx) { ar = iarrays[aridx]; for (idx = 0; idx < ar.length-4; ++idx) { ar[idx] = 22; ar[idx+1] = 12.7; ar[idx+2] = "99"; ar[idx+3] = { k: "thing" }; ar[idx+4] = Infinity; } assertEq(ar[ar.length-5], 22); assertEq(ar[ar.length-4], 12); assertEq(ar[ar.length-3], 99); assertEq(ar[ar.length-2], 0); assertEq(ar[ar.length-1], 0); } var farrays = [ g, h ]; for (aridx = 0; aridx < farrays.length; ++aridx) { ar = farrays[aridx]; for (idx = 0; idx < ar.length-4; ++idx) { ar[idx] = 22; ar[idx+1] = 12.25; ar[idx+2] = "99"; ar[idx+3] = { k: "thing" }; ar[idx+4] = Infinity; } assertEq(ar[ar.length-5], 22); assertEq(ar[ar.length-4], 12.25); assertEq(ar[ar.length-3], 99); assertEq(!(ar[ar.length-2] == ar[ar.length-2]), true); assertEq(ar[ar.length-1], Infinity); } } function testSpecialTypedArrays() { var ar, aridx, idx; ar = new Uint8ClampedArray(16); for (idx = 0; idx < ar.length-4; ++idx) { ar[idx] = -200; ar[idx+1] = 127.5; ar[idx+2] = 987; ar[idx+3] = Infinity; ar[idx+4] = "hello world"; } assertEq(ar[ar.length-5], 0); assertEq(ar[ar.length-4], 128); assertEq(ar[ar.length-3], 255); assertEq(ar[ar.length-2], 255); assertEq(ar[ar.length-1], 0); } function testTypedArrayOther() { var ar = new Int32Array(16); for (var i = 0; i < ar.length; ++i) { ar[i] = i; } for (var i = 0; i < ar.length; ++i) { // deliberate out of bounds access ar[i-2] = ar[i+2]; } var t = 0; for (var i = 0; i < ar.length; ++i) { t += ar[i]; } assertEq(t, 143); } testBasicTypedArrays(); testSpecialTypedArrays(); testTypedArrayOther();