super_deep.js 719 B

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