mirror of
https://github.com/unittest-cpp/unittest-cpp
synced 2026-09-26 16:19:30 +03:00
Found that Crashing tests at some point in Clang history were actually caught but testing on Clang 6.0 and Clang 7.0 this is not the case. So added Clang to the list of compilers that don't run this tests. Noted that several other Pull Requests were failing for the same reason.
133 lines
2.7 KiB
C++
133 lines
2.7 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) && !defined(__clang__)
|
|
// 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());
|
|
}
|
|
|
|
}
|