Add project and module tests.

svn path=/branches/xmlbuildsystem/; revision=12801
This commit is contained in:
Casper Hornstrup
2005-01-04 21:29:09 +00:00
parent 8b3d554adb
commit 6f22300491
8 changed files with 109 additions and 11 deletions
+3 -1
View File
@@ -13,7 +13,9 @@ BASE_OBJECTS = \
OBJECTS = $(BASE_OBJECTS) rbuild.o
TESTS = tests/moduletest.o
TESTS = \
tests/moduletest.o \
tests/projecttest.o
TEST_OBJECTS = $(BASE_OBJECTS) $(TESTS) tests/alltests.o
+2 -1
View File
@@ -58,7 +58,8 @@ main ( int argc, char** argv )
}
catch (Exception& ex)
{
printf ( ex.Message.c_str() );
printf ( "%s\n",
ex.Message.c_str() );
return 1;
}
}
+19 -4
View File
@@ -14,18 +14,26 @@ protected:
void Assert(const char *message, ...);
void IsTrue(bool condition,
const char* file,
int line );
int line);
void IsFalse(bool condition,
const char* file,
int line );
int line);
void AreEqual(int expected,
int actual,
const char* file,
int line );
int line);
void AreEqual(string expected,
string actual,
const char* file,
int line);
void AreEqual(const char* expected,
string actual,
const char* file,
int line);
void AreNotEqual(int expected,
int actual,
const char* file,
int line );
int line);
private:
void Fail();
};
@@ -35,6 +43,13 @@ private:
#define ARE_EQUAL(expected,actual) AreEqual(expected,actual,__FILE__,__LINE__)
#define ARE_NOT_EQUAL(expected,actual) AreNotEqual(expected,actual,__FILE__,__LINE__)
class ProjectTest : public BaseTest
{
public:
void Run();
};
class ModuleTest : public BaseTest
{
public:
+40 -4
View File
@@ -4,7 +4,7 @@
BaseTest::BaseTest()
{
Failed = true;
Failed = false;
}
BaseTest::~BaseTest()
@@ -61,6 +61,32 @@ void BaseTest::AreEqual(int expected,
}
}
void BaseTest::AreEqual(string expected,
string actual,
const char* file,
int line)
{
if (actual != expected)
{
Assert("Expected '%s' was '%s' at %s:%d\n",
expected.c_str(),
actual.c_str(),
file,
line);
}
}
void BaseTest::AreEqual(const char* expected,
string actual,
const char* file,
int line)
{
AreEqual(string(expected),
actual,
file,
line);
}
void BaseTest::AreNotEqual(int expected,
int actual,
const char* file,
@@ -103,10 +129,19 @@ public:
GetTests(tests);
for (size_t i = 0; i < tests.size(); i++)
{
BaseTest& test = *tests[i];
test.Run();
if (test.Failed)
try
{
BaseTest& test = *tests[i];
test.Run();
if (test.Failed)
numberOfFailedTests++;
}
catch (Exception& ex)
{
printf("%s\n",
ex.Message.c_str());
numberOfFailedTests++;
}
}
if (numberOfFailedTests > 0)
@@ -119,6 +154,7 @@ public:
private:
void GetTests ( BaseTestList& tests )
{
tests.push_back(new ProjectTest());
tests.push_back(new ModuleTest());
}
};
@@ -0,0 +1,14 @@
<project name="Project">
<directory name="dir1">
<module name="module1" type="buildtool">
<file>file1.c</file>
<file>file2.c</file>
</module>
</directory>
<directory name="dir2">
<module name="module2" type="buildtool">
<file>file3.c</file>
<file>file4.c</file>
</module>
</directory>
</project>
@@ -0,0 +1,10 @@
<project name="Project">
<directory name="dir1">
<module name="module1" type="buildtool">
</module>
</directory>
<directory name="dir2">
<module name="module2" type="buildtool">
</module>
</directory>
</project>
+13 -1
View File
@@ -2,5 +2,17 @@
void ModuleTest::Run()
{
IS_TRUE(false);
string projectFilename ( "tests/data/module.xml" );
Project* project = new Project( projectFilename );
ARE_EQUAL(2, project->modules.size());
Module& module1 = *project->modules[0];
ARE_EQUAL(2, module1.files.size());
ARE_EQUAL("./dir1/file1.c", module1.files[0]->name);
ARE_EQUAL("./dir1/file2.c", module1.files[1]->name);
Module& module2 = *project->modules[1];
ARE_EQUAL(2, module2.files.size());
ARE_EQUAL("./dir2/file3.c", module2.files[0]->name);
ARE_EQUAL("./dir2/file4.c", module2.files[1]->name);
}
@@ -0,0 +1,8 @@
#include "test.h"
void ProjectTest::Run()
{
string projectFilename ( "tests/data/project.xml" );
Project* project = new Project( projectFilename );
ARE_EQUAL(2, project->modules.size());
}