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

Method test_hamt_stress

Lib/test/test_context.py:587–674  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

585
586 @support.requires_resource('cpu')
587 def test_hamt_stress(self):
588 COLLECTION_SIZE = 7000
589 TEST_ITERS_EVERY = 647
590 CRASH_HASH_EVERY = 97
591 CRASH_EQ_EVERY = 11
592 RUN_XTIMES = 3
593
594 for _ in range(RUN_XTIMES):
595 h = hamt()
596 d = dict()
597
598 for i in range(COLLECTION_SIZE):
599 key = KeyStr(i)
600
601 if not (i % CRASH_HASH_EVERY):
602 with HaskKeyCrasher(error_on_hash=True):
603 with self.assertRaises(HashingError):
604 h.set(key, i)
605
606 h = h.set(key, i)
607
608 if not (i % CRASH_EQ_EVERY):
609 with HaskKeyCrasher(error_on_eq=True):
610 with self.assertRaises(EqError):
611 h.get(KeyStr(i)) # really trigger __eq__
612
613 d[key] = i
614 self.assertEqual(len(d), len(h))
615
616 if not (i % TEST_ITERS_EVERY):
617 self.assertEqual(set(h.items()), set(d.items()))
618 self.assertEqual(len(h.items()), len(d.items()))
619
620 self.assertEqual(len(h), COLLECTION_SIZE)
621
622 for key in range(COLLECTION_SIZE):
623 self.assertEqual(h.get(KeyStr(key), 'not found'), key)
624
625 keys_to_delete = list(range(COLLECTION_SIZE))
626 random.shuffle(keys_to_delete)
627 for iter_i, i in enumerate(keys_to_delete):
628 key = KeyStr(i)
629
630 if not (iter_i % CRASH_HASH_EVERY):
631 with HaskKeyCrasher(error_on_hash=True):
632 with self.assertRaises(HashingError):
633 h.delete(key)
634
635 if not (iter_i % CRASH_EQ_EVERY):
636 with HaskKeyCrasher(error_on_eq=True):
637 with self.assertRaises(EqError):
638 h.delete(KeyStr(i))
639
640 h = h.delete(key)
641 self.assertEqual(h.get(key, 'not found'), 'not found')
642 del d[key]
643 self.assertEqual(len(d), len(h))
644

Callers

nothing calls this directly

Calls 15

KeyStrClass · 0.85
HaskKeyCrasherClass · 0.85
lenFunction · 0.85
setFunction · 0.85
listClass · 0.85
enumerateFunction · 0.85
strFunction · 0.85
shuffleMethod · 0.80
assertRaisesMethod · 0.45
setMethod · 0.45
getMethod · 0.45
assertEqualMethod · 0.45

Tested by

no test coverage detected