mirror of https://github.com/tc39/test262.git
52 lines
1.3 KiB
JavaScript
52 lines
1.3 KiB
JavaScript
//@ skip if $architecture == "mips"
|
|
|
|
"use strict";
|
|
|
|
function assert(b) {
|
|
if (!b)
|
|
throw new Error;
|
|
}
|
|
|
|
function test() {
|
|
function storeLittleEndian(dv, index, value) {
|
|
dv.setFloat32(index, value, true);
|
|
}
|
|
noInline(storeLittleEndian);
|
|
|
|
function storeBigEndian(dv, index, value) {
|
|
dv.setFloat32(index, value, false);
|
|
}
|
|
noInline(storeBigEndian);
|
|
|
|
function store(dv, index, value, littleEndian) {
|
|
dv.setFloat32(index, value, littleEndian);
|
|
}
|
|
noInline(store);
|
|
|
|
let buffer = new ArrayBuffer(4);
|
|
let arr = new Float32Array(buffer);
|
|
let bits = new Uint32Array(buffer);
|
|
let dv = new DataView(buffer);
|
|
|
|
for (let i = 0; i < 10000; ++i) {
|
|
storeLittleEndian(dv, 0, 1.5);
|
|
assert(arr[0] === 1.5);
|
|
|
|
storeLittleEndian(dv, 0, 12912.124123215122);
|
|
assert(arr[0] === 12912.1240234375);
|
|
assert(bits[0] === 0x4649c07f);
|
|
|
|
storeLittleEndian(dv, 0, NaN);
|
|
assert(isNaN(arr[0]));
|
|
assert(bits[0] === 0x7FC00000);
|
|
|
|
storeLittleEndian(dv, 0, 2.3879393e-38);
|
|
assert(arr[0] === 2.387939260590663e-38);
|
|
assert(bits[0] === 0x01020304);
|
|
|
|
storeBigEndian(dv, 0, 2.3879393e-38);
|
|
assert(arr[0] === 1.539989614439558e-36);
|
|
assert(bits[0] === 0x04030201);
|
|
}
|
|
}
|
|
test(); |