提交 64957d92 编写于 作者: J James Wright 提交者: Ry Dahl

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

上级 8f571ef1
......@@ -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 (
......
......@@ -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 {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册