1 | var util = require('util'),
|
2 | expect = require('expect.js'),
|
3 | eql = require('deep-equal'),
|
4 | deep = require('..')
|
5 | extend = util._extend;
|
6 | diff = deep.diff,
|
7 | apply = deep.applyDiff;
|
8 |
|
9 | function f0() {};
|
10 | function f1() {};
|
11 |
|
12 | var one = { it: 'be one', changed: false, with: { nested: 'data'}, f: f1};
|
13 | var two = { it: 'be two', updated: true, changed: true, with: {nested: 'data', and: 'other', plus: one} };
|
14 | var circ = {};
|
15 | var other = { it: 'be other', numero: 34.29, changed: [ { it: 'is the same' }, 13.3, 'get some' ], with: {nested: 'reference', plus: circ} };
|
16 | var circular = extend(circ, { it: 'be circ', updated: false, changed: [ { it: 'is not same' }, 13.3, 'get some!', {extra: 'stuff'}], with: { nested: 'reference', circular: other } });
|
17 |
|
18 | util.log(util.inspect(diff(one, two), false, 99));
|
19 | util.log(util.inspect(diff(two, one), false, 99));
|
20 |
|
21 | util.log(util.inspect(diff(other, circular), false, 99));
|
22 |
|
23 | var clone = extend({}, one);
|
24 | apply(clone, two);
|
25 | util.log(util.inspect(clone, false, 99));
|
26 |
|
27 | expect(eql(clone, two)).to.be(true);
|
28 | expect(eql(clone, one)).to.be(false);
|
29 |
|
30 | clone = extend({}, circular);
|
31 | apply(clone, other);
|
32 | util.log(util.inspect(clone, false, 99));
|
33 | expect(eql(clone, other)).to.be(true);
|
34 | expect(eql(clone, circular)).to.be(false);
|
35 |
|
36 |
|
37 | var array = { name: 'array two levels deep', item: { arr: ['it', { has: 'data' }]}};
|
38 | var arrayChange = { name: 'array change two levels deep', item: { arr: ['it', { changes: 'data' }]}};
|
39 |
|
40 | util.log(util.inspect(diff(array, arrayChange), false, 99));
|
41 | clone = extend({}, array);
|
42 | apply(clone, arrayChange);
|
43 | util.log(util.inspect(clone, false, 99));
|
44 | expect(eql(clone, arrayChange)).to.be(true);
|
45 |
|
46 | var one_prop = { one: 'property' };
|
47 | var d = diff(one_prop, {});
|
48 | expect(d.length).to.be(1);
|
49 |
|