summaryrefslogtreecommitdiff
path: root/frontend-old/node_modules/@protobufjs/float/tests
diff options
context:
space:
mode:
Diffstat (limited to 'frontend-old/node_modules/@protobufjs/float/tests')
-rw-r--r--frontend-old/node_modules/@protobufjs/float/tests/index.js100
1 files changed, 100 insertions, 0 deletions
diff --git a/frontend-old/node_modules/@protobufjs/float/tests/index.js b/frontend-old/node_modules/@protobufjs/float/tests/index.js
new file mode 100644
index 0000000..324e85c
--- /dev/null
+++ b/frontend-old/node_modules/@protobufjs/float/tests/index.js
@@ -0,0 +1,100 @@
+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;
+} \ No newline at end of file