unittest-cpp/tests/TestTest.cpp
Patrick Johnmeyer bd11339b2d Disable CrashingTests... in debug.
After some consideration I decided to just remove this test in debug
configurations. Many debuggers will behave as XCode does and try to
'catch' this by default. The test still works in release configs.

Fixes #45.
2015-04-04 00:56:40 -05:00

133 lines
2.4 KiB
C++

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