Skip to content

Commit

Permalink
test: fix floating point NaN tests on mips
Browse files Browse the repository at this point in the history
MIPS machines use a slightly different format for NaNs (still perfectly
valid though). This patch adjusts the buffer testcases to allow for
this.

See https://en.wikipedia.org/wiki/NaN#Encoding for some more info.

Based on patch applied to debian by Jérémy Lal <kapouer@melix.org>

Reviewed-By: Fedor Indutny <fedor@indutny.com>
PR-URL: nodejs/node-v0.x-archive#8793
  • Loading branch information
jcowgill authored and indutny committed Nov 27, 2014
1 parent 0f66835 commit 7efc64d
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 20 deletions.
29 changes: 15 additions & 14 deletions test/simple/test-writedouble.js
Expand Up @@ -170,20 +170,21 @@ function test(clazz) {
// Darwin ia32 does the other kind of NaN.
// Compiler bug. No one really cares.
ASSERT(0x7F === buffer[0] || 0xFF === buffer[0]);
ASSERT.equal(0xF8, buffer[1]);
ASSERT.equal(0x00, buffer[2]);
ASSERT.equal(0x00, buffer[3]);
ASSERT.equal(0x00, buffer[4]);
ASSERT.equal(0x00, buffer[5]);
ASSERT.equal(0x00, buffer[6]);
ASSERT.equal(0x00, buffer[7]);
ASSERT.equal(0x00, buffer[8]);
ASSERT.equal(0x00, buffer[9]);
ASSERT.equal(0x00, buffer[10]);
ASSERT.equal(0x00, buffer[11]);
ASSERT.equal(0x00, buffer[12]);
ASSERT.equal(0x00, buffer[13]);
ASSERT.equal(0xF8, buffer[14]);
// mips processors use a slightly different NaN
ASSERT(0xF8 === buffer[1] || 0xF7 === buffer[1]);
ASSERT(0x00 === buffer[2] || 0xFF === buffer[2]);
ASSERT(0x00 === buffer[3] || 0xFF === buffer[3]);
ASSERT(0x00 === buffer[4] || 0xFF === buffer[4]);
ASSERT(0x00 === buffer[5] || 0xFF === buffer[5]);
ASSERT(0x00 === buffer[6] || 0xFF === buffer[6]);
ASSERT(0x00 === buffer[7] || 0xFF === buffer[7]);
ASSERT(0x00 === buffer[8] || 0xFF === buffer[8]);
ASSERT(0x00 === buffer[9] || 0xFF === buffer[9]);
ASSERT(0x00 === buffer[10] || 0xFF === buffer[10]);
ASSERT(0x00 === buffer[11] || 0xFF === buffer[11]);
ASSERT(0x00 === buffer[12] || 0xFF === buffer[12]);
ASSERT(0x00 === buffer[13] || 0xFF === buffer[13]);
ASSERT(0xF8 === buffer[14] || 0xF7 === buffer[14]);
// Darwin ia32 does the other kind of NaN.
// Compiler bug. No one really cares.
ASSERT(0x7F === buffer[15] || 0xFF === buffer[15]);
Expand Down
13 changes: 7 additions & 6 deletions test/simple/test-writefloat.js
Expand Up @@ -116,12 +116,13 @@ function test(clazz) {
// Darwin ia32 does the other kind of NaN.
// Compiler bug. No one really cares.
ASSERT(0x7F === buffer[0] || 0xFF === buffer[0]);
ASSERT.equal(0xc0, buffer[1]);
ASSERT.equal(0x00, buffer[2]);
ASSERT.equal(0x00, buffer[3]);
ASSERT.equal(0x00, buffer[4]);
ASSERT.equal(0x00, buffer[5]);
ASSERT.equal(0xc0, buffer[6]);
// mips processors use a slightly different NaN
ASSERT(0xC0 === buffer[1] || 0xBF === buffer[1]);
ASSERT(0x00 === buffer[2] || 0xFF === buffer[2]);
ASSERT(0x00 === buffer[3] || 0xFF === buffer[3]);
ASSERT(0x00 === buffer[4] || 0xFF === buffer[4]);
ASSERT(0x00 === buffer[5] || 0xFF === buffer[5]);
ASSERT(0xC0 === buffer[6] || 0xBF === buffer[6]);
// Darwin ia32 does the other kind of NaN.
// Compiler bug. No one really cares.
ASSERT(0x7F === buffer[7] || 0xFF === buffer[7]);
Expand Down

0 comments on commit 7efc64d

Please sign in to comment.