1) vector<BaseClass> = bad juju, must use vector<BaseClass*>

2) BaseClass must have virtual dtor
3) make Run() pure virtual

svn path=/branches/xmlbuildsystem/; revision=12769
This commit is contained in:
Royce Mitchell III
2005-01-03 23:21:25 +00:00
parent 0f703e6c9b
commit 7db6de29fc
2 changed files with 22 additions and 9 deletions
+3 -1
View File
@@ -8,7 +8,8 @@ class BaseTest
public:
bool Failed;
BaseTest();
/*virtual void Run();*/
virtual ~BaseTest();
virtual void Run() = 0;
protected:
void Assert(char *message);
void IsTrue(bool condition);
@@ -24,6 +25,7 @@ private:
class ModuleTest : public BaseTest
{
public:
void Run();
};
+19 -8
View File
@@ -5,11 +5,11 @@ BaseTest::BaseTest()
{
Failed = true;
}
/*
void BaseTest::Run()
BaseTest::~BaseTest()
{
}
*/
void BaseTest::Assert(char *message)
{
printf(message);
@@ -81,6 +81,17 @@ void BaseTest::Fail()
Failed = true;
}
class BaseTestList : public vector<BaseTest*>
{
public:
~BaseTestList()
{
for ( size_t i = 0; i < size(); i++ )
{
delete (*this)[i];
}
}
};
class TestDispatcher
{
@@ -88,10 +99,10 @@ public:
void Run()
{
int numberOfFailedTests = 0;
vector<BaseTest> tests = GetTests();
BaseTestList tests = GetTests();
for (size_t i = 0; i < tests.size(); i++)
{
BaseTest& test = tests[i];
BaseTest& test = *tests[i];
/*test.Run();*/
if (test.Failed)
numberOfFailedTests++;
@@ -105,10 +116,10 @@ public:
}
private:
vector<BaseTest> GetTests()
BaseTestList GetTests()
{
vector<BaseTest> tests;
tests.push_back(ModuleTest());
BaseTestList tests;
tests.push_back(new ModuleTest());
return tests;
}
};