Built motion from commit 6a09e18b.|2.6.11
[motion2.git] / legacy-libs / @protobufjs / float / tests / index.js
1 var tape = require("tape");\r
2 \r
3 var float = require("..");\r
4 \r
5 tape.test("float", function(test) {\r
6 \r
7     // default\r
8     test.test(test.name + " - typed array", function(test) {\r
9         runTest(float, test);\r
10     });\r
11 \r
12     // ieee754\r
13     test.test(test.name + " - fallback", function(test) {\r
14         var F32 = global.Float32Array,\r
15             F64 = global.Float64Array;\r
16         delete global.Float32Array;\r
17         delete global.Float64Array;\r
18         runTest(float({}), test);\r
19         global.Float32Array = F32;\r
20         global.Float64Array = F64;\r
21     });\r
22 });\r
23 \r
24 function runTest(float, test) {\r
25 \r
26     var common = [\r
27         0,\r
28         -0,\r
29         Infinity,\r
30         -Infinity,\r
31         0.125,\r
32         1024.5,\r
33         -4096.5,\r
34         NaN\r
35     ];\r
36 \r
37     test.test(test.name + " - using 32 bits", function(test) {\r
38         common.concat([\r
39             3.4028234663852886e+38,\r
40             1.1754943508222875e-38,\r
41             1.1754946310819804e-39\r
42         ])\r
43         .forEach(function(value) {\r
44             var strval = value === 0 && 1 / value < 0 ? "-0" : value.toString();\r
45             test.ok(\r
46                 checkValue(value, 4, float.readFloatLE, float.writeFloatLE, Buffer.prototype.writeFloatLE),\r
47                 "should write and read back " + strval + " (32 bit LE)"\r
48             );\r
49             test.ok(\r
50                 checkValue(value, 4, float.readFloatBE, float.writeFloatBE, Buffer.prototype.writeFloatBE),\r
51                 "should write and read back " + strval + " (32 bit BE)"\r
52             );\r
53         });\r
54         test.end();\r
55     });\r
56 \r
57     test.test(test.name + " - using 64 bits", function(test) {\r
58         common.concat([\r
59             1.7976931348623157e+308,\r
60             2.2250738585072014e-308,\r
61             2.2250738585072014e-309\r
62         ])\r
63         .forEach(function(value) {\r
64             var strval = value === 0 && 1 / value < 0 ? "-0" : value.toString();\r
65             test.ok(\r
66                 checkValue(value, 8, float.readDoubleLE, float.writeDoubleLE, Buffer.prototype.writeDoubleLE),\r
67                 "should write and read back " + strval + " (64 bit LE)"\r
68             );\r
69             test.ok(\r
70                 checkValue(value, 8, float.readDoubleBE, float.writeDoubleBE, Buffer.prototype.writeDoubleBE),\r
71                 "should write and read back " + strval + " (64 bit BE)"\r
72             );\r
73         });\r
74         test.end();\r
75     });\r
76 \r
77     test.end();\r
78 }\r
79 \r
80 function checkValue(value, size, read, write, write_comp) {\r
81     var buffer = new Buffer(size);\r
82     write(value, buffer, 0);\r
83     var value_comp = read(buffer, 0);\r
84     var strval = value === 0 && 1 / value < 0 ? "-0" : value.toString();\r
85     if (value !== value) {\r
86         if (value_comp === value_comp)\r
87             return false;\r
88     } else if (value_comp !== value)\r
89         return false;\r
90 \r
91     var buffer_comp = new Buffer(size);\r
92     write_comp.call(buffer_comp, value, 0);\r
93     for (var i = 0; i < size; ++i)\r
94         if (buffer[i] !== buffer_comp[i]) {\r
95             console.error(">", buffer, buffer_comp);\r
96             return false;\r
97         }\r
98 \r
99     return true;\r
100 }