| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 05ce2c8 commit 778a56f
2 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -669,8 +669,10 @@ function setObjectEquiv(array, a, b, mode, memo) { | |||
| 669 | 669 | if (b.has(val1)) { | |
| 670 | 670 | continue; | |
| 671 | 671 | } | |
| 672 | - } else if (mode !== kLoose || b.has(val1)) { | ||
| 672 | + } else if (b.has(val1)) { | ||
| 673 | 673 | continue; | |
| 674 | + } else if (mode !== kLoose) { | ||
| 675 | + return false; | ||
| 674 | 676 | } | |
| 675 | 677 | } | |
| 676 | 678 | ||
@@ -816,11 +818,14 @@ function mapObjectEquiv(array, a, b, mode, memo) { | |||
| 816 | 818 | const extraChecks = mode === kLoose || array.length !== a.size; | |
| 817 | 819 | ||
| 818 | 820 | for (const { 0: key1, 1: item1 } of a) { | |
| 819 | - if (extraChecks && | ||
| 820 | - (typeof key1 !== 'object' || key1 === null) && | ||
| 821 | - (mode !== kLoose || | ||
| 822 | - (b.has(key1) && innerDeepEqual(item1, b.get(key1), mode, memo)))) { // Mixed mode | ||
| 823 | - continue; | ||
| 821 | + if (extraChecks && (typeof key1 !== 'object' || key1 === null)) { | ||
| 822 | + if (b.has(key1)) { | ||
| 823 | + if (mode !== kLoose || innerDeepEqual(item1, b.get(key1), mode, memo)) { | ||
| 824 | + continue; | ||
| 825 | + } | ||
| 826 | + } else if (mode !== kLoose) { | ||
| 827 | + return false; | ||
| 828 | + } | ||
| 824 | 829 | } | |
| 825 | 830 | ||
| 826 | 831 | let innerStart = start; | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -634,6 +634,21 @@ test('Handle sparse arrays', () => { | |||
| 634 | 634 | assertNotDeepOrStrict(a, b, AssertionError, { partial: 'pass' }); | |
| 635 | 635 | }); | |
| 636 | 636 | ||
| 637 | + test('Handle sets and maps with mixed keys', () => { | ||
| 638 | + // https://github.com/nodejs/node/issues/61386 | ||
| 639 | + const aSet = new Set([0, new Set([1, 2, 3]), new Set([4, 5, 6])]); | ||
| 640 | + const bSet = new Set([ | ||
| 641 | + 0, | ||
| 642 | + new Set([1, new Set([2, 3]), new Set([20, 30])]), | ||
| 643 | + new Set([4, new Set([5, 6]), new Set([50, 60])]), | ||
| 644 | + ]); | ||
| 645 | + assertNotDeepOrStrict(aSet, bSet); | ||
| 646 | + | ||
| 647 | + const aMap = new Map([[0, 'zero'], [1, 'one'], [new Set([1, 2, 3]), 'A']]); | ||
| 648 | + const bMap = new Map([[0, 'zero'], [new Set([1, 2, 3]), 'A'], [new Set([9]), 'B']]); | ||
| 649 | + assertNotDeepOrStrict(aMap, bMap); | ||
| 650 | + }); | ||
| 651 | + | ||
| 637 | 652 | test('Handle different error messages', () => { | |
| 638 | 653 | const err1 = new Error('foo1'); | |
| 639 | 654 | assertNotDeepOrStrict(err1, new Error('foo2'), assert.AssertionError); | |
| Back | FazBrowse Home | New Git URL |
0 commit comments