deep-equal-diagnostics
Version:
Ultra-fast robust diagnostic testing for strict deep equality
184 lines (169 loc) • 5.47 kB
JavaScript
const {deepStrictEqual} = require("../deep-strict-equal.js");
const assert = require('assert')
function assertEqual(x,y)
{
try {
assert.deepStrictEqual(x,y)
return true
} catch(e) { return false }
}
function claim(b, message)
{
if(b) console.log(`\u2713 ${message} is true`)
else console.log(`\u2639 ${message} is false: should be true`)
console.log(deepStrictEqual.message)
}
console.log('-----------------------------------------------------------------');
function test_1()
{
console.log("Test 1");
// `Err #7 source${path} = source${xSeenPath} but target${path} != target${xSeenPath}`
const x = {a:{b:{c:1}}}
const y = {a:{b:{c:1}}}
x.a.b.d = x.a
y.a.b.d = x.a //{}
claim(deepStrictEqual(x,y) === assertEqual(x,y),'deepStrictEqual(x,y) === assertEqual(x,y)')
}
test_1();
console.log('-----------------------------------------------------------------');
function test_2()
{
console.log("Test 2");
// `Err #7 source${path} = source${xSeenPath} but target${path} != target${xSeenPath}`
//const x = {a:{b:{c:1}}}
//const y = {a:{b:{c:1}}}
const x = {}
x.a = {}
x.a.a = x
const y = {}
y.a = {}
y.a.a = {}
y.a.a.a = y
claim(deepStrictEqual(x,y) === assertEqual(x,y),'deepStrictEqual(x,y) === assertEqual(x,y)')
}
test_2();
console.log('-----------------------------------------------------------------');
function test_3()
{
console.log("Test 3");
// `Err #7 source${path} = source${xSeenPath} but target${path} != target${xSeenPath}`
//const x = {a:{b:{c:1}}}
//const y = {a:{b:{c:1}}}
const x = {}
x.a = {}
x.a.a = x
const y = {}
y.a = {}
y.a.a = {}
y.a.a.a = y.a
claim(deepStrictEqual(x,y) === assertEqual(x,y),'deepStrictEqual(x,y) === assertEqual(x,y)')
}
test_3();
console.log('-----------------------------------------------------------------');
function test_4()
{
console.log("Test 4");
// `Err #7 source${path} = source${xSeenPath} but target${path} != target${xSeenPath}`
const x = {}
x.a = {}
x.a.a = x
const y = {}
y.a = {}
y.a.a = {}
y.a.a.a = y.a.a
claim(deepStrictEqual(x,y) === assertEqual(x,y),'deepStrictEqual(x,y) === assertEqual(x,y)')
}
test_4();
console.log('-----------------------------------------------------------------');
function test_5()
{
console.log("Test 5");
// `Err #8 source${path} = source${xSeenPath} but target${path} = target${ySeenPath}`
const x = {a:{b:{c:+Infinity}}}
const y = {a:{b:{c:+Infinity}}}
x.a.b.d = x.a
y.a.b.d = y
claim(deepStrictEqual(x,y) === assertEqual(x,y),'deepStrictEqual(x,y) === assertEqual(x,y)')
}
test_5();
console.log('-----------------------------------------------')
function test_Circular()
{
console.log("Test test_Circular");
// `Err #7 source${path} = source${xSeenPath} but target${path} != target${xSeenPath}`
const x = {a:{b:{c:1}}}
const y = {a:{b:{c:1}}}
x.a.b.d = x
y.a.b.d = x
console.log('assertEqual(x,y) is ' + assertEqual(x,y))
claim(deepStrictEqual(x,y) === assertEqual(x,y),'deepStrictEqual(x,y) === assertEqual(x,y)')
}
test_Circular();
console.log('-----------------------------------------------')
function test_Circularb()
{
console.log("Test test_Circularb");
// `Err #7 source${path} = source${xSeenPath} but target${path} != target${xSeenPath}`
const x = {a:{b:{c:1}}}
const y = {a:{b:{c:1}}}
x.a.b.d = x
y.a.b.d = y
claim(deepStrictEqual(x,y) === assertEqual(x,y),'deepStrictEqual(x,y) === assertEqual(x,y)')
}
test_Circularb();
console.log('-----------------------------------------------')
function test_Duplicate()
{
console.log("Test test_Duplicate");
// `Err #7 source${path} = source${xSeenPath} but target${path} != target${xSeenPath}`
const x = {}
const y = {}
x.a = {}
x.a.a = {}
x.a.a.a = {}
x.b = {}
x.b.b = {}
x.b.b.b = x.a.a.a
y.a = {}
y.a.a = {}
y.a.a.a = {}
y.b = {}
y.b.b = {}
y.b.b.b = {}
claim(deepStrictEqual(x,y) === assertEqual(x,y),'deepStrictEqual(x,y) === assertEqual(x,y)')
}
test_Duplicate();
console.log('-----------------------------------------------')
function test_Circle_In_Map() {
console.log("test_Circle_In_Map");
const ax = { a: 1 }
const bx = { b: 2 }
const cx = { c: 2 }
const x = new Map()
x.set(ax, bx)
x.set(bx, ax)
const ay = { a: 1 }
const by = { b: 2 }
const cy = { c: 2 }
const y = new Map()
x.set(ax, bx)
x.set(bx, ax)
y.set(ay, by)
y.set(by, cy)
claim(deepStrictEqual(x,y) === assertEqual(x,y), 'deepStrictEqual(x,y) === assertEqual(x,y)')
}
test_Circle_In_Map();
console.log('-----------------------------------------------')
function test_Circle_In_Map_Set() {
console.log("test_Circle_In_Map_Set");
const ax = { a: 1 }
const bx = { b: 2 }
const cx = { c: 2 }
const x = { p: new Set([ax, bx, cx]), q: new Map([[cx, bx]]) }
const ay = { a: 1 }
const by = { b: 2 }
const cy = { c: 2 }
const y = { p: new Set([ay, by, cy]), q: new Map([[cy, ay]]) }
claim(deepStrictEqual(x,y) === assertEqual(x,y), 'deepStrictEqual(x,y) === assertEqual(x,y)')
}
test_Circle_In_Map_Set();