Post-classifier-using-Machine-Learning / src / BinarySearchTree_tests.cpp
BinarySearchTree_tests.cpp
Raw
#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()