| [8c5327] | 1 | /* | 
|---|
|  | 2 | * stackclassunittest.cpp | 
|---|
|  | 3 | * | 
|---|
|  | 4 | *  Created on: Oct 27, 2009 | 
|---|
|  | 5 | *      Author: heber | 
|---|
|  | 6 | */ | 
|---|
|  | 7 |  | 
|---|
|  | 8 | using namespace std; | 
|---|
|  | 9 |  | 
|---|
|  | 10 | #include <cppunit/CompilerOutputter.h> | 
|---|
|  | 11 | #include <cppunit/extensions/TestFactoryRegistry.h> | 
|---|
|  | 12 | #include <cppunit/ui/text/TestRunner.h> | 
|---|
|  | 13 |  | 
|---|
|  | 14 | #include "stackclassunittest.hpp" | 
|---|
| [e138de] | 15 | #include "log.hpp" | 
|---|
| [8c5327] | 16 |  | 
|---|
| [9b6b2f] | 17 | #ifdef HAVE_TESTRUNNER | 
|---|
|  | 18 | #include "UnitTestMain.hpp" | 
|---|
|  | 19 | #endif /*HAVE_TESTRUNNER*/ | 
|---|
|  | 20 |  | 
|---|
| [8c5327] | 21 | enum { testdimension=3 }; | 
|---|
|  | 22 |  | 
|---|
|  | 23 | /********************************************** Test classes **************************************/ | 
|---|
|  | 24 |  | 
|---|
|  | 25 | // Registers the fixture into the 'registry' | 
|---|
|  | 26 | CPPUNIT_TEST_SUITE_REGISTRATION( StackClassTest ); | 
|---|
|  | 27 |  | 
|---|
|  | 28 |  | 
|---|
|  | 29 | void StackClassTest::setUp() | 
|---|
|  | 30 | { | 
|---|
|  | 31 | Stack = new StackClass<int *>(testdimension); | 
|---|
|  | 32 | }; | 
|---|
|  | 33 |  | 
|---|
|  | 34 |  | 
|---|
|  | 35 | void StackClassTest::tearDown() | 
|---|
|  | 36 | { | 
|---|
|  | 37 | Stack->ClearStack(); | 
|---|
|  | 38 | delete(Stack); | 
|---|
| [e6fdbe] | 39 | MemoryUsageObserver::purgeInstance(); | 
|---|
|  | 40 | logger::purgeInstance(); | 
|---|
| [8c5327] | 41 | }; | 
|---|
|  | 42 |  | 
|---|
|  | 43 | /** UnitTest for StackClass<T> implementation | 
|---|
|  | 44 | * | 
|---|
|  | 45 | */ | 
|---|
|  | 46 |  | 
|---|
|  | 47 | void StackClassTest::TestImplementation() | 
|---|
|  | 48 | { | 
|---|
|  | 49 | int testfield[testdimension] = {0,1,2}; | 
|---|
| [e138de] | 50 | //Log() << Verbose(1) << "Testing the snake stack..." << endl; | 
|---|
| [8c5327] | 51 | for (int i=0;i<testdimension;i++) { | 
|---|
| [e138de] | 52 | //Log() << Verbose(2) << "Filling " << i << "th element of stack." << endl; | 
|---|
| [8c5327] | 53 | Stack->Push(&testfield[i]); | 
|---|
|  | 54 | } | 
|---|
| [e138de] | 55 | //Log() << Verbose(0) << endl; | 
|---|
| [8c5327] | 56 | //Output(out); | 
|---|
|  | 57 | CPPUNIT_ASSERT_EQUAL(true, Stack->IsFull()); | 
|---|
|  | 58 | CPPUNIT_ASSERT_EQUAL(false, Stack->IsEmpty()); | 
|---|
|  | 59 | CPPUNIT_ASSERT_EQUAL((testdimension) % (int)testdimension, Stack->ItemCount()); | 
|---|
|  | 60 |  | 
|---|
|  | 61 | CPPUNIT_ASSERT_EQUAL( true, Stack->RemoveItem(&testfield[1]) ); | 
|---|
|  | 62 | CPPUNIT_ASSERT_EQUAL((testdimension-1) % (int)testdimension, Stack->ItemCount()); | 
|---|
|  | 63 |  | 
|---|
|  | 64 | CPPUNIT_ASSERT_EQUAL( true, Stack->RemoveItem(&testfield[2]) ); | 
|---|
|  | 65 | CPPUNIT_ASSERT_EQUAL((testdimension-2) % (int)testdimension, Stack->ItemCount()); | 
|---|
|  | 66 |  | 
|---|
|  | 67 | CPPUNIT_ASSERT_EQUAL( true, Stack->RemoveItem(&testfield[0]) ); | 
|---|
|  | 68 | CPPUNIT_ASSERT_EQUAL((testdimension-3) % (int)testdimension, Stack->ItemCount()); | 
|---|
|  | 69 |  | 
|---|
|  | 70 | Stack->ClearStack(); | 
|---|
|  | 71 | CPPUNIT_ASSERT_EQUAL(false, Stack->IsFull()); | 
|---|
|  | 72 | CPPUNIT_ASSERT_EQUAL(true, Stack->IsEmpty()); | 
|---|
|  | 73 | CPPUNIT_ASSERT_EQUAL(0, Stack->ItemCount()); | 
|---|
|  | 74 | }; | 
|---|