1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-12-28 01:59:06 -05:00

Support for deep Map equality with asserts#equal (#3236)

This commit is contained in:
James Wright 2019-10-30 00:23:54 +00:00 committed by Ry Dahl
parent 8f571ef166
commit 64957d92ef
2 changed files with 49 additions and 0 deletions

View file

@ -81,6 +81,19 @@ export function equal(c: unknown, d: unknown): boolean {
}
return true;
}
if (a && b && a instanceof Map && b instanceof Map) {
if (a.size !== b.size) {
return false;
}
for (const [key, value] of a) {
if (!compare(value, b.get(key))) {
return false;
}
}
return true;
}
// Have to render RegExp & Date for string comparison
// unless it's mistreated as object
if (

View file

@ -47,6 +47,42 @@ test(function testingEqual(): void {
assert(!equal(new Set([1, 2]), new Set([3, 2, 1])));
assert(!equal(new Set([1, 2, 3]), new Set([4, 5, 6])));
assert(equal(new Set("denosaurus"), new Set("denosaurussss")));
assert(equal(new Map(), new Map()));
assert(
equal(
new Map([["foo", "bar"], ["baz", "baz"]]),
new Map([["foo", "bar"], ["baz", "baz"]])
)
);
assert(
equal(
new Map([["foo", new Map([["bar", "baz"]])]]),
new Map([["foo", new Map([["bar", "baz"]])]])
)
);
assert(
equal(
new Map([["foo", { bar: "baz" }]]),
new Map([["foo", { bar: "baz" }]])
)
);
assert(
equal(
new Map([["foo", "bar"], ["baz", "qux"]]),
new Map([["baz", "qux"], ["foo", "bar"]])
)
);
assert(equal(new Map([["foo", ["bar"]]]), new Map([["foo", ["bar"]]])));
assert(!equal(new Map([["foo", "bar"]]), new Map([["bar", "baz"]])));
assert(
!equal(new Map([["foo", "bar"]]), new Map([["foo", "bar"], ["bar", "baz"]]))
);
assert(
!equal(
new Map([["foo", new Map([["bar", "baz"]])]]),
new Map([["foo", new Map([["bar", "qux"]])]])
)
);
});
test(function testingNotEquals(): void {