Last active
November 17, 2017 11:23
-
-
Save parodot/6bd1beb76c855e0244feab7ba1b4fa66 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const fe = require('fast-deep-equal'); | |
const ne = require('nano-equal'); | |
const de = require('deep-equal'); | |
const assert = require('assert'); | |
let oa = { 'a': 1, 'b': [1, { 'c': 'd' }], e: { 'a': [1, 2, '2'] } }; | |
let ob = { 'a': 1, 'b': [1, { 'c': 'd' }], e: { 'a': [1, 2, '2'] } }; | |
const eq = 'equal'; | |
const neq = 'not equal'; | |
function adeq(a, b) { | |
try { | |
assert.deepEqual(a, b); | |
return true; | |
} catch (e) { | |
return false; | |
} | |
} | |
function adseq(a, b) { | |
try { | |
assert.deepStrictEqual(a, b); | |
return true; | |
} catch (e) { | |
return false; | |
} | |
} | |
const j = JSON.stringify; | |
const p = JSON.parse; | |
function testAll(a, b, testid) { | |
console.log(testid); | |
// console.log(`osrc ${j(oa)}`); | |
// console.log(`odest ${j(ob)}`); | |
console.log(`src ${j(a)}`); | |
console.log(`dest ${j(b)}`); | |
console.log(`assert.deepEqual : ${adeq(a, b) ? eq : neq}`); | |
console.log(`assert.deepStrictEqual : ${adseq(a, b) ? eq : neq}`); | |
console.log(`deep-equal : ${de(a, b) ? eq : neq}`); | |
console.log(`nano-equal : ${ne(a, b) ? eq : neq}`); | |
console.log(`fast-equal : ${fe(a, b) ? eq : neq}`); | |
} | |
let ta = {}, tb = {}; | |
ta = p(j(oa)) | |
tb = p(j(ob)) | |
testAll(ta, tb, 'Before Change'); | |
delete ta; delete tb; | |
ta = {}, tb = {}; | |
console.log('Change tb.b.d = 1; // this is valid js, though b is an array'); | |
ta = p(j(oa)) | |
tb = p(j(ob)) | |
tb.b.d = 1; | |
testAll(ta, tb, 'After Change'); | |
delete ta; delete tb; | |
ta = {}, tb = {}; | |
console.log('Change tb.b[1].d = 1;'); | |
ta = p(j(oa)) | |
tb = p(j(ob)) | |
tb.b[1].c = 1; | |
testAll(ta, tb, 'After Change'); | |
delete ta; delete tb; | |
ta = {}, tb = {}; | |
console.log('Change tb.b[1].d = 1;'); | |
ta = p(j(oa)) | |
tb = p(j(ob)) | |
tb.b[1].d = 1; | |
testAll(ta, tb, 'After Change'); | |
delete ta; delete tb; | |
ta = {}, tb = {}; | |
console.log('Change tb.b[1].d = 1;'); | |
ta = p(j(oa)) | |
tb = p(j(ob)) | |
tb.b[1].d = 1; | |
testAll(ta, tb, 'After Change'); | |
delete ta; delete tb; | |
ta = {}, tb = {}; | |
console.log('Change tb.b[1].d = 1;'); | |
ta = p(j(oa)) | |
tb = p(j(ob)) | |
tb.b[1].d = 11; | |
testAll(ta, tb, 'After Change'); | |
delete ta; delete tb; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment