diff options
Diffstat (limited to 'src/03/avl_tree_test.c')
| -rw-r--r-- | src/03/avl_tree_test.c | 62 |
1 files changed, 54 insertions, 8 deletions
diff --git a/src/03/avl_tree_test.c b/src/03/avl_tree_test.c index 3f7a0e8..ccfcefb 100644 --- a/src/03/avl_tree_test.c +++ b/src/03/avl_tree_test.c @@ -28,6 +28,15 @@ Ensure(insert_changes_height) { assert_that(tree->left->height, is_equal_to(1)); } +Ensure(insert_creates_a_new_root) { + AVLTree *tree = avl_tree_insert(NULL, 10); + + assert_that(tree, is_not_equal_to(NULL)); + assert_that(tree->value, is_equal_to(10)); + assert_that(tree->left, is_equal_to(NULL)); + assert_that(tree->right, is_equal_to(NULL)); +} + Ensure(insert_performs_a_left_rotation) { /* (10) (20) @@ -62,15 +71,52 @@ Ensure(insert_performs_a_right_rotation) { assert_that(tree->right->value, is_equal_to(30)); } +Ensure(insert_performs_a_left_right_rotation) { +/* + (30) (20) + / / \ +(10) -> (10) (30) + \ + (20) +*/ + AVLTree *tree = avl_tree_initialize(30); + tree = avl_tree_insert(tree, 10); + tree = avl_tree_insert(tree, 20); + + assert_that(tree->value, is_equal_to(20)); + assert_that(tree->left->value, is_equal_to(10)); + assert_that(tree->right->value, is_equal_to(30)); +} + +Ensure(insert_performs_a_right_left_rotation) { +/* +(10) (20) + \ / \ + (30) --> (10) (30) + / + (20) +*/ + AVLTree *tree = avl_tree_initialize(10); + tree = avl_tree_insert(tree, 30); + tree = avl_tree_insert(tree, 20); + + assert_that(tree->value, is_equal_to(20)); + assert_that(tree->left->value, is_equal_to(10)); + assert_that(tree->right->value, is_equal_to(30)); +} + TestSuite *avl_tree_tests() { - TestSuite *suite = create_test_suite(); - add_test(suite, initialize_returns_new_tree); - add_test(suite, size_returns_zero); - add_test(suite, insert_changes_size); - add_test(suite, insert_changes_height); - add_test(suite, insert_performs_a_left_rotation); - add_test(suite, insert_performs_a_right_rotation); - return suite; + TestSuite *x = create_test_suite(); + add_test(x, initialize_returns_new_tree); + add_test(x, size_returns_zero); + add_test(x, insert_changes_size); + add_test(x, insert_changes_height); + add_test(x, insert_creates_a_new_root); + add_test(x, insert_performs_a_left_rotation); + add_test(x, insert_performs_a_right_rotation); + add_test(x, insert_performs_a_left_right_rotation); + add_test(x, insert_performs_a_right_left_rotation); + return x; } int main(int argc, char **argv) { |
