#include "BinarySearchTree.h" #include "unit_test_framework.h" TEST(test_empty1) { BinarySearchTree tree; ASSERT_TRUE(tree.empty()); } TEST(test_empty2) { BinarySearchTree tree; tree.insert(5); ASSERT_TRUE(!tree.empty()); } TEST(test_size1) { BinarySearchTree tree; ASSERT_TRUE(tree.size() == 0); } TEST(test_size2) { BinarySearchTree tree; tree.insert(5); ASSERT_TRUE(tree.size() == 1); } TEST(test_size3) { BinarySearchTree tree; tree.insert(5); tree.insert(4); tree.insert(6); ASSERT_TRUE(tree.size() == 3); } TEST(test_height1) { BinarySearchTree tree; ASSERT_TRUE(tree.height() == 0); } TEST(test_height2) { BinarySearchTree tree; tree.insert(5); ASSERT_TRUE(tree.height() == 1); } TEST(test_height3) { BinarySearchTree tree; tree.insert(5); tree.insert(4); tree.insert(3); tree.insert(2); tree.insert(1); ASSERT_TRUE(tree.height() == 5); } TEST(test_height4) { BinarySearchTree tree; tree.insert(5); tree.insert(4); tree.insert(6); ASSERT_TRUE(tree.height() == 2); } TEST(test_cpy_ctor) { BinarySearchTree tree1; tree1.insert(5); tree1.insert(4); tree1.insert(6); BinarySearchTree tree2 = BinarySearchTree(tree1); ASSERT_TRUE(tree2.height() == 2); ASSERT_TRUE(tree2.size() == 3); } TEST(test_find1) { BinarySearchTree tree; tree.insert(5); tree.insert(4); tree.insert(6); ASSERT_TRUE(*tree.find(5) == 5); } TEST(test_find2) { BinarySearchTree tree; ASSERT_TRUE(tree.find(5) == tree.end()); } TEST(test_find3) { BinarySearchTree tree; tree.insert(5); tree.insert(4); tree.insert(6); ASSERT_TRUE(tree.find(7) == tree.end()); } TEST(test_min1) { BinarySearchTree tree; tree.insert(5); tree.insert(4); tree.insert(6); ASSERT_TRUE(*tree.min_element() == 4); } TEST(test_min2) { BinarySearchTree tree; ASSERT_TRUE(tree.min_element() == tree.end()); } TEST(test_min3) { BinarySearchTree tree; tree.insert(-5); tree.insert(4); tree.insert(6); ASSERT_TRUE(*tree.min_element() == -5); } TEST(test_max1) { BinarySearchTree tree; tree.insert(5); tree.insert(4); tree.insert(6); ASSERT_TRUE(*tree.max_element() == 6); } TEST(test_max2) { BinarySearchTree tree; ASSERT_TRUE(tree.max_element() == tree.end()); } TEST(test_max3) { BinarySearchTree tree; tree.insert(5); tree.insert(4); tree.insert(-6); ASSERT_TRUE(*tree.max_element() == 5); } TEST(test_min_greater_than1) { BinarySearchTree tree; tree.insert(5); tree.insert(4); tree.insert(6); ASSERT_TRUE(*tree.min_greater_than(4) == 5); } TEST(test_min_greater_than2) { BinarySearchTree tree; tree.insert(5); tree.insert(4); tree.insert(6); ASSERT_TRUE(tree.min_greater_than(7) == tree.end()); } TEST(test_min_greater_than3) { BinarySearchTree tree; ASSERT_TRUE(tree.min_greater_than(5) == tree.end()); } TEST(test_traverse_inorder1) { BinarySearchTree tree; tree.insert(5); tree.insert(4); tree.insert(6); std::stringstream strstrm; tree.traverse_inorder(strstrm); ASSERT_TRUE(strstrm.str() == "4 5 6 "); } TEST(test_traverse_inorder2) { BinarySearchTree tree; std::stringstream strstrm; tree.traverse_inorder(strstrm); ASSERT_TRUE(strstrm.str() == ""); } TEST(test_traverse_preorder1) { BinarySearchTree tree; tree.insert(5); tree.insert(4); tree.insert(6); std::stringstream strstrm; tree.traverse_preorder(strstrm); ASSERT_TRUE(strstrm.str() == "5 4 6 "); } TEST(test_traverse_preorder2) { BinarySearchTree tree; std::stringstream strstrm; tree.traverse_preorder(strstrm); ASSERT_TRUE(strstrm.str() == ""); } TEST(test_check_invariant1) { BinarySearchTree tree; tree.insert(5); tree.insert(4); tree.insert(6); ASSERT_TRUE(tree.check_sorting_invariant()); } TEST(test_check_invariant2) { BinarySearchTree tree; ASSERT_TRUE(tree.check_sorting_invariant()); } TEST(test_check_invariant3) { BinarySearchTree tree; tree.insert(1); tree.insert(0); *tree.begin() = 2; ASSERT_FALSE(tree.check_sorting_invariant()); } TEST(test_check_invariant4) { BinarySearchTree tree; tree.insert(9); tree.insert(3); tree.insert(2); *tree.find(2) = 21; ASSERT_FALSE(tree.check_sorting_invariant()); } TEST(test_check_invariant5) { BinarySearchTree tree; tree.insert(4); tree.insert(2); tree.insert(1); tree.insert(3); tree.insert(7); *tree.find(3) = 5; ASSERT_FALSE(tree.check_sorting_invariant()); } TEST(test_check_invariant6) { BinarySearchTree tree; tree.insert(1); tree.insert(0); ASSERT_TRUE(tree.check_sorting_invariant()); } TEST(test_check_invariant7) { BinarySearchTree tree; tree.insert(1); ASSERT_TRUE(tree.check_sorting_invariant()); } TEST_MAIN()