MCPcopy Index your code
hub / github.com/python/cpython / test_basics

Method test_basics

Lib/test/test_collections.py:91–149  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

89class TestChainMap(unittest.TestCase):
90
91 def test_basics(self):
92 c = ChainMap()
93 c['a'] = 1
94 c['b'] = 2
95 d = c.new_child()
96 d['b'] = 20
97 d['c'] = 30
98 self.assertEqual(d.maps, [{'b':20, 'c':30}, {'a':1, 'b':2}]) # check internal state
99 self.assertEqual(d.items(), dict(a=1, b=20, c=30).items()) # check items/iter/getitem
100 self.assertEqual(len(d), 3) # check len
101 for key in 'abc': # check contains
102 self.assertIn(key, d)
103 for k, v in dict(a=1, b=20, c=30, z=100).items(): # check get
104 self.assertEqual(d.get(k, 100), v)
105
106 del d['b'] # unmask a value
107 self.assertEqual(d.maps, [{'c':30}, {'a':1, 'b':2}]) # check internal state
108 self.assertEqual(d.items(), dict(a=1, b=2, c=30).items()) # check items/iter/getitem
109 self.assertEqual(len(d), 3) # check len
110 for key in 'abc': # check contains
111 self.assertIn(key, d)
112 for k, v in dict(a=1, b=2, c=30, z=100).items(): # check get
113 self.assertEqual(d.get(k, 100), v)
114 self.assertIn(repr(d), [ # check repr
115 type(d).__name__ + "({'c': 30}, {'a': 1, 'b': 2})",
116 type(d).__name__ + "({'c': 30}, {'b': 2, 'a': 1})"
117 ])
118
119 for e in d.copy(), copy.copy(d): # check shallow copies
120 self.assertEqual(d, e)
121 self.assertEqual(d.maps, e.maps)
122 self.assertIsNot(d, e)
123 self.assertIsNot(d.maps[0], e.maps[0])
124 for m1, m2 in zip(d.maps[1:], e.maps[1:]):
125 self.assertIs(m1, m2)
126
127 # check deep copies
128 for proto in range(pickle.HIGHEST_PROTOCOL + 1):
129 e = pickle.loads(pickle.dumps(d, proto))
130 self.assertEqual(d, e)
131 self.assertEqual(d.maps, e.maps)
132 self.assertIsNot(d, e)
133 for m1, m2 in zip(d.maps, e.maps):
134 self.assertIsNot(m1, m2, e)
135 for e in [copy.deepcopy(d),
136 eval(repr(d))
137 ]:
138 self.assertEqual(d, e)
139 self.assertEqual(d.maps, e.maps)
140 self.assertIsNot(d, e)
141 for m1, m2 in zip(d.maps, e.maps):
142 self.assertIsNot(m1, m2, e)
143
144 f = d.new_child()
145 f['b'] = 5
146 self.assertEqual(f.maps, [{'b': 5}, {'c':30}, {'a':1, 'b':2}])
147 self.assertEqual(f.parents.maps, [{'c':30}, {'a':1, 'b':2}]) # check parents
148 self.assertEqual(f['b'], 5) # find first in chain

Callers

nothing calls this directly

Calls 11

new_childMethod · 0.95
ChainMapClass · 0.90
assertInMethod · 0.80
assertIsNotMethod · 0.80
assertEqualMethod · 0.45
itemsMethod · 0.45
getMethod · 0.45
copyMethod · 0.45
assertIsMethod · 0.45
loadsMethod · 0.45
dumpsMethod · 0.45

Tested by

no test coverage detected