Skip to content

Commit

Permalink
[Deque] Add Unit Test
Browse files Browse the repository at this point in the history
  • Loading branch information
deunlee committed May 25, 2020
1 parent 700dd49 commit 85543fb
Show file tree
Hide file tree
Showing 3 changed files with 149 additions and 0 deletions.
147 changes: 147 additions & 0 deletions UnitTest/Deque.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,147 @@
#include "CppUnitTest.h"
using namespace Microsoft::VisualStudio::CppUnitTestFramework;

#include "../Deque/Deque.h"
#include "../Deque/Deque.cpp"

TEST_CLASS(Deque) {
public:

TEST_METHOD(Basic) {
Deun::Deque d(10);

Assert::AreEqual(d.getSize(), 10U);
Assert::AreEqual(d.getCount(), 0U);
Assert::IsTrue(d.isEmpty());
Assert::IsFalse(d.isFull());

Assert::IsTrue(d.pushRear(1));
Assert::IsTrue(d.pushFront(2));
Assert::IsTrue(d.pushRear(3));

Assert::AreEqual(d.getSize(), 10U);
Assert::AreEqual(d.getCount(), 3U);
Assert::IsFalse(d.isEmpty());
Assert::IsFalse(d.isFull());

Assert::AreEqual(d.peekFront(), 2);
Assert::AreEqual(d.peekRear(), 3);
Assert::AreEqual(d.popRear(), 3);
Assert::AreEqual(d.popFront(), 2);
Assert::AreEqual(d.popRear(), 1);

Assert::AreEqual(d.getSize(), 10U);
Assert::AreEqual(d.getCount(), 0U);
Assert::IsTrue(d.isEmpty());
Assert::IsFalse(d.isFull());
}

TEST_METHOD(TooManyPush) {
Deun::Deque d(2);

Assert::IsTrue(d.pushRear(1));
Assert::IsTrue(d.pushRear(2));
Assert::IsFalse(d.pushRear(3));
Assert::AreEqual(d.popRear(), 2);
Assert::AreEqual(d.popRear(), 1);

Assert::IsTrue(d.pushFront(4));
Assert::IsTrue(d.pushFront(5));
Assert::IsFalse(d.pushFront(6));
Assert::AreEqual(d.popFront(), 5);
Assert::AreEqual(d.popFront(), 4);

Assert::IsTrue(d.pushRear(7));
Assert::IsTrue(d.pushFront(8));
Assert::IsFalse(d.pushRear(9));
Assert::IsFalse(d.pushFront(0));
Assert::AreEqual(d.peekRear(), 7);
Assert::AreEqual(d.peekFront(), 8);
}

TEST_METHOD(TooManyPop) {
Deun::Deque d(2);

Assert::IsTrue(d.pushRear(1));
Assert::IsTrue(d.pushRear(2));
Assert::AreEqual(d.popRear(), 2);
Assert::AreEqual(d.popRear(), 1);
Assert::ExpectException<Deun::DequeError>([&] { d.popRear(); });
Assert::ExpectException<Deun::DequeError>([&] { d.popFront(); });

Deun::DequeError errRear;
try {
d.popRear();
}
catch (Deun::DequeError err) {
errRear = err;
}

Deun::DequeError errFront;
try {
d.popFront();
}
catch (Deun::DequeError err) {
errFront = err;
}

if (errRear == Deun::DequeError::DEQUE_IS_EMPTY &&
errFront == Deun::DequeError::DEQUE_IS_EMPTY) {
return;
}

Assert::Fail();
}

TEST_METHOD(LikeStack) {
Deun::Deque d(4);

Assert::IsTrue(d.pushRear(1));
Assert::IsTrue(d.pushRear(2));
Assert::IsTrue(d.pushRear(3));
Assert::IsTrue(d.pushRear(4));
Assert::IsTrue(d.isFull());
Assert::AreEqual(d.popRear(), 4);
Assert::AreEqual(d.popRear(), 3);
Assert::AreEqual(d.popRear(), 2);
Assert::AreEqual(d.popRear(), 1);
Assert::IsTrue(d.isEmpty());

Assert::IsTrue(d.pushFront(5));
Assert::IsTrue(d.pushFront(6));
Assert::IsTrue(d.pushFront(7));
Assert::IsTrue(d.pushFront(8));
Assert::IsTrue(d.isFull());
Assert::AreEqual(d.popFront(), 8);
Assert::AreEqual(d.popFront(), 7);
Assert::AreEqual(d.popFront(), 6);
Assert::AreEqual(d.popFront(), 5);
Assert::IsTrue(d.isEmpty());
}

TEST_METHOD(LikeQueue) {
Deun::Deque d(4);

Assert::IsTrue(d.pushRear(1));
Assert::IsTrue(d.pushRear(2));
Assert::IsTrue(d.pushRear(3));
Assert::IsTrue(d.pushRear(4));
Assert::IsTrue(d.isFull());
Assert::AreEqual(d.popFront(), 1);
Assert::AreEqual(d.popFront(), 2);
Assert::AreEqual(d.popFront(), 3);
Assert::AreEqual(d.popFront(), 4);
Assert::IsTrue(d.isEmpty());

Assert::IsTrue(d.pushFront(5));
Assert::IsTrue(d.pushFront(6));
Assert::IsTrue(d.pushFront(7));
Assert::IsTrue(d.pushFront(8));
Assert::IsTrue(d.isFull());
Assert::AreEqual(d.popRear(), 5);
Assert::AreEqual(d.popRear(), 6);
Assert::AreEqual(d.popRear(), 7);
Assert::AreEqual(d.popRear(), 8);
Assert::IsTrue(d.isEmpty());
}
};
1 change: 1 addition & 0 deletions UnitTest/UnitTest.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,7 @@
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="Deque.cpp" />
<ClCompile Include="Queue.cpp" />
<ClCompile Include="Stack.cpp" />
</ItemGroup>
Expand Down
1 change: 1 addition & 0 deletions UnitTest/UnitTest.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,6 @@
<ItemGroup>
<ClCompile Include="Stack.cpp" />
<ClCompile Include="Queue.cpp" />
<ClCompile Include="Deque.cpp" />
</ItemGroup>
</Project>

0 comments on commit 85543fb

Please sign in to comment.