mirror of
https://github.com/unittest-cpp/unittest-cpp
synced 2026-09-26 16:19:30 +03:00
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.
133 lines
2.4 KiB
C++
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());
|
|
}
|
|
|
|
}
|