mirror of
https://github.com/bkaradzic/bx.git
synced 2026-02-18 21:13:02 +01:00
47 lines
944 B
C++
47 lines
944 B
C++
#ifndef UNITTEST_EXECUTE_TEST_H
|
|
#define UNITTEST_EXECUTE_TEST_H
|
|
|
|
#include "TestDetails.h"
|
|
#include "MemoryOutStream.h"
|
|
#include "AssertException.h"
|
|
#include "CurrentTest.h"
|
|
|
|
#ifdef UNITTEST_POSIX
|
|
#include "Posix/SignalTranslator.h"
|
|
#endif
|
|
|
|
namespace UnitTest {
|
|
|
|
template< typename T >
|
|
void ExecuteTest(T& testObject, TestDetails const& details)
|
|
{
|
|
CurrentTest::Details() = &details;
|
|
|
|
try
|
|
{
|
|
#ifdef UNITTEST_POSIX
|
|
UNITTEST_THROW_SIGNALS
|
|
#endif
|
|
testObject.RunImpl();
|
|
}
|
|
catch (AssertException const& e)
|
|
{
|
|
CurrentTest::Results()->OnTestFailure(
|
|
TestDetails(details.testName, details.suiteName, e.Filename(), e.LineNumber()), e.what());
|
|
}
|
|
catch (std::exception const& e)
|
|
{
|
|
MemoryOutStream stream;
|
|
stream << "Unhandled exception: " << e.what();
|
|
CurrentTest::Results()->OnTestFailure(details, stream.GetText());
|
|
}
|
|
catch (...)
|
|
{
|
|
CurrentTest::Results()->OnTestFailure(details, "Unhandled exception: Crash!");
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
#endif
|