Add tests for "Map" matchers – including null keys and values (#137)

diff --git a/test/map_matchers_test.dart b/test/map_matchers_test.dart
new file mode 100644
index 0000000..a6eba79
--- /dev/null
+++ b/test/map_matchers_test.dart
@@ -0,0 +1,57 @@
+import 'package:matcher/src/map_matchers.dart';
+import 'package:test/test.dart' show test;
+
+import 'test_utils.dart';
+
+void main() {
+  test('containsValue', () {
+    shouldPass({'a': 1, 'null': null}, containsValue(1));
+    shouldPass({'a': 1, 'null': null}, containsValue(null));
+    shouldFail(
+      {'a': 1, 'null': null},
+      containsValue(2),
+      'Expected: contains value <2> '
+      "Actual: {'a': 1, 'null': null}",
+    );
+  });
+
+  test('containsPair', () {
+    shouldPass({'a': 1, 'null': null}, containsPair('a', 1));
+    shouldPass({'a': 1, 'null': null}, containsPair('null', null));
+    shouldFail(
+      {'a': 1, 'null': null},
+      containsPair('a', 2),
+      "Expected: contains pair 'a' => <2> "
+      "Actual: {'a': 1, 'null': null} "
+      "Which:  contains key 'a' but with value is <1>",
+    );
+    shouldFail(
+      {'a': 1, 'null': null},
+      containsPair('b', 1),
+      "Expected: contains pair 'b' => <1> "
+      "Actual: {'a': 1, 'null': null} "
+      "Which:  doesn't contain key 'b'",
+    );
+    shouldFail(
+      {'a': 1, 'null': null},
+      containsPair('null', 2),
+      "Expected: contains pair 'null' => <2> "
+      "Actual: {'a': 1, 'null': null} "
+      "Which:  contains key 'null' but with value is <null>",
+    );
+    shouldFail(
+      {'a': 1, 'null': null},
+      containsPair('2', null),
+      "Expected: contains pair '2' => <null> "
+      "Actual: {'a': 1, 'null': null} "
+      "Which:  doesn't contain key '2'",
+    );
+    shouldFail(
+      {'a': 1, 'null': null},
+      containsPair('2', 'b'),
+      "Expected: contains pair '2' => 'b' "
+      "Actual: {'a': 1, 'null': null} "
+      "Which:  doesn't contain key '2'",
+    );
+  });
+}