const assert = require('assert')
function log(fn) {
try {
fn()
} catch (e) {
console.error('---')
console.error(fn.toString())
console.error(e)
console.error('\n')
}
}
// nan value
log(() => assert.equal(0 / 0, 0 / 0))
log(() => assert.deepEqual(0 / 0, 0 / 0))
// nan reference
const nan = 0 / 0
log(() => assert.equal(nan, nan))
log(() => assert.deepEqual(nan, nan))
// object value
log(() => assert.deepEqual({ p: nan }, { p: nan }))
// object reference
const o = { p: nan }
log(() => assert.equal(o, o))
log(() => assert.deepEqual(o, o))
---
() => assert.equal(0 / 0, 0 / 0)
AssertionError [ERR_ASSERTION]: NaN == NaN
at /Users/balupton/Projects/batches/obligations/promises/normalify/node-issue-30350.js:14:18
at log (/Users/balupton/Projects/batches/obligations/promises/normalify/node-issue-30350.js:4:3)
at Object.<anonymous> (/Users/balupton/Projects/batches/obligations/promises/normalify/node-issue-30350.js:14:1)
at Module._compile (internal/modules/cjs/loader.js:956:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:973:10)
at Module.load (internal/modules/cjs/loader.js:812:32)
at Function.Module._load (internal/modules/cjs/loader.js:724:14)
at Function.Module.runMain (internal/modules/cjs/loader.js:1025:10)
at internal/main/run_main_module.js:17:11 {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: NaN,
expected: NaN,
operator: '=='
}
---
() => assert.deepEqual(0 / 0, 0 / 0)
AssertionError [ERR_ASSERTION]: Expected values to be loosely deep-equal:
NaN
should loosely deep-equal
NaN
at /Users/balupton/Projects/batches/obligations/promises/normalify/node-issue-30350.js:15:18
at log (/Users/balupton/Projects/batches/obligations/promises/normalify/node-issue-30350.js:4:3)
at Object.<anonymous> (/Users/balupton/Projects/batches/obligations/promises/normalify/node-issue-30350.js:15:1)
at Module._compile (internal/modules/cjs/loader.js:956:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:973:10)
at Module.load (internal/modules/cjs/loader.js:812:32)
at Function.Module._load (internal/modules/cjs/loader.js:724:14)
at Function.Module.runMain (internal/modules/cjs/loader.js:1025:10)
at internal/main/run_main_module.js:17:11 {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: NaN,
expected: NaN,
operator: 'deepEqual'
}
---
() => assert.equal(nan, nan)
AssertionError [ERR_ASSERTION]: NaN == NaN
at /Users/balupton/Projects/batches/obligations/promises/normalify/node-issue-30350.js:19:18
at log (/Users/balupton/Projects/batches/obligations/promises/normalify/node-issue-30350.js:4:3)
at Object.<anonymous> (/Users/balupton/Projects/batches/obligations/promises/normalify/node-issue-30350.js:19:1)
at Module._compile (internal/modules/cjs/loader.js:956:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:973:10)
at Module.load (internal/modules/cjs/loader.js:812:32)
at Function.Module._load (internal/modules/cjs/loader.js:724:14)
at Function.Module.runMain (internal/modules/cjs/loader.js:1025:10)
at internal/main/run_main_module.js:17:11 {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: NaN,
expected: NaN,
operator: '=='
}
---
() => assert.deepEqual(nan, nan)
AssertionError [ERR_ASSERTION]: Expected values to be loosely deep-equal:
NaN
should loosely deep-equal
NaN
at /Users/balupton/Projects/batches/obligations/promises/normalify/node-issue-30350.js:20:18
at log (/Users/balupton/Projects/batches/obligations/promises/normalify/node-issue-30350.js:4:3)
at Object.<anonymous> (/Users/balupton/Projects/batches/obligations/promises/normalify/node-issue-30350.js:20:1)
at Module._compile (internal/modules/cjs/loader.js:956:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:973:10)
at Module.load (internal/modules/cjs/loader.js:812:32)
at Function.Module._load (internal/modules/cjs/loader.js:724:14)
at Function.Module.runMain (internal/modules/cjs/loader.js:1025:10)
at internal/main/run_main_module.js:17:11 {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: NaN,
expected: NaN,
operator: 'deepEqual'
}
---
() => assert.deepEqual({ p: nan }, { p: nan })
AssertionError [ERR_ASSERTION]: Expected values to be loosely deep-equal:
{
p: NaN
}
should loosely deep-equal
{
p: NaN
}
at /Users/balupton/Projects/batches/obligations/promises/normalify/node-issue-30350.js:23:18
at log (/Users/balupton/Projects/batches/obligations/promises/normalify/node-issue-30350.js:4:3)
at Object.<anonymous> (/Users/balupton/Projects/batches/obligations/promises/normalify/node-issue-30350.js:23:1)
at Module._compile (internal/modules/cjs/loader.js:956:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:973:10)
at Module.load (internal/modules/cjs/loader.js:812:32)
at Function.Module._load (internal/modules/cjs/loader.js:724:14)
at Function.Module.runMain (internal/modules/cjs/loader.js:1025:10)
at internal/main/run_main_module.js:17:11 {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: [Object],
expected: [Object],
operator: 'deepEqual'
}