From: Rusty Russell Date: Mon, 10 Jan 2011 05:55:48 +0000 (+1030) Subject: rbtree: vary insert and delete orders in test X-Git-Url: http://git.ozlabs.org/?p=ccan;a=commitdiff_plain;h=6a13cea6a9055092f52dec6f74c09d99d673dd0e;ds=sidebyside rbtree: vary insert and delete orders in test This covers more code than simply doing an ordered delete/insert. --- diff --git a/ccan/rbtree/test/run-many.c b/ccan/rbtree/test/run-many.c index ff32f4f1..a0234030 100644 --- a/ccan/rbtree/test/run-many.c +++ b/ccan/rbtree/test/run-many.c @@ -24,20 +24,27 @@ static bool lookup_all(trbt_tree_t *rb, bool exist) return true; } +static bool add_one(trbt_tree_t *rb, bool exist, unsigned int i) +{ + int *p = trbt_insert32(rb, i, talloc_memdup(rb, &i, sizeof(i))); + if (p) { + if (!exist) + return false; + if (*p != i) + return false; + } else + if (exist) + return false; + return true; +} + static bool insert_all(trbt_tree_t *rb, bool exist) { unsigned int i; for (i = 0; i < NUM_ELEMS; i++) { - int *p = trbt_insert32(rb, i, talloc_memdup(rb, &i, sizeof(i))); - if (p) { - if (!exist) - return false; - if (*p != i) - return false; - } else - if (exist) - return false; + if (!add_one(rb, exist, i)) + return false; } return true; } @@ -46,7 +53,12 @@ static void delete_all(trbt_tree_t *rb) { unsigned int i; - for (i = 0; i < NUM_ELEMS; i++) { + /* Don't delete them in the obvious order. */ + for (i = 0; i < NUM_ELEMS / 2; i++) { + trbt_delete32(rb, i); + } + + for (i = NUM_ELEMS-1; i >= NUM_ELEMS / 2; i--) { trbt_delete32(rb, i); } }