| #include "UnitTest++/UnitTestPP.h" |
| #include "UnitTest++/TestReporter.h" |
| #include "UnitTest++/TimeHelpers.h" |
| #include "ScopedCurrentTest.h" |
| |
| using namespace UnitTest; |
| |
| namespace { |
| |
| TEST(PassingTestHasNoFailures) |
| { |
| class PassingTest : public Test |
| { |
| public: |
| PassingTest() : Test("passing") {} |
| virtual void RunImpl() const |
| { |
| CHECK(true); |
| } |
| }; |
| |
| TestResults results; |
| { |
| ScopedCurrentTest scopedResults(results); |
| PassingTest().Run(); |
| } |
| |
| CHECK_EQUAL(0, results.GetFailureCount()); |
| } |
| |
| |
| TEST(FailingTestHasFailures) |
| { |
| class FailingTest : public Test |
| { |
| public: |
| FailingTest() : Test("failing") {} |
| virtual void RunImpl() const |
| { |
| CHECK(false); |
| } |
| }; |
| |
| TestResults results; |
| { |
| ScopedCurrentTest scopedResults(results); |
| FailingTest().Run(); |
| } |
| |
| CHECK_EQUAL(1, results.GetFailureCount()); |
| } |
| |
| #ifndef UNITTEST_NO_EXCEPTIONS |
| TEST(ThrowingTestsAreReportedAsFailures) |
| { |
| class CrashingTest : public Test |
| { |
| public: |
| CrashingTest() : Test("throwing") {} |
| virtual void RunImpl() const |
| { |
| throw "Blah"; |
| } |
| }; |
| |
| TestResults results; |
| { |
| ScopedCurrentTest scopedResult(results); |
| CrashingTest().Run(); |
| } |
| |
| CHECK_EQUAL(1, results.GetFailureCount()); |
| } |
| |
| #if !defined(UNITTEST_MINGW) && !defined(UNITTEST_WIN32) |
| // Skip this test in debug because some debuggers don't like it. |
| #if defined(NDEBUG) |
| TEST(CrashingTestsAreReportedAsFailures) |
| { |
| class CrashingTest : public Test |
| { |
| public: |
| CrashingTest() : Test("crashing") {} |
| virtual void RunImpl() const |
| { |
| |
| reinterpret_cast< void (*)() >(0)(); |
| } |
| }; |
| |
| TestResults results; |
| { |
| ScopedCurrentTest scopedResult(results); |
| CrashingTest().Run(); |
| } |
| |
| CHECK_EQUAL(1, results.GetFailureCount()); |
| } |
| #endif |
| #endif |
| #endif |
| |
| TEST(TestWithUnspecifiedSuiteGetsDefaultSuite) |
| { |
| Test test("test"); |
| CHECK(test.m_details.suiteName != NULL); |
| CHECK_EQUAL("DefaultSuite", test.m_details.suiteName); |
| } |
| |
| TEST(TestReflectsSpecifiedSuiteName) |
| { |
| Test test("test", "testSuite"); |
| CHECK(test.m_details.suiteName != NULL); |
| CHECK_EQUAL("testSuite", test.m_details.suiteName); |
| } |
| |
| void Fail() |
| { |
| CHECK(false); |
| } |
| |
| TEST(OutOfCoreCHECKMacrosCanFailTests) |
| { |
| TestResults results; |
| { |
| ScopedCurrentTest scopedResult(results); |
| Fail(); |
| } |
| |
| CHECK_EQUAL(1, results.GetFailureCount()); |
| } |
| |
| } |