MCPcopy Index your code
hub / github.com/RustPython/RustPython / test_basics

Method test_basics

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

Source from the content-addressed store, hash-verified

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

Callers

nothing calls this directly

Calls 14

new_childMethod · 0.95
ChainMapClass · 0.90
lenFunction · 0.85
reprFunction · 0.85
assertInMethod · 0.80
assertIsNotMethod · 0.80
evalFunction · 0.50
assertEqualMethod · 0.45
itemsMethod · 0.45
getMethod · 0.45
copyMethod · 0.45
assertIsMethod · 0.45

Tested by

no test coverage detected