Path: blob/master/node_modules/@protobufjs/float/tests/index.js
1129 views
var tape = require("tape");12var float = require("..");34tape.test("float", function(test) {56// default7test.test(test.name + " - typed array", function(test) {8runTest(float, test);9});1011// ieee75412test.test(test.name + " - fallback", function(test) {13var F32 = global.Float32Array,14F64 = global.Float64Array;15delete global.Float32Array;16delete global.Float64Array;17runTest(float({}), test);18global.Float32Array = F32;19global.Float64Array = F64;20});21});2223function runTest(float, test) {2425var common = [260,27-0,28Infinity,29-Infinity,300.125,311024.5,32-4096.5,33NaN34];3536test.test(test.name + " - using 32 bits", function(test) {37common.concat([383.4028234663852886e+38,391.1754943508222875e-38,401.1754946310819804e-3941])42.forEach(function(value) {43var strval = value === 0 && 1 / value < 0 ? "-0" : value.toString();44test.ok(45checkValue(value, 4, float.readFloatLE, float.writeFloatLE, Buffer.prototype.writeFloatLE),46"should write and read back " + strval + " (32 bit LE)"47);48test.ok(49checkValue(value, 4, float.readFloatBE, float.writeFloatBE, Buffer.prototype.writeFloatBE),50"should write and read back " + strval + " (32 bit BE)"51);52});53test.end();54});5556test.test(test.name + " - using 64 bits", function(test) {57common.concat([581.7976931348623157e+308,592.2250738585072014e-308,602.2250738585072014e-30961])62.forEach(function(value) {63var strval = value === 0 && 1 / value < 0 ? "-0" : value.toString();64test.ok(65checkValue(value, 8, float.readDoubleLE, float.writeDoubleLE, Buffer.prototype.writeDoubleLE),66"should write and read back " + strval + " (64 bit LE)"67);68test.ok(69checkValue(value, 8, float.readDoubleBE, float.writeDoubleBE, Buffer.prototype.writeDoubleBE),70"should write and read back " + strval + " (64 bit BE)"71);72});73test.end();74});7576test.end();77}7879function checkValue(value, size, read, write, write_comp) {80var buffer = new Buffer(size);81write(value, buffer, 0);82var value_comp = read(buffer, 0);83var strval = value === 0 && 1 / value < 0 ? "-0" : value.toString();84if (value !== value) {85if (value_comp === value_comp)86return false;87} else if (value_comp !== value)88return false;8990var buffer_comp = new Buffer(size);91write_comp.call(buffer_comp, value, 0);92for (var i = 0; i < size; ++i)93if (buffer[i] !== buffer_comp[i]) {94console.error(">", buffer, buffer_comp);95return false;96}9798return true;99}100101