Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
#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
|