super_deep.js 925 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. var assert = require('assert');
  2. var traverse = require('traverse');
  3. exports.super_deep = function () {
  4. var util = require('util');
  5. var a0 = make();
  6. var a1 = make();
  7. assert.ok(traverse.deepEqual(a0, a1));
  8. a0.c.d.moo = true;
  9. assert.ok(!traverse.deepEqual(a0, a1));
  10. a1.c.d.moo = true;
  11. assert.ok(traverse.deepEqual(a0, a1));
  12. // TODO: this one
  13. //a0.c.a = a1;
  14. //assert.ok(!traverse.deepEqual(a0, a1));
  15. };
  16. function make () {
  17. var a = { self : 'a' };
  18. var b = { self : 'b' };
  19. var c = { self : 'c' };
  20. var d = { self : 'd' };
  21. var e = { self : 'e' };
  22. a.a = a;
  23. a.b = b;
  24. a.c = c;
  25. b.a = a;
  26. b.b = b;
  27. b.c = c;
  28. c.a = a;
  29. c.b = b;
  30. c.c = c;
  31. c.d = d;
  32. d.a = a;
  33. d.b = b;
  34. d.c = c;
  35. d.d = d;
  36. d.e = e;
  37. e.a = a;
  38. e.b = b;
  39. e.c = c;
  40. e.d = d;
  41. e.e = e;
  42. return a;
  43. }