mirror of
https://github.com/holub/mame
synced 2025-05-07 14:54:35 +03:00
137 lines
2.7 KiB
C++
137 lines
2.7 KiB
C++
#include "UnitTest++/Config.h"
|
|
#include "UnitTest++/UnitTestPP.h"
|
|
|
|
#include "UnitTest++/ReportAssert.h"
|
|
#include "UnitTest++/ReportAssertImpl.h"
|
|
#include "UnitTest++/AssertException.h"
|
|
|
|
#include "RecordingReporter.h"
|
|
#include <csetjmp>
|
|
|
|
using namespace UnitTest;
|
|
|
|
namespace {
|
|
|
|
TEST(CanSetAssertExpected)
|
|
{
|
|
Detail::ExpectAssert(true);
|
|
CHECK(Detail::AssertExpected());
|
|
|
|
Detail::ExpectAssert(false);
|
|
CHECK(!Detail::AssertExpected());
|
|
}
|
|
|
|
#ifndef UNITTEST_NO_EXCEPTIONS
|
|
|
|
TEST(ReportAssertThrowsAssertException)
|
|
{
|
|
bool caught = false;
|
|
|
|
try
|
|
{
|
|
TestResults testResults;
|
|
TestDetails testDetails("", "", "", 0);
|
|
Detail::ReportAssertEx(&testResults, &testDetails, "", "", 0);
|
|
}
|
|
catch(AssertException const&)
|
|
{
|
|
caught = true;
|
|
}
|
|
|
|
CHECK(true == caught);
|
|
}
|
|
|
|
TEST(ReportAssertClearsExpectAssertFlag)
|
|
{
|
|
RecordingReporter reporter;
|
|
TestResults testResults(&reporter);
|
|
TestDetails testDetails("", "", "", 0);
|
|
|
|
try
|
|
{
|
|
Detail::ExpectAssert(true);
|
|
Detail::ReportAssertEx(&testResults, &testDetails, "", "", 0);
|
|
}
|
|
catch(AssertException const&)
|
|
{
|
|
}
|
|
|
|
CHECK(Detail::AssertExpected() == false);
|
|
CHECK_EQUAL(0, reporter.testFailedCount);
|
|
}
|
|
|
|
TEST(ReportAssertWritesFailureToResultsAndDetailsWhenAssertIsNotExpected)
|
|
{
|
|
const int lineNumber = 12345;
|
|
const char* description = "description";
|
|
const char* filename = "filename";
|
|
|
|
RecordingReporter reporter;
|
|
TestResults testResults(&reporter);
|
|
TestDetails testDetails("", "", "", 0);
|
|
|
|
try
|
|
{
|
|
Detail::ReportAssertEx(&testResults, &testDetails, description, filename, lineNumber);
|
|
}
|
|
catch(AssertException const&)
|
|
{
|
|
}
|
|
|
|
CHECK_EQUAL(description, reporter.lastFailedMessage);
|
|
CHECK_EQUAL(filename, reporter.lastFailedFile);
|
|
CHECK_EQUAL(lineNumber, reporter.lastFailedLine);
|
|
}
|
|
|
|
TEST(ReportAssertReportsNoErrorsWhenAssertIsExpected)
|
|
{
|
|
Detail::ExpectAssert(true);
|
|
|
|
RecordingReporter reporter;
|
|
TestResults testResults(&reporter);
|
|
TestDetails testDetails("", "", "", 0);
|
|
|
|
try
|
|
{
|
|
Detail::ReportAssertEx(&testResults, &testDetails, "", "", 0);
|
|
}
|
|
catch(AssertException const&)
|
|
{
|
|
}
|
|
|
|
CHECK_EQUAL(0, reporter.testFailedCount);
|
|
}
|
|
|
|
TEST(CheckAssertMacroSetsAssertExpectationToFalseAfterRunning)
|
|
{
|
|
Detail::ExpectAssert(true);
|
|
CHECK_ASSERT(ReportAssert("", "", 0));
|
|
CHECK(!Detail::AssertExpected());
|
|
Detail::ExpectAssert(false);
|
|
}
|
|
|
|
#else
|
|
|
|
TEST(SetAssertJumpTargetReturnsFalseWhenSettingJumpTarget)
|
|
{
|
|
CHECK(UNITTEST_SET_ASSERT_JUMP_TARGET() == false);
|
|
}
|
|
|
|
TEST(JumpToAssertJumpTarget_JumpsToSetPoint_ReturnsTrue)
|
|
{
|
|
const volatile bool taken = !!UNITTEST_SET_ASSERT_JUMP_TARGET();
|
|
|
|
volatile bool set = false;
|
|
if (taken == false)
|
|
{
|
|
UNITTEST_JUMP_TO_ASSERT_JUMP_TARGET();
|
|
set = true;
|
|
}
|
|
|
|
CHECK(set == false);
|
|
}
|
|
|
|
#endif
|
|
|
|
}
|