From 262a7ad2a0f5457084e81b8393b0a9cda691f483 Mon Sep 17 00:00:00 2001 From: mo khan Date: Sun, 20 Sep 2020 14:38:11 -0600 Subject: test: add test to validate rb tree with red root --- src/03/01/README.md | 12 ------------ src/03/rb_tree.c | 4 ++++ src/03/rb_tree.h | 1 + src/03/rb_tree_test.c | 9 +++++++++ 4 files changed, 14 insertions(+), 12 deletions(-) (limited to 'src/03') diff --git a/src/03/01/README.md b/src/03/01/README.md index 32ada6c..1c14a7c 100644 --- a/src/03/01/README.md +++ b/src/03/01/README.md @@ -48,15 +48,3 @@ Step 6: / \ \ (10:r) (17:r) (35:r) ``` - -```c -RBTree *avl_tree_to_rb_tree(AVLTree *t) { - if (!t) - return NULL; - - RBTree *r = rb_tree_initialize_with(t->value, t->height % 2 == 0 ? black : red); - r->left = avl_tree_to_rb_tree(t->left); - r->right = avl_tree_to_rb_tree(t->right); - return r; -} -``` diff --git a/src/03/rb_tree.c b/src/03/rb_tree.c index 1b74d90..9604d4d 100644 --- a/src/03/rb_tree.c +++ b/src/03/rb_tree.c @@ -211,3 +211,7 @@ bool rb_equals(RBTree *tree, RBTree *other_tree) { && rb_equals(tree->left, other_tree->left) && rb_equals(tree->right, other_tree->right); } + +bool rb_tree_is_valid(RBTree *tree) { + return false; +} diff --git a/src/03/rb_tree.h b/src/03/rb_tree.h index c43bd61..c5d9ffa 100644 --- a/src/03/rb_tree.h +++ b/src/03/rb_tree.h @@ -17,5 +17,6 @@ RBTree *rb_tree_initialize(int value); RBTree *rb_tree_initialize_with(int value, enum Colour colour); RBTree *rb_tree_insert(RBTree *tree, int value); bool rb_equals(RBTree *tree, RBTree *other_tree); +bool rb_tree_is_valid(RBTree *tree); int rb_tree_size(RBTree *tree); void rb_tree_inspect(RBTree *tree); diff --git a/src/03/rb_tree_test.c b/src/03/rb_tree_test.c index 4f12f66..663158d 100644 --- a/src/03/rb_tree_test.c +++ b/src/03/rb_tree_test.c @@ -219,6 +219,13 @@ Ensure(equals_returns_false_when_root_and_right_subtree_are_not_equal) { assert_that(rb_equals(tree, other_tree), is_equal_to(false)); } +Ensure(is_valid_returns_false_when_root_is_red) { + RBTree *tree = rb_tree_initialize(20); + tree->colour = red; + + assert_that(rb_tree_is_valid(tree), is_equal_to(false)); +} + TestSuite *rb_tree_tests() { TestSuite *x = create_test_suite(); @@ -241,5 +248,7 @@ TestSuite *rb_tree_tests() { add_test(x, equals_returns_true_when_root_and_left_subtree_are_equal); add_test(x, equals_returns_false_when_root_and_left_subtree_are_not_equal); add_test(x, equals_returns_false_when_root_and_right_subtree_are_not_equal); + + add_test(x, is_valid_returns_false_when_root_is_red); return x; } -- cgit v1.2.3