From 249f0cd72c50d67697a27d79423c28e07f50d521 Mon Sep 17 00:00:00 2001 From: John-David Dalton Date: Sun, 17 Jul 2016 10:16:05 -0700 Subject: [PATCH] Add `_.isEqual` test for transitive equivalence. --- test/test.js | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/test/test.js b/test/test.js index 338579b74..62bc92df9 100644 --- a/test/test.js +++ b/test/test.js @@ -9610,6 +9610,20 @@ assert.strictEqual(_.isEqual(array1, array2), false); }); + QUnit.test('should have transitive equivalence for circular references of arrays', function(assert) { + assert.expect(3); + + var array1 = [], + array2 = [array1], + array3 = [array2]; + + array1[0] = array1; + + assert.strictEqual(_.isEqual(array1, array2), true); + assert.strictEqual(_.isEqual(array2, array3), true); + assert.strictEqual(_.isEqual(array1, array3), true); + }); + QUnit.test('should compare objects with circular references', function(assert) { assert.expect(4); @@ -9638,6 +9652,20 @@ assert.strictEqual(_.isEqual(object1, object2), false); }); + QUnit.test('should have transitive equivalence for circular references of objects', function(assert) { + assert.expect(3); + + var object1 = {}, + object2 = { 'a': object1 }, + object3 = { 'a': object2 }; + + object1.a = object1; + + assert.strictEqual(_.isEqual(object1, object2), true); + assert.strictEqual(_.isEqual(object2, object3), true); + assert.strictEqual(_.isEqual(object1, object3), true); + }); + QUnit.test('should compare objects with multiple circular references', function(assert) { assert.expect(3);