web-queue-api / test / List_tests.cpp
List_tests.cpp
Raw
#include "List.h"
#include "unit_test_framework.h"

using namespace std;

// Add your test cases here

TEST(test_empty1) {
    List<int> list;
    ASSERT_TRUE(list.empty());
}

TEST(test_empty2) {
    List<int> list;
    list.push_back(1);
    ASSERT_TRUE(!list.empty());
}

TEST(test_size1) {
    List<int> list;
    ASSERT_TRUE(list.size() == 0);
}

TEST(test_size2) {
    List<int> list;
    list.push_back(1);
    ASSERT_TRUE(list.size() == 1);
}

TEST(test_front1) {
    List<int> list;
    list.push_back(1);
    ASSERT_TRUE(list.front() == 1);
    ASSERT_TRUE(list.back() == 1);
}

TEST(test_front2) {
    List<int> list;
    list.push_back(3);
    list.push_back(2);
    list.push_back(1);
    ASSERT_TRUE(list.front() == 3);
    ASSERT_TRUE(list.back() == 1);
}

TEST(test_back1) {
    List<int> list;
    list.push_back(1);
    ASSERT_TRUE(list.back() == 1);
    ASSERT_TRUE(list.front() == 1);
}

TEST(test_back2) {
    List<int> list;
    list.push_back(1);
    list.push_back(2);
    list.push_back(3);
    list.push_back(4);
    list.push_back(5);
    ASSERT_TRUE(list.back() == 5);
    ASSERT_TRUE(list.front() == 1);
}

TEST(test_push_front1) {
    List<int> list;
    list.push_front(1);
    ASSERT_TRUE(list.front() == 1);
    ASSERT_TRUE(list.back() == 1);
}

TEST(test_push_front2) {
    List<int> list;
    list.push_front(1);
    list.push_front(2);
    list.push_front(3);
    ASSERT_TRUE(list.front() == 3);
    ASSERT_TRUE(list.back() == 1);
}

TEST(test_push_back1) {
    List<int> list;
    list.push_back(1);
    ASSERT_TRUE(list.front() == 1);
    ASSERT_TRUE(list.back() == 1);
}

TEST(test_push_back2) {
    List<int> list;
    list.push_back(1);
    list.push_back(2);
    list.push_back(3);
    ASSERT_TRUE(list.front() == 1);
    ASSERT_TRUE(list.back() == 3);
}
TEST(test_pop_front1) {
    List<int> list;
    list.push_front(1);
    list.push_front(2);
    list.push_front(3);
    list.pop_front();
    ASSERT_TRUE(list.front() == 2);
    ASSERT_TRUE(list.back() == 1);
}

TEST(test_pop_front2) {
    List<int> list;
    list.push_front(1);
    list.pop_front();
    ASSERT_TRUE(list.empty());
}

TEST(test_pop_front3) {
    List<int> list;
    list.push_front(1);
    list.push_front(2);
    list.push_front(3);
    list.pop_front();
    list.pop_front();
    list.pop_front();
    ASSERT_TRUE(list.empty());
}

TEST(test_pop_back1) {
    List<int> list;
    list.push_back(1);
    list.push_back(2);
    list.push_back(3);
    list.pop_back();
    ASSERT_TRUE(list.front() == 1);
    ASSERT_TRUE(list.back() == 2);
}

TEST(test_pop_back2) {
    List<int> list;
    list.push_back(1);
    list.pop_back();
    ASSERT_TRUE(list.empty());
}

TEST(test_clear1) {
    List<int> list;
    list.push_back(1);
    list.push_back(2);
    list.push_back(3);
    list.clear();
    ASSERT_TRUE(list.empty());
}

TEST(test_clear2) {
    List<int> list;
    list.clear();
    ASSERT_TRUE(list.empty());
}

TEST(test_List_def_ctor) {
    List<int> list;
    ASSERT_TRUE(list.size() == 0);
    ASSERT_TRUE(list.empty());
}

TEST(test_List_copy_ctor1) {
    List<int> list;
    List<int> copy(list);
    ASSERT_TRUE(copy.empty())
}

TEST(test_List_copy_ctor2) {
    List<int> list;
    list.push_back(1);
    list.push_back(2);
    List<int> copy(list);
    ASSERT_TRUE(copy.front() == 1);
    ASSERT_TRUE(copy.back() == 2);
    ASSERT_TRUE(copy.size() == 2);
}

TEST(test_List_operator_assign1) {
    List<int> list;
    list.push_back(1);
    list.push_back(2);

    List<int> copy;
    copy = list;
    ASSERT_TRUE(copy.front() == 1);
    ASSERT_TRUE(copy.back() == 2);
    ASSERT_TRUE(copy.size() == 2);
}

TEST(test_List_operator_assign2) {
    List<int> list;
    list.push_back(1);
    list.push_back(2);
    list = list;
    ASSERT_TRUE(list.front() == 1);
    ASSERT_TRUE(list.back() == 2);
    ASSERT_TRUE(list.size() == 2);
}

TEST(test_List_operator_assign3) {
    List<int> list;
    List<int> copy;
    copy = list;
    ASSERT_TRUE(copy.size() == 0);
    ASSERT_TRUE(copy.empty());
}

TEST(test_List_operator_assign4) {
    List<int> list;
    List<int> copy;
    copy.push_back(1);
    copy.push_back(2);
    copy = list;
    ASSERT_TRUE(copy.size() == 0);
    ASSERT_TRUE(copy.empty());
}

TEST(test_List_operator_assign5) {
    List<int> list;
    list.push_back(1);
    list.push_back(2);
    list.push_back(3);
    list.push_back(4);
    list.push_back(5);
    List<int> copy;
    copy.push_back(1);
    copy.push_back(2);
    copy = list;
    ASSERT_TRUE(copy.size() == 5);
    ASSERT_TRUE(copy.front() == 1);
    ASSERT_TRUE(copy.back() == 5);
}

TEST(test_i_operator_prev) {
    List<int> list;
    list.push_back(1);
    list.push_back(2);
    List<int>::Iterator i = list.begin();
    --(++i);
    ASSERT_TRUE(*i == 1);
}

TEST(test_i_operator_deref) {
    List<int> list;
    list.push_back(1);
    List<int>::Iterator i = list.begin();
    ASSERT_TRUE(*i == 1);
}

TEST(test_i_operator_next1) {
    List<int> list;
    list.push_back(1);
    list.push_back(2);

    List<int>::Iterator i = list.begin();
    ++i;
    ASSERT_TRUE(*i == 2);
}

TEST(test_i_operator_next2) {
    List<int> list;
    list.push_back(1);
    list.push_back(2);

    List<int>::Iterator i = list.begin();
    ++(++i);
    ASSERT_TRUE(i == list.end());
}


TEST(test_i_operator_equals1) {
    List<int> list;
    list.push_back(1);

    List<int>::Iterator i = list.begin();
    ++i;
    ASSERT_TRUE(i == list.end());
}

TEST(test_i_operator_equals2) {
    List<int> list;
    list.push_back(1);
    list.push_back(2);
    List<int>::Iterator i = list.begin();
    ++i;
    ASSERT_TRUE(*i == 2);
}

TEST(test_i_operator_notEquals) {
    List<int> list;
    list.push_back(1);
    list.push_back(2);

    List<int>::Iterator i = list.begin();
    ++i;
    ASSERT_TRUE(i != list.begin());
}

TEST(test_i_begin) {
    List<int> list;
    list.push_back(1);
    list.push_back(2);

    List<int>::Iterator i = list.begin();
    ASSERT_TRUE(*i == 1);
}

TEST(test_Iterator_end) {
    List<int> list;
    list.push_back(1);
    list.push_back(2);

    List<int>::Iterator i = list.begin();
    ++(++i);
    ASSERT_TRUE(i == list.end());
}

TEST(test_i_erase1) {
    List<int> list;
    list.push_back(1);
    list.push_back(2);
    list.push_back(3);
    
    List<int>::Iterator i = list.begin();
    ++i;
    list.erase(i);
    ASSERT_TRUE(list.size() == 2);
    ASSERT_TRUE(list.front() == 1);
    ASSERT_TRUE(list.back() == 3);
}

TEST(test_i_erase2) {
    List<int> list;
    list.push_back(1);
    List<int>::Iterator i = list.begin();
    list.erase(i);
    ASSERT_TRUE(list.empty());
}

TEST(test_i_erase3) {
    List<int> list;
    list.push_back(1);
    list.push_back(2);
    List<int>::Iterator i = list.begin();
    ++i;
    list.erase(i);
    ASSERT_TRUE(list.back() == 1);
}

TEST(test_i_erase4) {
    List<int> list;
    list.push_back(1);
    list.push_back(2);
    List<int>::Iterator i = list.begin();
    list.erase(i);
    ASSERT_TRUE(list.front() == 2);
}

TEST(test_i_insert1) {
    List<int> list;
    list.push_back(2);
    List<int>::Iterator i = list.begin();
    list.insert(i, 1);
    ASSERT_TRUE(list.front() == 1);
    ASSERT_TRUE(list.back() == 2);
    ASSERT_TRUE(list.size() == 2);
}

TEST(test_i_insert2) {
    List<int> list;
    List<int>::Iterator i = list.end();
    list.insert(i, 1);
    ASSERT_TRUE(list.front() == 1);
    ASSERT_TRUE(list.back() == 1);
    ASSERT_TRUE(list.size() == 1);
}

TEST(test_i_insert3) {
    List<int> list;
    list.push_back(1);
    List<int>::Iterator i = list.end();
    list.insert(i, 2);
    ASSERT_TRUE(list.front() == 1);
    ASSERT_TRUE(list.back() == 2);
    ASSERT_TRUE(list.size() == 2);
}

TEST(test_i_insert4) {
    List<int> list;
    list.push_back(1);
    list.push_back(3);
    List<int>::Iterator i = list.begin();
    ++i;
    list.insert(i, 2);
    ASSERT_TRUE(list.front() == 1);
    ASSERT_TRUE(list.back() == 3);
    ASSERT_TRUE(list.size() == 3);
}

TEST(test_i_l_iteration1) {
    int count = 0;
    List<int> list;
    list.push_back(1);
    list.push_back(2);
    list.push_back(3);
    list.push_back(4);
    list.push_back(5);
    List<int>::Iterator i;
    for (i = list.begin(); i != list.end(); ++i) {
        count++;
    }
    ASSERT_TRUE(count == 5);
}

TEST(test_i_l_iteration2) {
    int count = 0;
    List<int> list;
    List<int>::Iterator i;
    for (i = list.begin(); i != list.end(); ++i) {
        count++;
    }
    ASSERT_TRUE(count == 0);
}

TEST_MAIN()