super_deep.js 925 Bytes
Newer Older
Takter.10's avatar
Takter.10 committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
var assert = require('assert');
var traverse = require('traverse');

exports.super_deep = function () {
    var util = require('util');
    var a0 = make();
    var a1 = make();
    assert.ok(traverse.deepEqual(a0, a1));
    
    a0.c.d.moo = true;
    assert.ok(!traverse.deepEqual(a0, a1));
    
    a1.c.d.moo = true;
    assert.ok(traverse.deepEqual(a0, a1));
    
    // TODO: this one
    //a0.c.a = a1;
    //assert.ok(!traverse.deepEqual(a0, a1));
};

function make () {
    var a = { self : 'a' };
    var b = { self : 'b' };
    var c = { self : 'c' };
    var d = { self : 'd' };
    var e = { self : 'e' };
    
    a.a = a;
    a.b = b;
    a.c = c;
    
    b.a = a;
    b.b = b;
    b.c = c;
    
    c.a = a;
    c.b = b;
    c.c = c;
    c.d = d;
    
    d.a = a;
    d.b = b;
    d.c = c;
    d.d = d;
    d.e = e;
    
    e.a = a;
    e.b = b;
    e.c = c;
    e.d = d;
    e.e = e;
    
    return a;
}