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