def test_many_pairs(self): """Perform stress testing with 10,000 pairs.""" sl = SkipList() pairs = [] # Insert up to 10,000 unique random keys with distinct values for i in range(10000): pair = (random.randint(0, 2<<31), i) if sl.search(pair[0]) is not None: continue sl.insert(*pair) pairs.append(pair) if i % 500 == 0: skiplist.check(sl) skiplist.check(sl) random.shuffle(pairs) for pair in pairs: self.assertEqual(sl.search(pair[0]), pair[1]) random.shuffle(pairs) remove = len(pairs)//2 for i in range(0, remove): self.assertEqual(sl.remove(pairs[i][0]), pairs[i][1]) if i % 500 == 0: skiplist.check(sl) skiplist.check(sl) del pairs[:remove] for pair in pairs: self.assertEqual(sl.search(pair[0]), pair[1]) skiplist.check(sl) fanout = (1<<31) / sl.p self.assertGreater(sl.level, math.log(len(pairs), fanout)-2)
def test_clear(self): """Ensure that clear() works correctly.""" sl = SkipList() sl.insert('bar', 'baz') sl.insert('foo', 'bar') self.assertEqual(list(sl), [('bar', 'baz'), ('foo', 'bar')]) sl.clear() self.assertEqual(list(sl), []) skiplist.check(sl)