Commit 262a7ad

mo khan <mo.khan@gmail.com>
2020-09-20 20:38:11
test: add test to validate rb tree with red root
1 parent 6d195cd
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;
-}
-```
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;
+}
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);
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;
 }