summaryrefslogtreecommitdiff
path: root/std/testing
diff options
context:
space:
mode:
authorJames Wright <james@jamesswright.co.uk>2019-10-30 00:23:54 +0000
committerRy Dahl <ry@tinyclouds.org>2019-10-29 20:23:54 -0400
commit64957d92efdfbb8008e51c9d501b0d6754a777b7 (patch)
treeadac23650b74a4f07e0def6be36b5ad4f98b9fe5 /std/testing
parent8f571ef166d31f44378c1b6de5f4092fcccef732 (diff)
Support for deep `Map` equality with `asserts#equal` (#3236)
Diffstat (limited to 'std/testing')
-rw-r--r--std/testing/asserts.ts13
-rw-r--r--std/testing/asserts_test.ts36
2 files changed, 49 insertions, 0 deletions
diff --git a/std/testing/asserts.ts b/std/testing/asserts.ts
index 0f33bb3d2..b242184b3 100644
--- a/std/testing/asserts.ts
+++ b/std/testing/asserts.ts
@@ -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 (
diff --git a/std/testing/asserts_test.ts b/std/testing/asserts_test.ts
index b480fe7c9..062fac8cc 100644
--- a/std/testing/asserts_test.ts
+++ b/std/testing/asserts_test.ts
@@ -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 {