summaryrefslogtreecommitdiff
path: root/src/03/btree_test.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/03/btree_test.c')
-rw-r--r--src/03/btree_test.c37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/03/btree_test.c b/src/03/btree_test.c
new file mode 100644
index 0000000..167bc2a
--- /dev/null
+++ b/src/03/btree_test.c
@@ -0,0 +1,37 @@
+#include "btree.h"
+#include "rb_tree.h"
+#include <cgreen/cgreen.h>
+#include <string.h>
+#include <math.h>
+
+Ensure(initialize_returns_new_btree) {
+ BTree *tree = btree_initialize(10);
+
+ assert_that(tree, is_not_equal_to(NULL));
+ assert_that(tree->data, is_equal_to(10));
+}
+
+Ensure(height_returns_height_of_tree) {
+ BTree *tree = NULL;
+
+ int n = 10;
+ for (int i = 0; i < n; ++i)
+ tree = btree_insert(tree, i);
+
+ assert_that(btree_height(tree), is_equal_to(n));
+}
+
+Ensure(tree_with_k_leaves_has_height_of_log_k) {
+ for (int k = 0; k < 500; ++k)
+ assert_that(btree_height(btree_generate(k)) >= log2(k), is_equal_to(true));
+}
+
+TestSuite *btree_tests() {
+ TestSuite *x = create_test_suite();
+
+ add_test(x, initialize_returns_new_btree);
+ add_test(x, height_returns_height_of_tree);
+ add_test(x, tree_with_k_leaves_has_height_of_log_k);
+
+ return x;
+}