def test_mixed_insert_delete(self): # This is list of the numbers 0-255 randomized but in a reproducible # fashion. numbers = range(256) numbers.sort(key=lambda x: ( str(pi ** x).replace(".", "")[x % 5:x % 5 + 4])) x = RedBlackTree() for i in numbers: x[i] = i for i in xrange(256): self.assertEqual(x[i], i) # Make sure we get proper sublists. self.assertEquals(x.keys(start=250), [250, 251, 252, 253, 254, 255]) self.assertEquals(x.keys(start=3, reverse=True), [3, 2, 1, 0]) # Delete in a different random order numbers.sort(key=lambda x: ( str(e ** x).replace(".", "")[x % 5:x % 5 + 4])) for i in numbers: self.assertTrue(i in x) del x[i] self.assertFalse(i in x) return
def test_even_insert(self): x = RedBlackTree() keys = [0] values = [0] items = [(0, 0)] x[0] = 0 for key in xrange(1, 200): x[key] = key x[-key] = -key keys = [-key] + keys + [key] values = [-key] + values + [key] items = [(-key, -key)] + items + [(key, key)] self.assertEqual(x.keys(), keys) self.assertEqual(x.values(), values) self.assertEqual(x.items(), items) self.assertEqual(x.root.key, 0) # Replace some of the keys. for key in xrange(1, 200): x[key] = key + 1 self.assertEqual(x[key], key + 1) self.assertTrue(key in x) self.assertFalse(key + 1000 in x)
def test_descending_insert(self): x = RedBlackTree() keys = [] values = [] items = [] root_keys = ([317] * 2 + [316] * 5 + [314] * 10 + [310] * 20 + [302] * 40 + [286] * 80 + [254] * 160) for key, root_key in zip(xrange(317, 0, -1), root_keys): value = -key x[key] = value keys = [key] + keys values = [value] + values items = [(key, value)] + items self.assertEqual(x.keys(), keys) self.assertEqual(x.values(), values) self.assertEqual(x.items(), items) self.assertEqual(x.root.key, root_key)
def test_ascending_insert(self): x = RedBlackTree() keys = [] values = [] items = [] root_keys = ([1] * 2 + [2] * 5 + [4] * 10 + [8] * 20 + [16] * 40 + [32] * 80 + [64] * 160) for key, root_key in zip(xrange(1, 318), root_keys): value = -key x[key] = value keys.append(key) values.append(value) items.append((key, value)) self.assertEqual(x.keys(), keys) self.assertEqual(x.values(), values) self.assertEqual(x.items(), items) self.assertEqual(x.root.key, root_key)