mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-09-03 04:13:31 +00:00
Add project and module tests.
svn path=/branches/xmlbuildsystem/; revision=12801
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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>
|
||||
@@ -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());
|
||||
}
|
||||
Reference in New Issue
Block a user