119 lines
2.7 KiB
C++
119 lines
2.7 KiB
C++
|
|
#ifndef CPPUNIT_TESTTEST_H
|
|
#define CPPUNIT_TESTTEST_H
|
|
|
|
#ifndef CPPUNIT_TESTCASE_H
|
|
#include "TestCase.h"
|
|
#endif
|
|
|
|
#ifndef CPPUNIT_TESTSUITE_H
|
|
#include "TestSuite.h"
|
|
#endif
|
|
|
|
#ifndef CPPUNIT_TESTRESULT_H
|
|
#include "TestResult.h"
|
|
#endif
|
|
|
|
#ifndef CPPUNIT_TESTCALLER_H
|
|
#include "TestCaller.h"
|
|
#endif
|
|
|
|
|
|
|
|
class TestTest : public TestCase
|
|
{
|
|
protected:
|
|
TestCase *m_failure;
|
|
TestCase *m_error;
|
|
TestCase *m_success;
|
|
|
|
public:
|
|
TestTest (std::string name) : TestCase (name) {}
|
|
|
|
void testFailure ();
|
|
void testError ();
|
|
void testSuccess ();
|
|
static Test *suite ();
|
|
|
|
void setUp ();
|
|
void tearDown ();
|
|
|
|
private:
|
|
class FailureTestCase : public TestCase
|
|
{ public: FailureTestCase (std::string name) : TestCase (name) {}
|
|
protected: void runTest () { assert (false); }; };
|
|
|
|
class ErrorTestCase : public TestCase
|
|
{ public: ErrorTestCase (std::string name) : TestCase (name) {}
|
|
protected: void runTest () { int zero = 0; int result = 8 / zero; }; };
|
|
|
|
class SuccessTestCase : public TestCase
|
|
{ public: SuccessTestCase (std::string name) : TestCase (name) {}
|
|
protected: void runTest () { assert (true); }; };
|
|
|
|
};
|
|
|
|
inline void TestTest::setUp ()
|
|
{
|
|
m_failure = new FailureTestCase ("failure");
|
|
m_error = new ErrorTestCase ("error");
|
|
m_success = new SuccessTestCase ("success");
|
|
}
|
|
|
|
inline void TestTest::tearDown ()
|
|
{
|
|
delete m_failure;
|
|
delete m_error;
|
|
delete m_success;
|
|
}
|
|
|
|
|
|
inline void TestTest::testFailure ()
|
|
{
|
|
std::auto_ptr<TestResult> result (m_failure->run ());
|
|
|
|
assert (result->runTests () == 1);
|
|
assert (result->testFailures () == 1);
|
|
assert (result->testErrors () == 0);
|
|
assert (!result->wasSuccessful ());
|
|
|
|
}
|
|
|
|
inline void TestTest::testError ()
|
|
{
|
|
std::auto_ptr<TestResult> result (m_error->run ());
|
|
|
|
assert (result->runTests () == 1);
|
|
assert (result->testFailures () == 0);
|
|
assert (result->testErrors () == 1);
|
|
assert (!result->wasSuccessful ());
|
|
|
|
}
|
|
|
|
|
|
inline void TestTest::testSuccess ()
|
|
{
|
|
std::auto_ptr<TestResult> result (m_success->run ());
|
|
|
|
assert (result->runTests () == 1);
|
|
assert (result->testFailures () == 0);
|
|
assert (result->testErrors () == 0);
|
|
assert (result->wasSuccessful ());
|
|
|
|
}
|
|
|
|
|
|
inline Test *TestTest::suite ()
|
|
{
|
|
TestSuite *suite = new TestSuite ("TestTest");
|
|
|
|
suite->addTest (new TestCaller<TestTest> ("testFailure", testFailure));
|
|
suite->addTest (new TestCaller<TestTest> ("testError", testError));
|
|
suite->addTest (new TestCaller<TestTest> ("testSuccess", testSuccess));
|
|
|
|
return suite;
|
|
}
|
|
|
|
#endif
|
|
|