mirror of
https://github.com/holub/mame
synced 2025-05-01 04:06:58 +03:00
71 lines
1.4 KiB
C++
71 lines
1.4 KiB
C++
#include "ReportAssert.h"
|
|
#include "ReportAssertImpl.h"
|
|
#include "AssertException.h"
|
|
#include "CurrentTest.h"
|
|
#include "TestResults.h"
|
|
#include "TestDetails.h"
|
|
|
|
#ifdef UNITTEST_NO_EXCEPTIONS
|
|
#include "ReportAssertImpl.h"
|
|
#endif
|
|
|
|
namespace UnitTest {
|
|
|
|
namespace
|
|
{
|
|
bool& AssertExpectedFlag()
|
|
{
|
|
static bool s_assertExpected = false;
|
|
return s_assertExpected;
|
|
}
|
|
}
|
|
|
|
UNITTEST_LINKAGE void ReportAssert(char const* description, char const* filename, int lineNumber)
|
|
{
|
|
Detail::ReportAssertEx(CurrentTest::Results(), CurrentTest::Details(),
|
|
description, filename, lineNumber);
|
|
}
|
|
|
|
namespace Detail {
|
|
|
|
#ifdef UNITTEST_NO_EXCEPTIONS
|
|
UNITTEST_JMPBUF* GetAssertJmpBuf()
|
|
{
|
|
static UNITTEST_JMPBUF s_jmpBuf;
|
|
return &s_jmpBuf;
|
|
}
|
|
#endif
|
|
|
|
UNITTEST_LINKAGE void ReportAssertEx(TestResults* testResults,
|
|
const TestDetails* testDetails,
|
|
char const* description,
|
|
char const* filename,
|
|
int lineNumber)
|
|
{
|
|
if (AssertExpectedFlag() == false)
|
|
{
|
|
TestDetails assertDetails(testDetails->testName, testDetails->suiteName, filename, lineNumber);
|
|
testResults->OnTestFailure(assertDetails, description);
|
|
}
|
|
|
|
ExpectAssert(false);
|
|
|
|
#ifndef UNITTEST_NO_EXCEPTIONS
|
|
throw AssertException();
|
|
#else
|
|
UNITTEST_JUMP_TO_ASSERT_JUMP_TARGET();
|
|
#endif
|
|
}
|
|
|
|
UNITTEST_LINKAGE void ExpectAssert(bool expected)
|
|
{
|
|
AssertExpectedFlag() = expected;
|
|
}
|
|
|
|
UNITTEST_LINKAGE bool AssertExpected()
|
|
{
|
|
return AssertExpectedFlag();
|
|
}
|
|
|
|
}}
|