Пример #1
0
 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)
Пример #2
0
 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)