| // vim: set ts=8 sts=4 et sw=4 tw=99: |
| |
| function testFloat32Array(L) { |
| var f = new Float32Array(8); |
| assertEq(f[0], 0); |
| assertEq(f[L], 0); |
| assertEq(f[L+8], undefined); |
| assertEq(f[8], undefined); |
| f[0] = 12; |
| f[L+1] = 13.5; |
| f[2] = f[1]; |
| f[L+3] = 4294967295; |
| f[L+4] = true; |
| f[L+5] = L; |
| assertEq(f[0], 12); |
| assertEq(f[1], 13.5); |
| assertEq(f[2], 13.5); |
| assertEq(f[3], 4294967296); |
| assertEq(f[4], 1); |
| assertEq(f[5], 0); |
| } |
| |
| function testFloat64Array(L) { |
| var f = new Float64Array(8); |
| assertEq(f[0], 0); |
| assertEq(f[L], 0); |
| assertEq(f[L+8], undefined); |
| assertEq(f[8], undefined); |
| f[0] = 12; |
| f[L+1] = 13.5; |
| f[2] = f[1]; |
| f[L+3] = 4294967295; |
| f[L+4] = true; |
| f[L+5] = L; |
| assertEq(f[0], 12); |
| assertEq(f[1], 13.5); |
| assertEq(f[2], 13.5); |
| assertEq(f[3], 4294967295); |
| assertEq(f[4], 1); |
| assertEq(f[5], 0); |
| } |
| |
| function testNaNCanonicalization() { |
| var buf = new ArrayBuffer(128); |
| |
| var u8 = new Uint8Array(buf); |
| for (var i = 0; i < 128; i++) |
| u8[i] = 0xFF; |
| |
| var dblarr = new Float64Array(buf); |
| var asstr = dblarr[0] + ""; |
| var asnum = dblarr[0] + 0.0; |
| assertEq(asstr, "NaN"); |
| assertEq(asnum, NaN); |
| } |
| |
| for (var i = 0; i < 10; i++) { |
| //testFloat32Array(0); |
| //testFloat64Array(0); |
| testNaNCanonicalization(); |
| if (i == 5) |
| gc(); |
| } |
| |