blob: 5572bbf18e291bb92b27a055e260a4565e8e015d [file] [log] [blame]
Roman Reissf29762f2015-05-19 11:00:061'use strict';
Brian Whitee505a122011-05-16 01:25:112/*
3 * Tests to verify we're reading in floats correctly
4 */
Ben Noordhuis7f4aba92012-02-20 12:22:125var common = require('../common');
Brian Whitee505a122011-05-16 01:25:116var ASSERT = require('assert');
7
8/*
9 * Test (32 bit) float
10 */
Ben Noordhuis59a9a9b2011-11-17 13:14:4311function test(clazz) {
12 var buffer = new clazz(4);
Brian Whiteb7c23ac2011-08-09 04:40:1013
Brian Whitee505a122011-05-16 01:25:1114 buffer[0] = 0;
15 buffer[1] = 0;
16 buffer[2] = 0x80;
17 buffer[3] = 0x3f;
Brian Whiteb7c23ac2011-08-09 04:40:1018 ASSERT.equal(4.600602988224807e-41, buffer.readFloatBE(0));
19 ASSERT.equal(1, buffer.readFloatLE(0));
Brian Whitee505a122011-05-16 01:25:1120
21 buffer[0] = 0;
22 buffer[1] = 0;
23 buffer[2] = 0;
24 buffer[3] = 0xc0;
Brian Whiteb7c23ac2011-08-09 04:40:1025 ASSERT.equal(2.6904930515036488e-43, buffer.readFloatBE(0));
26 ASSERT.equal(-2, buffer.readFloatLE(0));
Brian Whitee505a122011-05-16 01:25:1127
28 buffer[0] = 0xff;
29 buffer[1] = 0xff;
30 buffer[2] = 0x7f;
31 buffer[3] = 0x7f;
Brian Whiteb7c23ac2011-08-09 04:40:1032 ASSERT.ok(isNaN(buffer.readFloatBE(0)));
33 ASSERT.equal(3.4028234663852886e+38, buffer.readFloatLE(0));
Brian Whitee505a122011-05-16 01:25:1134
35 buffer[0] = 0xab;
36 buffer[1] = 0xaa;
37 buffer[2] = 0xaa;
38 buffer[3] = 0x3e;
Brian Whiteb7c23ac2011-08-09 04:40:1039 ASSERT.equal(-1.2126478207002966e-12, buffer.readFloatBE(0));
40 ASSERT.equal(0.3333333432674408, buffer.readFloatLE(0));
Brian Whitee505a122011-05-16 01:25:1141
42 buffer[0] = 0;
43 buffer[1] = 0;
44 buffer[2] = 0;
45 buffer[3] = 0;
Brian Whiteb7c23ac2011-08-09 04:40:1046 ASSERT.equal(0, buffer.readFloatBE(0));
47 ASSERT.equal(0, buffer.readFloatLE(0));
Colton Baker87286cc2011-10-04 22:08:1848 ASSERT.equal(false, 1 / buffer.readFloatLE(0) < 0);
Brian Whitee505a122011-05-16 01:25:1149
50 buffer[3] = 0x80;
Brian Whiteb7c23ac2011-08-09 04:40:1051 ASSERT.equal(1.793662034335766e-43, buffer.readFloatBE(0));
52 ASSERT.equal(0, buffer.readFloatLE(0));
Colton Baker87286cc2011-10-04 22:08:1853 ASSERT.equal(true, 1 / buffer.readFloatLE(0) < 0);
Brian Whitee505a122011-05-16 01:25:1154
55 buffer[0] = 0;
56 buffer[1] = 0;
57 buffer[2] = 0x80;
58 buffer[3] = 0x7f;
Brian Whiteb7c23ac2011-08-09 04:40:1059 ASSERT.equal(4.609571298396486e-41, buffer.readFloatBE(0));
60 ASSERT.equal(Infinity, buffer.readFloatLE(0));
Brian Whitee505a122011-05-16 01:25:1161
62 buffer[0] = 0;
63 buffer[1] = 0;
64 buffer[2] = 0x80;
65 buffer[3] = 0xff;
Brian Whiteb7c23ac2011-08-09 04:40:1066 ASSERT.equal(4.627507918739843e-41, buffer.readFloatBE(0));
67 ASSERT.equal(-Infinity, buffer.readFloatLE(0));
Brian Whitee505a122011-05-16 01:25:1168}
69
70
Ben Noordhuis59a9a9b2011-11-17 13:14:4371test(Buffer);