Source code

Revision control

Copy as Markdown

Other Tools

// 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();
}