#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()); } }