|
|
@@ -26,23 +26,44 @@ class TestRBTree: |
|
|
|
def test_rbtree_big(self): |
|
|
|
import random |
|
|
|
random.seed(1234) |
|
|
|
# make a set of 500 intervals |
|
|
|
|
|
|
|
# make a set of 500 intervals, inserted in order |
|
|
|
rb = RBTree() |
|
|
|
j = 500 |
|
|
|
for i in xrange(j): |
|
|
|
rb.insert(RBNode(None, i, i+1)) |
|
|
|
|
|
|
|
# show the graph |
|
|
|
rb.render_dot_live("in-order insert") |
|
|
|
|
|
|
|
# remove about half of them |
|
|
|
for i in random.sample(xrange(j),j): |
|
|
|
if random.randint(0,1): |
|
|
|
rb.delete(rb.find(i, i+1)) |
|
|
|
|
|
|
|
# show the graph |
|
|
|
rb.render_dot_live("in-order insert, random delete") |
|
|
|
|
|
|
|
# make a set of 500 intervals, inserted at random |
|
|
|
rb = RBTree() |
|
|
|
j = 500 |
|
|
|
for i in random.sample(xrange(j),j): |
|
|
|
print "inserting", i |
|
|
|
rb.insert(RBNode(None, i, i+1)) |
|
|
|
|
|
|
|
# show the graph |
|
|
|
rb.render_dot_live("after insert") |
|
|
|
rb.render_dot_live("random insert") |
|
|
|
|
|
|
|
# remove about half of them |
|
|
|
for i in random.sample(xrange(j),j): |
|
|
|
if random.randint(0,1): |
|
|
|
print "deleting", i |
|
|
|
if i == 300: |
|
|
|
rb.render_dot_live("before deleting 300") |
|
|
|
rb.delete(rb.find(i, i+1)) |
|
|
|
|
|
|
|
# show the graph |
|
|
|
rb.render_dot_live("after delete") |
|
|
|
rb.render_dot_live("random insert, random delete") |
|
|
|
|
|
|
|
# in-order insert of 250 more |
|
|
|
for i in xrange(250): |
|
|
|
rb.insert(RBNode(None, i+500, i+501)) |
|
|
|
|
|
|
|
# show the graph |
|
|
|
rb.render_dot_live("random insert, random delete, in-order insert") |