// // Created by Christian Gould on 9/16/20. // #include "catch.hpp" #include "Vecty.h" #include "Stringy.h" TEST_CASE("Vector Tests" "[Vecty.h]"){ SECTION("primitive type tests for minimum functionality") { Vecty<int> vectTester; vectTester.push_back (5); REQUIRE(vectTester.getSize () == 1); vectTester.push_back (7); REQUIRE(vectTester.getSize () == 2); REQUIRE(vectTester[ 0 ] == 5); REQUIRE(vectTester[ 1 ] == 7); vectTester.push_back (10); REQUIRE(vectTester.getSize () == 3); vectTester.push_back (27); REQUIRE(vectTester.getSize () == 4); vectTester.remove (1); REQUIRE(vectTester[ 1 ] == 10); REQUIRE(vectTester.getSize () == 3); vectTester.remove (1); REQUIRE(vectTester[ 1 ] == 27); REQUIRE(vectTester.getSize () == 2); } SECTION("complex type tests for minimum functionality"){ Vecty<Stringy> VectyString; VectyString.push_back(Stringy("Hello")); REQUIRE(VectyString.getSize() == 1); VectyString.push_back(Stringy("Goodbye")); REQUIRE(VectyString.getSize() == 2); REQUIRE(VectyString[0] == "Hello"); REQUIRE(VectyString[1] == "Goodbye"); VectyString.push_back(Stringy("Yes")); REQUIRE(VectyString.getSize() == 3); VectyString.push_back((Stringy("No"))); REQUIRE(VectyString.getSize() == 4); VectyString.remove(1); REQUIRE(VectyString[1] == "Yes"); REQUIRE(VectyString.getSize() == 3); VectyString.remove(1); REQUIRE(VectyString[1] == "No"); REQUIRE(VectyString.getSize() == 2); } SECTION("Iterator functionality"){ Vecty<Stringy> okie; okie.push_back(Stringy("uno")); okie.push_back(Stringy("dos")); okie.push_back(Stringy("tres")); okie.push_back(Stringy("quattro")); okie.push_back(Stringy("cinco")); // create the iterator auto okieiter = okie.begin(); CHECK(okieiter.getPos() == 0); CHECK(*okieiter == "uno"); ++okieiter; CHECK(okieiter.getPos() == 1); CHECK(*okieiter == "dos"); ++okieiter; CHECK(okieiter.getPos() == 2); CHECK(*okieiter == "tres"); ++okieiter; CHECK(okieiter.getPos() == 3); CHECK(*okieiter == "quattro"); ++okieiter; CHECK(okieiter.getPos() == 4); CHECK(*okieiter == "cinco"); int counter = 0; okieiter = okie.begin(); while(*okieiter != *okie.end()){ counter++; ++okieiter; } CHECK(counter == 5); } SECTION("insertion sort tests"){ Vecty<int> inty; Vecty<Stringy> stry; inty.push_back(1); inty.push_back(10); inty.push_back(8); inty.push_back(3); inty.insertionSort(); CHECK(inty[0] == 1); CHECK(inty[1] == 3); CHECK(inty[2] == 8); CHECK(inty[3] == 10); stry.push_back(Stringy("AAA")); stry.push_back(Stringy("ZZZ")); stry.push_back(Stringy("BBB")); stry.push_back(Stringy("CCC")); stry.insertionSort(); CHECK(stry[0] == "AAA"); CHECK(stry[1] == "BBB"); CHECK(stry[2] == "CCC"); CHECK(stry[3] == "ZZZ"); } SECTION("remove duplicates function"){ Vecty<int> vector; Vecty<Stringy> stry; vector.push_back(2); vector.push_back(2); vector.push_back(45); vector.push_back(52); vector.push_back(45); vector.push_back(52); vector.insertionSort(); vector.remDuplicates(); CHECK(vector.getSize() == 3); CHECK(vector[0] == 2); CHECK(vector[1] == 45); CHECK(vector[2] == 52); stry.push_back(Stringy("AAA")); stry.push_back(Stringy("ZZZ")); stry.push_back(Stringy("BBB")); stry.push_back(Stringy("AAA")); stry.push_back(Stringy("ZZZ")); stry.push_back(Stringy("CCC")); stry.insertionSort(); stry.remDuplicates(); CHECK(stry.getSize() == 4); CHECK(stry[0] == "AAA"); CHECK(stry[1] == "BBB"); CHECK(stry[2] == "CCC"); CHECK(stry[3] == "ZZZ"); CHECK(stry.binarySearch("AAA", 0, 3) == 0); CHECK(stry.binarySearch("BBB", 0, 3) == 1); CHECK(stry.binarySearch("CCC", 0, 3) == 2); CHECK(stry.binarySearch("ZZZ", 0, 3) == 3); CHECK(vector.binarySearch(2, 0, vector.getSize()-1) == 0); CHECK(vector.binarySearch(45, 0, vector.getSize()-1) == 1); CHECK(vector.binarySearch(52, 0, vector.getSize()-1) == 2); } SECTION("assignment operator tests"){ Vecty<int> ints; Vecty<Stringy> strings; ints.push_back(1); ints.push_back(2); ints.push_back(3); ints.push_back(4); strings.push_back("one"); strings.push_back("two"); strings.push_back("three"); strings.push_back("four"); Vecty<int> assignInt; assignInt = ints; Vecty<Stringy> assignStr; assignStr = strings; CHECK(assignInt[0] == 1); CHECK(assignInt[1] == 2); CHECK(assignInt[2] == 3); CHECK(assignInt[3] == 4); CHECK(assignStr[0] == "one"); CHECK(assignStr[1] == "two"); CHECK(assignStr[2] == "three"); CHECK(assignStr[3] == "four"); // check that the two LinkedLists are the same CHECK(assignStr == strings); CHECK(assignInt == ints); SECTION("Find function"){ vectyIter<Stringy> iter = assignStr.begin(); CHECK(iter == assignStr.find("one")); iter++; CHECK(iter == assignStr.find("two")); ++iter; CHECK(iter == assignStr.find("three")); iter++; CHECK(iter == assignStr.find("four")); } } }