Skip to content

Commit 33c8c55

Browse files
committed
Add some tests
1 parent c4bd2e0 commit 33c8c55

File tree

2 files changed

+63
-61
lines changed

2 files changed

+63
-61
lines changed

Lib/test/mapping_tests.py

Lines changed: 60 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from test import support
55

66

7-
class BasicTestMappingProtocol(unittest.TestCase):
7+
class BasicTestImmutableMappingProtocol(unittest.TestCase):
88
# This base class can be used to check that an object conforms to the
99
# mapping protocol
1010

@@ -22,10 +22,7 @@ def _empty_mapping(self):
2222
def _full_mapping(self, data):
2323
"""Return a mapping object with the value contained in data
2424
dictionary"""
25-
x = self._empty_mapping()
26-
for key, value in data.items():
27-
x[key] = value
28-
return x
25+
return self.type2test(data)
2926

3027
def __init__(self, *args, **kw):
3128
unittest.TestCase.__init__(self, *args, **kw)
@@ -88,6 +85,64 @@ def check_iterandlist(iter, lst, ref):
8885
self.assertEqual(d.get(knownkey, knownvalue), knownvalue)
8986
self.assertNotIn(knownkey, d)
9087

88+
def test_constructor(self):
89+
self.assertEqual(self._empty_mapping(), self._empty_mapping())
90+
91+
def test_bool(self):
92+
self.assertTrue(not self._empty_mapping())
93+
self.assertTrue(self.reference)
94+
self.assertTrue(bool(self._empty_mapping()) is False)
95+
self.assertTrue(bool(self.reference) is True)
96+
97+
def test_keys(self):
98+
d = self._empty_mapping()
99+
self.assertEqual(list(d.keys()), [])
100+
d = self.reference
101+
self.assertIn(list(self.inmapping.keys())[0], d.keys())
102+
self.assertNotIn(list(self.other.keys())[0], d.keys())
103+
self.assertRaises(TypeError, d.keys, None)
104+
105+
def test_values(self):
106+
d = self._empty_mapping()
107+
self.assertEqual(list(d.values()), [])
108+
109+
self.assertRaises(TypeError, d.values, None)
110+
111+
def test_items(self):
112+
d = self._empty_mapping()
113+
self.assertEqual(list(d.items()), [])
114+
115+
self.assertRaises(TypeError, d.items, None)
116+
117+
def test_len(self):
118+
d = self._empty_mapping()
119+
self.assertEqual(len(d), 0)
120+
121+
def test_getitem(self):
122+
d = self.reference
123+
self.assertEqual(d[list(self.inmapping.keys())[0]],
124+
list(self.inmapping.values())[0])
125+
126+
self.assertRaises(TypeError, d.__getitem__)
127+
128+
# no test_fromkeys or test_copy as both os.environ and selves don't support it
129+
130+
def test_get(self):
131+
d = self._empty_mapping()
132+
self.assertTrue(d.get(list(self.other.keys())[0]) is None)
133+
self.assertEqual(d.get(list(self.other.keys())[0], 3), 3)
134+
d = self.reference
135+
self.assertTrue(d.get(list(self.other.keys())[0]) is None)
136+
self.assertEqual(d.get(list(self.other.keys())[0], 3), 3)
137+
self.assertEqual(d.get(list(self.inmapping.keys())[0]),
138+
list(self.inmapping.values())[0])
139+
self.assertEqual(d.get(list(self.inmapping.keys())[0], 3),
140+
list(self.inmapping.values())[0])
141+
self.assertRaises(TypeError, d.get)
142+
self.assertRaises(TypeError, d.get, None, None, None)
143+
144+
145+
class BasicTestMappingProtocol(BasicTestImmutableMappingProtocol):
91146
def test_write(self):
92147
# Test for write operations on mapping
93148
p = self._empty_mapping()
@@ -130,46 +185,6 @@ def test_write(self):
130185
p=self._empty_mapping()
131186
self.assertRaises(KeyError, p.popitem)
132187

133-
def test_constructor(self):
134-
self.assertEqual(self._empty_mapping(), self._empty_mapping())
135-
136-
def test_bool(self):
137-
self.assertTrue(not self._empty_mapping())
138-
self.assertTrue(self.reference)
139-
self.assertTrue(bool(self._empty_mapping()) is False)
140-
self.assertTrue(bool(self.reference) is True)
141-
142-
def test_keys(self):
143-
d = self._empty_mapping()
144-
self.assertEqual(list(d.keys()), [])
145-
d = self.reference
146-
self.assertIn(list(self.inmapping.keys())[0], d.keys())
147-
self.assertNotIn(list(self.other.keys())[0], d.keys())
148-
self.assertRaises(TypeError, d.keys, None)
149-
150-
def test_values(self):
151-
d = self._empty_mapping()
152-
self.assertEqual(list(d.values()), [])
153-
154-
self.assertRaises(TypeError, d.values, None)
155-
156-
def test_items(self):
157-
d = self._empty_mapping()
158-
self.assertEqual(list(d.items()), [])
159-
160-
self.assertRaises(TypeError, d.items, None)
161-
162-
def test_len(self):
163-
d = self._empty_mapping()
164-
self.assertEqual(len(d), 0)
165-
166-
def test_getitem(self):
167-
d = self.reference
168-
self.assertEqual(d[list(self.inmapping.keys())[0]],
169-
list(self.inmapping.values())[0])
170-
171-
self.assertRaises(TypeError, d.__getitem__)
172-
173188
def test_update(self):
174189
# mapping argument
175190
d = self._empty_mapping()
@@ -265,22 +280,6 @@ def __next__(self):
265280

266281
self.assertRaises(ValueError, d.update, [(1, 2, 3)])
267282

268-
# no test_fromkeys or test_copy as both os.environ and selves don't support it
269-
270-
def test_get(self):
271-
d = self._empty_mapping()
272-
self.assertTrue(d.get(list(self.other.keys())[0]) is None)
273-
self.assertEqual(d.get(list(self.other.keys())[0], 3), 3)
274-
d = self.reference
275-
self.assertTrue(d.get(list(self.other.keys())[0]) is None)
276-
self.assertEqual(d.get(list(self.other.keys())[0], 3), 3)
277-
self.assertEqual(d.get(list(self.inmapping.keys())[0]),
278-
list(self.inmapping.values())[0])
279-
self.assertEqual(d.get(list(self.inmapping.keys())[0], 3),
280-
list(self.inmapping.values())[0])
281-
self.assertRaises(TypeError, d.get)
282-
self.assertRaises(TypeError, d.get, None, None, None)
283-
284283
def test_setdefault(self):
285284
d = self._empty_mapping()
286285
self.assertRaises(TypeError, d.setdefault)

Lib/test/test_dict.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1664,6 +1664,9 @@ class Dict(dict):
16641664
class SubclassMappingTests(mapping_tests.BasicTestMappingProtocol):
16651665
type2test = Dict
16661666

1667+
class FrozenDictMappingTests(mapping_tests.BasicTestImmutableMappingProtocol):
1668+
type2test = frozendict
1669+
16671670

16681671
if __name__ == "__main__":
16691672
unittest.main()

0 commit comments

Comments
 (0)