14 """Tests for the metadata abstraction that's used in the asynchronous driver."""
22 """Tests for the metadata type"""
24 _DEFAULT_DATA = ((
"key1",
"value1"), (
"key2",
"value2"))
25 _MULTI_ENTRY_DATA = ((
"key1",
"value1"), (
"key1",
"other value 1"),
34 for case, args
in test_cases.items():
35 with self.subTest(case=case):
37 self.assertEqual(
len(metadata),
len(args))
40 metadata =
Metadata((
"key",
"value1"), (
"key",
"value2"),
41 (
"key2",
"other value"))
42 self.assertEqual(metadata[
"key"],
"value1")
43 self.assertEqual(metadata[
"key2"],
"other value")
44 self.assertEqual(metadata.get(
"key"),
"value1")
45 self.assertEqual(metadata.get(
"key2"),
"other value")
47 with self.assertRaises(KeyError):
48 metadata[
"key not found"]
49 self.assertIsNone(metadata.get(
"key not found"))
53 metadata.add(
"key",
"value")
54 metadata.add(
"key",
"second value")
55 metadata.add(
"key2",
"value2")
57 self.assertEqual(metadata[
"key"],
"value")
58 self.assertEqual(metadata[
"key2"],
"value2")
62 self.assertEqual(metadata.get_all(
"key1"), [
"value1",
"other value 1"])
63 self.assertEqual(metadata.get_all(
"key2"), [
"value2"])
64 self.assertEqual(metadata.get_all(
"non existing key"), [])
68 self.assertIn(
"key1", metadata)
73 metadata.add(key, value)
76 self.assertEqual(metadata, metadata2)
77 self.assertNotEqual(metadata,
"foo")
82 self.assertEqual(repr(metadata), expected)
86 override_value =
"override value"
88 metadata[
"key1"] = override_value
90 self.assertEqual(metadata[
"key1"], override_value)
91 self.assertEqual(metadata.get_all(
"key1"),
92 [override_value,
"other value 1"])
96 empty_metadata[
"key"] = override_value
98 self.assertEqual(empty_metadata[
"key"], override_value)
99 self.assertEqual(empty_metadata.get_all(
"key"), [override_value])
103 metadata.set_all(
"key", [
"value1", b
"new value 2"])
105 self.assertEqual(metadata[
"key"],
"value1")
106 self.assertEqual(metadata.get_all(
"key"), [
"value1", b
"new value 2"])
111 self.assertEqual(metadata.get(
"key1"),
"other value 1")
113 metadata.delete_all(
"key1")
114 self.assertNotIn(
"key1", metadata)
116 metadata.delete_all(
"key2")
117 self.assertEqual(
len(metadata), 0)
119 with self.assertRaises(KeyError):
120 del metadata[
"other key"]
130 for source, expected
in scenarios:
131 with self.subTest(raw_metadata=source, expected=expected):
132 self.assertEqual(expected, Metadata.from_tuple(source))
135 if __name__ ==
'__main__':
136 logging.basicConfig()
137 unittest.main(verbosity=2)