Skip to content

Commit

Permalink
[Test] Add Unit Test for Queue
Browse files Browse the repository at this point in the history
  • Loading branch information
deunlee committed May 24, 2020
1 parent 75ed2b5 commit 4c12ac1
Show file tree
Hide file tree
Showing 7 changed files with 257 additions and 100 deletions.
28 changes: 19 additions & 9 deletions Data-Structure.sln
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@ VisualStudioVersion = 15.0.28010.2046
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Stack", "Stack\Stack.vcxproj", "{7630A810-5B5B-4B05-985E-E411F8E05429}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "StackTest", "StackTest\StackTest.vcxproj", "{28CD51F6-9762-4773-9314-F136E0755B1C}"
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Queue", "Queue\Queue.vcxproj", "{C7617599-24A5-4791-A634-5E6E16F4AD9E}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "UnitTest", "UnitTest\UnitTest.vcxproj", "{A5830C9D-CF4D-471F-9F1E-F33F2EEF7378}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Expand All @@ -23,14 +25,22 @@ Global
{7630A810-5B5B-4B05-985E-E411F8E05429}.Release|x64.Build.0 = Release|x64
{7630A810-5B5B-4B05-985E-E411F8E05429}.Release|x86.ActiveCfg = Release|Win32
{7630A810-5B5B-4B05-985E-E411F8E05429}.Release|x86.Build.0 = Release|Win32
{28CD51F6-9762-4773-9314-F136E0755B1C}.Debug|x64.ActiveCfg = Debug|x64
{28CD51F6-9762-4773-9314-F136E0755B1C}.Debug|x64.Build.0 = Debug|x64
{28CD51F6-9762-4773-9314-F136E0755B1C}.Debug|x86.ActiveCfg = Debug|Win32
{28CD51F6-9762-4773-9314-F136E0755B1C}.Debug|x86.Build.0 = Debug|Win32
{28CD51F6-9762-4773-9314-F136E0755B1C}.Release|x64.ActiveCfg = Release|x64
{28CD51F6-9762-4773-9314-F136E0755B1C}.Release|x64.Build.0 = Release|x64
{28CD51F6-9762-4773-9314-F136E0755B1C}.Release|x86.ActiveCfg = Release|Win32
{28CD51F6-9762-4773-9314-F136E0755B1C}.Release|x86.Build.0 = Release|Win32
{C7617599-24A5-4791-A634-5E6E16F4AD9E}.Debug|x64.ActiveCfg = Debug|x64
{C7617599-24A5-4791-A634-5E6E16F4AD9E}.Debug|x64.Build.0 = Debug|x64
{C7617599-24A5-4791-A634-5E6E16F4AD9E}.Debug|x86.ActiveCfg = Debug|Win32
{C7617599-24A5-4791-A634-5E6E16F4AD9E}.Debug|x86.Build.0 = Debug|Win32
{C7617599-24A5-4791-A634-5E6E16F4AD9E}.Release|x64.ActiveCfg = Release|x64
{C7617599-24A5-4791-A634-5E6E16F4AD9E}.Release|x64.Build.0 = Release|x64
{C7617599-24A5-4791-A634-5E6E16F4AD9E}.Release|x86.ActiveCfg = Release|Win32
{C7617599-24A5-4791-A634-5E6E16F4AD9E}.Release|x86.Build.0 = Release|Win32
{A5830C9D-CF4D-471F-9F1E-F33F2EEF7378}.Debug|x64.ActiveCfg = Debug|x64
{A5830C9D-CF4D-471F-9F1E-F33F2EEF7378}.Debug|x64.Build.0 = Debug|x64
{A5830C9D-CF4D-471F-9F1E-F33F2EEF7378}.Debug|x86.ActiveCfg = Debug|Win32
{A5830C9D-CF4D-471F-9F1E-F33F2EEF7378}.Debug|x86.Build.0 = Debug|Win32
{A5830C9D-CF4D-471F-9F1E-F33F2EEF7378}.Release|x64.ActiveCfg = Release|x64
{A5830C9D-CF4D-471F-9F1E-F33F2EEF7378}.Release|x64.Build.0 = Release|x64
{A5830C9D-CF4D-471F-9F1E-F33F2EEF7378}.Release|x86.ActiveCfg = Release|Win32
{A5830C9D-CF4D-471F-9F1E-F33F2EEF7378}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down
87 changes: 0 additions & 87 deletions StackTest/StackTest.cpp

This file was deleted.

116 changes: 116 additions & 0 deletions UnitTest/Queue.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
#include "CppUnitTest.h"
using namespace Microsoft::VisualStudio::CppUnitTestFramework;

#include "../Queue/Queue.h"
#include "../Queue/Queue.cpp"

TEST_CLASS(Queue) {
public:

TEST_METHOD(Basic) {
Deun::Queue q(10);

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

Assert::IsTrue(q.enqueue(1));
Assert::IsTrue(q.enqueue(2));
Assert::IsTrue(q.enqueue(3));

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

Assert::AreEqual(q.dequeue(), 1);
Assert::AreEqual(q.dequeue(), 2);
Assert::AreEqual(q.dequeue(), 3);

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

TEST_METHOD(TooManyEnqueue) {
Deun::Queue q(2);

Assert::IsTrue(q.enqueue(1));
Assert::IsTrue(q.enqueue(2));

Assert::IsFalse(q.enqueue(3));
}

TEST_METHOD(TooManyDequeue) {
Deun::Queue q(2);

Assert::IsTrue(q.enqueue(1));
Assert::IsTrue(q.enqueue(2));
Assert::AreEqual(q.dequeue(), 1);
Assert::AreEqual(q.dequeue(), 2);

Assert::ExpectException<Deun::QueueError>([&] { q.dequeue(); });

try {
q.dequeue();
}
catch (Deun::QueueError err) {
if (err == Deun::QueueError::QUEUE_IS_EMPTY) {
return;
}
}

Assert::Fail();
}

TEST_METHOD(Peek) {
Deun::Queue q(2);

Assert::IsTrue(q.enqueue(1));
Assert::IsTrue(q.enqueue(2));

Assert::AreEqual(q.peek(), 1);
Assert::AreEqual(q.dequeue(), 1);
Assert::AreEqual(q.peek(), 2);
Assert::AreEqual(q.dequeue(), 2);

Assert::ExpectException<Deun::QueueError>([&] { q.peek(); });
}

TEST_METHOD(Cycle) {
Deun::Queue q(3);

for (int i = 0; i < 10; i++) {
Assert::IsTrue(q.enqueue(1));
Assert::IsTrue(q.enqueue(2));
Assert::IsTrue(q.enqueue(3));
Assert::AreEqual(q.getCount(), 3U);
Assert::IsFalse(q.isEmpty());
Assert::IsTrue(q.isFull());
Assert::AreEqual(q.dequeue(), 1);
Assert::AreEqual(q.dequeue(), 2);
Assert::AreEqual(q.dequeue(), 3);
Assert::AreEqual(q.getCount(), 0U);

Assert::IsTrue(q.enqueue(4));
Assert::AreEqual(q.getCount(), 1U);
Assert::AreEqual(q.peek(), 4);
Assert::IsTrue(q.enqueue(5));
Assert::AreEqual(q.getCount(), 2U);
Assert::AreEqual(q.dequeue(), 4);
Assert::IsTrue(q.enqueue(6));
Assert::AreEqual(q.getCount(), 2U);
Assert::AreEqual(q.dequeue(), 5);
Assert::IsTrue(q.enqueue(7));
Assert::AreEqual(q.dequeue(), 6);
Assert::AreEqual(q.getCount(), 1U);
Assert::AreEqual(q.dequeue(), 7);
Assert::IsTrue(q.enqueue(8));
Assert::AreEqual(q.dequeue(), 8);
Assert::IsTrue(q.isEmpty());
Assert::IsFalse(q.isFull());
}
}
};
116 changes: 116 additions & 0 deletions UnitTest/Stack.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
#include "CppUnitTest.h"
using namespace Microsoft::VisualStudio::CppUnitTestFramework;

#include "../Stack/Stack.h"
#include "../Stack/Stack.cpp"

TEST_CLASS(Stack) {
public:

TEST_METHOD(Basic) {
Deun::Stack s(10);

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

Assert::IsTrue(s.push(1));
Assert::IsTrue(s.push(2));
Assert::IsTrue(s.push(3));

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

Assert::AreEqual(s.pop(), 3);
Assert::AreEqual(s.pop(), 2);
Assert::AreEqual(s.pop(), 1);

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

TEST_METHOD(TooManyPush) {
Deun::Stack s(2);

Assert::IsTrue(s.push(1));
Assert::IsTrue(s.push(2));

Assert::IsFalse(s.push(3));
}

TEST_METHOD(TooManyPop) {
Deun::Stack s(2);

Assert::IsTrue(s.push(1));
Assert::IsTrue(s.push(2));
Assert::AreEqual(s.pop(), 2);
Assert::AreEqual(s.pop(), 1);

Assert::ExpectException<Deun::StackError>([&] { s.pop(); });

try {
s.pop();
}
catch (Deun::StackError err) {
if (err == Deun::StackError::STACK_IS_EMPTY) {
return;
}
}

Assert::Fail();
}

TEST_METHOD(Peek) {
Deun::Stack s(2);

Assert::IsTrue(s.push(1));
Assert::IsTrue(s.push(2));

Assert::AreEqual(s.peek(), 2);
Assert::AreEqual(s.pop(), 2);
Assert::AreEqual(s.peek(), 1);
Assert::AreEqual(s.pop(), 1);

Assert::ExpectException<Deun::StackError>([&] { s.peek(); });
}

TEST_METHOD(Cycle) {
Deun::Stack s(3);

for (int i = 0; i < 10; i++) {
Assert::IsTrue(s.push(1));
Assert::IsTrue(s.push(2));
Assert::IsTrue(s.push(3));
Assert::AreEqual(s.getCount(), 3U);
Assert::IsFalse(s.isEmpty());
Assert::IsTrue(s.isFull());
Assert::AreEqual(s.pop(), 3);
Assert::AreEqual(s.pop(), 2);
Assert::AreEqual(s.pop(), 1);
Assert::AreEqual(s.getCount(), 0U);

Assert::IsTrue(s.push(4));
Assert::AreEqual(s.getCount(), 1U);
Assert::AreEqual(s.peek(), 4);
Assert::IsTrue(s.push(5));
Assert::AreEqual(s.getCount(), 2U);
Assert::AreEqual(s.pop(), 5);
Assert::IsTrue(s.push(6));
Assert::AreEqual(s.getCount(), 2U);
Assert::AreEqual(s.pop(), 6);
Assert::IsTrue(s.push(7));
Assert::AreEqual(s.pop(), 7);
Assert::AreEqual(s.getCount(), 1U);
Assert::AreEqual(s.pop(), 4);
Assert::IsTrue(s.push(8));
Assert::AreEqual(s.pop(), 8);
Assert::IsTrue(s.isEmpty());
Assert::IsFalse(s.isFull());
}
}
};
7 changes: 4 additions & 3 deletions StackTest/StackTest.vcxproj → UnitTest/UnitTest.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@
</ItemGroup>
<PropertyGroup Label="Globals">
<VCProjectVersion>15.0</VCProjectVersion>
<ProjectGuid>{28CD51F6-9762-4773-9314-F136E0755B1C}</ProjectGuid>
<ProjectGuid>{A5830C9D-CF4D-471F-9F1E-F33F2EEF7378}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>StackTest</RootNamespace>
<RootNamespace>UnitTest</RootNamespace>
<WindowsTargetPlatformVersion>10.0.10240.0</WindowsTargetPlatformVersion>
<ProjectSubType>NativeUnitTestProject</ProjectSubType>
</PropertyGroup>
Expand Down Expand Up @@ -152,7 +152,8 @@
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="StackTest.cpp" />
<ClCompile Include="Queue.cpp" />
<ClCompile Include="Stack.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http:https://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="StackTest.cpp" />
<ClCompile Include="Stack.cpp" />
<ClCompile Include="Queue.cpp" />
</ItemGroup>
</Project>
File renamed without changes.

0 comments on commit 4c12ac1

Please sign in to comment.