Skip to content

Commit 847a1e4

Browse files
committed
-
1 parent ac9bb19 commit 847a1e4

File tree

1 file changed

+75
-10
lines changed

1 file changed

+75
-10
lines changed

source_py3/test_python_toolbox/test_nifty_collections/test_bagging.py

Lines changed: 75 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,10 @@ def test_common(self):
4040
assert bag['a'] == 5
4141
assert bag['missing value'] == 0
4242
assert len(bag) == 5
43+
assert 'a' in bag
44+
assert 'r' in bag
45+
assert 'R' not in bag
46+
assert 'x' not in self.bag_type({'x': 0,})
4347

4448
assert set(bag.most_common()) == \
4549
set(collections.Counter(bag).most_common()) == \
@@ -213,10 +217,22 @@ def test_mutating(self):
213217
bag['a'] -= 1
214218
assert bag == self.bag_type('abracadabr')
215219

220+
bag = self.bag_type('abracadabra')
221+
bag['a'] *= 2
222+
assert bag == self.bag_type('abracadabra' + 'a' * 5)
223+
224+
bag = self.bag_type('abracadabra')
225+
bag['a'] //= 2
226+
assert bag == self.bag_type('abracdbr')
227+
216228
bag = self.bag_type('abracadabra')
217229
bag['a'] %= 2
218230
assert bag == self.bag_type('abrcdbr')
219231

232+
bag = self.bag_type('abracadabra')
233+
bag['a'] **= 2
234+
assert bag == self.bag_type('abracadabra' + 'a' * 20)
235+
220236
bag = self.bag_type('abracadabra')
221237
bag += bag
222238
assert bag == self.bag_type('abracadabra' * 2)
@@ -225,10 +241,31 @@ def test_mutating(self):
225241
bag -= bag
226242
assert bag == self.bag_type()
227243

244+
bag = self.bag_type('abracadabra')
245+
bag *= 2
246+
assert bag == self.bag_type('abracadabra' * 2)
247+
248+
bag = self.bag_type('abracadabra')
249+
bag //= 2
250+
assert bag == self.bag_type('aabr')
251+
252+
bag = self.bag_type('abracadabra')
253+
bag //= self.bag_type('aabr')
254+
assert bag == 2
255+
228256
bag = self.bag_type('abracadabra')
229257
bag %= 2
230258
assert bag == self.bag_type('acd')
231259

260+
bag = self.bag_type('abracadabra')
261+
bag %= self.bag_type('aabr')
262+
assert bag == self.bag_type('acd')
263+
264+
bag = self.bag_type('abracadabra')
265+
bag **= 2
266+
assert bag == self.bag_type('abracadabra' + 'a' * 20 + 'b' * 2 +
267+
'r' * 2)
268+
232269
bag = self.bag_type('abracadabra')
233270
bag['a'] = 7
234271
assert bag == self.bag_type('abracadabra' + 'aa')
@@ -290,33 +327,51 @@ def test_mutating(self):
290327
bag['a'] += 1
291328
with cute_testing.RaiseAssertor(TypeError):
292329
bag['a'] -= 1
330+
with cute_testing.RaiseAssertor(TypeError):
331+
bag['a'] *= 2
332+
with cute_testing.RaiseAssertor(TypeError):
333+
bag['a'] //= 2
293334
with cute_testing.RaiseAssertor(TypeError):
294335
bag['a'] %= 2
336+
with cute_testing.RaiseAssertor(TypeError):
337+
bag['a'] **= 2
295338

296339
bag += bag
297340
assert bag == bag_reference * 2
298341
assert bag is not bag_reference
299342
bag = bag_reference
300343

301-
bag -= bag
302-
assert bag == bag_reference * 2
344+
bag -= self.bag_type('ab')
345+
assert bag == bag_reference - self.bag_type('ab') == \
346+
self.bag_type('abracadar')
303347
assert bag is not bag_reference
304348
bag = bag_reference
305349

306-
bag %= bag
307-
assert bag == bag_reference * 2
350+
bag *= 3
351+
assert bag == bag_reference + bag_reference + bag_reference
308352
assert bag is not bag_reference
309353
bag = bag_reference
310354

311-
bag *= 3
355+
bag //= 2
356+
assert bag == bag_reference + bag_reference + bag_reference
357+
assert bag is not bag_reference
358+
bag = bag_reference
359+
360+
bag //=
312361
assert bag == bag_reference + bag_reference + bag_reference
313362
assert bag is not bag_reference
314363
bag = bag_reference
364+
365+
bag %= 2
366+
assert bag == bag_reference % 2 == self.bag_type('acd')
367+
assert bag is not bag_reference
368+
bag = bag_reference
369+
370+
bag %= self.bag_type('aabr')
371+
assert bag == 2
372+
assert bag is not bag_reference
373+
bag = bag_reference
315374

316-
with cute_testing.RaiseAssertor(TypeError):
317-
bag -= bag
318-
with cute_testing.RaiseAssertor(TypeError):
319-
bag %= bag
320375
with cute_testing.RaiseAssertor(TypeError):
321376
bag['a'] = 7
322377
with cute_testing.RaiseAssertor(TypeError):
@@ -345,7 +400,11 @@ def test_ordering(self):
345400
assert ordered_bag_0 <= ordered_bag_1
346401
assert ordered_bag_0 >= ordered_bag_1
347402

348-
403+
def test_reversed(self):
404+
bag = self.bag_type('abracadabra')
405+
assert tuple(reversed(self.bag)) == tuple(reversed(tuple(self.bag)))
406+
407+
349408
class BaseUnorderedBagTestCase(BaseBagTestCase):
350409

351410
def test_ordering(self):
@@ -354,6 +413,12 @@ def test_ordering(self):
354413
assert bag_0 == bag_1
355414
if issubclass(self.bag_type, collections.Hashable):
356415
assert hash(bag_0) == hash(bag_1)
416+
417+
418+
def test_reversed(self):
419+
bag = self.bag_type('abracadabra')
420+
assert set(reversed(self.bag)) == set(self.bag)
421+
357422

358423
###############################################################################
359424

0 commit comments

Comments
 (0)