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

Method test_order_preservation

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

Source from the content-addressed store, hash-verified

2161 self.assertEqual(c.total(), 15)
2162
2163 def test_order_preservation(self):
2164 # Input order dictates items() order
2165 self.assertEqual(list(Counter('abracadabra').items()),
2166 [('a', 5), ('b', 2), ('r', 2), ('c', 1), ('d', 1)])
2167 # letters with same count: ^----------^ ^---------^
2168
2169 # Verify retention of order even when all counts are equal
2170 self.assertEqual(list(Counter('xyzpdqqdpzyx').items()),
2171 [('x', 2), ('y', 2), ('z', 2), ('p', 2), ('d', 2), ('q', 2)])
2172
2173 # Input order dictates elements() order
2174 self.assertEqual(list(Counter('abracadabra simsalabim').elements()),
2175 ['a', 'a', 'a', 'a', 'a', 'a', 'a', 'b', 'b', 'b','r',
2176 'r', 'c', 'd', ' ', 's', 's', 'i', 'i', 'm', 'm', 'l'])
2177
2178 # Math operations order first by the order encountered in the left
2179 # operand and then by the order encountered in the right operand.
2180 ps = 'aaabbcdddeefggghhijjjkkl'
2181 qs = 'abbcccdeefffhkkllllmmnno'
2182 order = {letter: i for i, letter in enumerate(dict.fromkeys(ps + qs))}
2183 def correctly_ordered(seq):
2184 'Return true if the letters occur in the expected order'
2185 positions = [order[letter] for letter in seq]
2186 return positions == sorted(positions)
2187
2188 p, q = Counter(ps), Counter(qs)
2189 self.assertTrue(correctly_ordered(+p))
2190 self.assertTrue(correctly_ordered(-p))
2191 self.assertTrue(correctly_ordered(p + q))
2192 self.assertTrue(correctly_ordered(p - q))
2193 self.assertTrue(correctly_ordered(p | q))
2194 self.assertTrue(correctly_ordered(p & q))
2195 self.assertTrue(correctly_ordered(p ^ q))
2196
2197 p, q = Counter(ps), Counter(qs)
2198 p += q
2199 self.assertTrue(correctly_ordered(p))
2200
2201 p, q = Counter(ps), Counter(qs)
2202 p -= q
2203 self.assertTrue(correctly_ordered(p))
2204
2205 p, q = Counter(ps), Counter(qs)
2206 p |= q
2207 self.assertTrue(correctly_ordered(p))
2208
2209 p, q = Counter(ps), Counter(qs)
2210 p &= q
2211 self.assertTrue(correctly_ordered(p))
2212
2213 p, q = Counter(ps), Counter(qs)
2214 p ^= q
2215 self.assertTrue(correctly_ordered(p))
2216
2217 p, q = Counter(ps), Counter(qs)
2218 p.update(q)
2219 self.assertTrue(correctly_ordered(p))
2220

Callers

nothing calls this directly

Calls 10

CounterClass · 0.90
listClass · 0.85
enumerateFunction · 0.85
elementsMethod · 0.80
assertTrueMethod · 0.80
assertEqualMethod · 0.45
itemsMethod · 0.45
fromkeysMethod · 0.45
updateMethod · 0.45
subtractMethod · 0.45

Tested by

no test coverage detected