diff-scenarios.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  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. function f0() {};
  9. function f1() {};
  10. var one = { it: 'be one', changed: false, with: { nested: 'data'}, f: f1};
  11. var two = { it: 'be two', updated: true, changed: true, with: {nested: 'data', and: 'other', plus: one} };
  12. var circ = {};
  13. var other = { it: 'be other', numero: 34.29, changed: [ { it: 'is the same' }, 13.3, 'get some' ], with: {nested: 'reference', plus: circ} };
  14. 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 } });
  15. util.log(util.inspect(diff(one, two), false, 99));
  16. util.log(util.inspect(diff(two, one), false, 99));
  17. util.log(util.inspect(diff(other, circular), false, 99));
  18. var clone = extend({}, one);
  19. apply(clone, two);
  20. util.log(util.inspect(clone, false, 99));
  21. expect(eql(clone, two)).to.be(true);
  22. expect(eql(clone, one)).to.be(false);
  23. clone = extend({}, circular);
  24. apply(clone, other);
  25. util.log(util.inspect(clone, false, 99));
  26. expect(eql(clone, other)).to.be(true);
  27. expect(eql(clone, circular)).to.be(false);
  28. var array = { name: 'array two levels deep', item: { arr: ['it', { has: 'data' }]}};
  29. var arrayChange = { name: 'array change two levels deep', item: { arr: ['it', { changes: 'data' }]}};
  30. util.log(util.inspect(diff(array, arrayChange), false, 99));
  31. clone = extend({}, array);
  32. apply(clone, arrayChange);
  33. util.log(util.inspect(clone, false, 99));
  34. expect(eql(clone, arrayChange)).to.be(true);
  35. var one_prop = { one: 'property' };
  36. var d = diff(one_prop, {});
  37. expect(d.length).to.be(1);