Skip to content

Commit 841f6f5

Browse files
authored
Merge pull request #21 from meeber/fix-circular
fix: treat circular objects and sets as equal
2 parents 617b392 + b26ec76 commit 841f6f5

3 files changed

Lines changed: 7 additions & 7 deletions

File tree

index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -178,8 +178,8 @@ function extensiveDeepEqual(leftHandOperand, rightHandOperand, options) {
178178
}
179179

180180
// Temporarily set the operands in the memoize object to prevent blowing the stack
181-
memoizeSet(leftHandOperand, rightHandOperand, options.memoize, false);
182-
memoizeSet(rightHandOperand, leftHandOperand, options.memoize, false);
181+
memoizeSet(leftHandOperand, rightHandOperand, options.memoize, true);
182+
memoizeSet(rightHandOperand, leftHandOperand, options.memoize, true);
183183

184184
var result = extensiveDeepEqualByType(leftHandOperand, rightHandOperand, leftHandType, options);
185185
memoizeSet(leftHandOperand, rightHandOperand, options.memoize, result);

test/index.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -297,13 +297,13 @@ describe('Generic', function () {
297297
assert(eql({ foo: 'bar' }, { bar: 'baz' }) === false, 'eql({ foo: "bar" }, { foo: "baz" }) === false');
298298
});
299299

300-
it('returns false with recursive objects of differing values', function () {
300+
it('returns true with circular objects', function () {
301301
var objectA = { foo: 1 };
302302
var objectB = { foo: 1 };
303303
objectA.bar = objectB;
304304
objectB.bar = objectA;
305-
assert(eql(objectA, objectB) === false,
306-
'eql({ foo: 1, bar: -> }, { foo: 1, bar: <- }) === false');
305+
assert(eql(objectA, objectB) === true,
306+
'eql({ foo: 1, bar: -> }, { foo: 1, bar: <- }) === true');
307307
});
308308

309309
});

test/new-ecmascript-types.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -231,12 +231,12 @@ describe('ES2015 Specific', function () {
231231
assert(eql(setA, setB) === false, 'eql(Set { "a", "b", "c" }, Set { "d", "e", "f" }) === false');
232232
});
233233

234-
it('returns false for Sets with different circular references', function () {
234+
it('returns true for circular Sets', function () {
235235
var setA = new Set();
236236
var setB = new Set();
237237
setA.add(setB);
238238
setB.add(setA);
239-
assert(eql(setA, setB) === false, 'eql(Set { -> }, Set { <- }) === false');
239+
assert(eql(setA, setB) === true, 'eql(Set { -> }, Set { <- }) === true');
240240
});
241241

242242
});

0 commit comments

Comments
 (0)