123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- var tape = require("tape");
-
- var float = require("..");
-
- tape.test("float", function(test) {
-
- // default
- test.test(test.name + " - typed array", function(test) {
- runTest(float, test);
- });
-
- // ieee754
- test.test(test.name + " - fallback", function(test) {
- var F32 = global.Float32Array,
- F64 = global.Float64Array;
- delete global.Float32Array;
- delete global.Float64Array;
- runTest(float({}), test);
- global.Float32Array = F32;
- global.Float64Array = F64;
- });
- });
-
- function runTest(float, test) {
-
- var common = [
- 0,
- -0,
- Infinity,
- -Infinity,
- 0.125,
- 1024.5,
- -4096.5,
- NaN
- ];
-
- test.test(test.name + " - using 32 bits", function(test) {
- common.concat([
- 3.4028234663852886e+38,
- 1.1754943508222875e-38,
- 1.1754946310819804e-39
- ])
- .forEach(function(value) {
- var strval = value === 0 && 1 / value < 0 ? "-0" : value.toString();
- test.ok(
- checkValue(value, 4, float.readFloatLE, float.writeFloatLE, Buffer.prototype.writeFloatLE),
- "should write and read back " + strval + " (32 bit LE)"
- );
- test.ok(
- checkValue(value, 4, float.readFloatBE, float.writeFloatBE, Buffer.prototype.writeFloatBE),
- "should write and read back " + strval + " (32 bit BE)"
- );
- });
- test.end();
- });
-
- test.test(test.name + " - using 64 bits", function(test) {
- common.concat([
- 1.7976931348623157e+308,
- 2.2250738585072014e-308,
- 2.2250738585072014e-309
- ])
- .forEach(function(value) {
- var strval = value === 0 && 1 / value < 0 ? "-0" : value.toString();
- test.ok(
- checkValue(value, 8, float.readDoubleLE, float.writeDoubleLE, Buffer.prototype.writeDoubleLE),
- "should write and read back " + strval + " (64 bit LE)"
- );
- test.ok(
- checkValue(value, 8, float.readDoubleBE, float.writeDoubleBE, Buffer.prototype.writeDoubleBE),
- "should write and read back " + strval + " (64 bit BE)"
- );
- });
- test.end();
- });
-
- test.end();
- }
-
- function checkValue(value, size, read, write, write_comp) {
- var buffer = new Buffer(size);
- write(value, buffer, 0);
- var value_comp = read(buffer, 0);
- var strval = value === 0 && 1 / value < 0 ? "-0" : value.toString();
- if (value !== value) {
- if (value_comp === value_comp)
- return false;
- } else if (value_comp !== value)
- return false;
-
- var buffer_comp = new Buffer(size);
- write_comp.call(buffer_comp, value, 0);
- for (var i = 0; i < size; ++i)
- if (buffer[i] !== buffer_comp[i]) {
- console.error(">", buffer, buffer_comp);
- return false;
- }
-
- return true;
- }
|