diff options
author | Richard Braun <rbraun@sceen.net> | 2013-06-07 22:08:33 +0200 |
---|---|---|
committer | Richard Braun <rbraun@sceen.net> | 2013-06-07 22:08:33 +0200 |
commit | 599cb4429d5c667599178714158f5d2090e34ad2 (patch) | |
tree | 4d6f06c62dc8fde066020fe99cbb045bddc4c782 /test | |
parent | 47c14590225144d524841f35dcebebbebe7bfc35 (diff) |
test_rdxtree: new tests covering node creation failures
Diffstat (limited to 'test')
-rw-r--r-- | test/test_rdxtree.c | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/test/test_rdxtree.c b/test/test_rdxtree.c index 3b9b09a..9d2a1d8 100644 --- a/test/test_rdxtree.c +++ b/test/test_rdxtree.c @@ -27,6 +27,8 @@ #include <assert.h> #include <stdarg.h> +#define RDXTREE_ENABLE_NODE_CREATION_FAILURES + #include "../error.h" #include "../macros.h" #include "../rdxtree.c" @@ -848,6 +850,97 @@ test_32(void) destroy_tree(&tree); } +extern unsigned int rdxtree_fail_node_creation_threshold; +extern unsigned int rdxtree_nr_node_creations; + +static void +test_33(void) +{ + struct rdxtree tree; + struct obj *obj; + int error; + + TITLE("prepare node creation failure at 1, insert 1"); + + rdxtree_fail_node_creation_threshold = 1; + rdxtree_nr_node_creations = 0; + + rdxtree_init(&tree); + obj = obj_create(1); + error = rdxtree_insert(&tree, obj->id, obj); + assert(error == ERR_NOMEM); + obj_destroy(obj); + print_tree(&tree); +} + +static void +test_34(void) +{ + struct rdxtree tree; + struct obj *obj; + int error; + + TITLE("prepare node creation failure at 2, insert 64"); + + rdxtree_fail_node_creation_threshold = 2; + rdxtree_nr_node_creations = 0; + + rdxtree_init(&tree); + obj = obj_create(64); + error = rdxtree_insert(&tree, obj->id, obj); + assert(error == ERR_NOMEM); + obj_destroy(obj); + print_tree(&tree); +} + +static void +test_35(void) +{ + struct rdxtree tree; + struct obj *obj; + int error; + + TITLE("prepare node creation failure at 2, insert 0 and 64"); + + rdxtree_fail_node_creation_threshold = 2; + rdxtree_nr_node_creations = 0; + + rdxtree_init(&tree); + obj = obj_create(0); + error = rdxtree_insert(&tree, obj->id, obj); + assert(!error); + obj = obj_create(64); + error = rdxtree_insert(&tree, obj->id, obj); + assert(error == ERR_NOMEM); + obj_destroy(obj); + print_tree(&tree); + destroy_tree(&tree); +} + +static void +test_36(void) +{ + struct rdxtree tree; + struct obj *obj; + int error; + + TITLE("prepare node creation failure at 2, insert 1 and 64"); + + rdxtree_fail_node_creation_threshold = 2; + rdxtree_nr_node_creations = 0; + + rdxtree_init(&tree); + obj = obj_create(1); + error = rdxtree_insert(&tree, obj->id, obj); + assert(!error); + obj = obj_create(64); + error = rdxtree_insert(&tree, obj->id, obj); + assert(error == ERR_NOMEM); + obj_destroy(obj); + print_tree(&tree); + destroy_tree(&tree); +} + int main(int argc, char *argv[]) { @@ -886,5 +979,9 @@ main(int argc, char *argv[]) test_30(); test_31(); test_32(); + test_33(); + test_34(); + test_35(); + test_36(); return 0; } |