GATE
tests.hpp File Reference

C++ unit test utilities. More...

#include "gate/gate_core_api.hpp"
#include "gate/strings.hpp"
#include "gate/results.hpp"

Classes

class  gate::UnitTestException
 
class  gate::UnitTestBase
 
class  gate::UnitTest
 

Macros

#define GATEXX_TEST_STR(expression)   #expression
 
#define GATEXX_TEST_UNIT(unit_name)
 
#define GATEXX_TEST_CHECK(expression)
 
#define GATEXX_TEST_CHECK_NOTHROW(expression)
 
#define GATEXX_TEST_CHECK_THROW(expression)
 
#define GATEXX_TEST_REQUIRE(expression)
 
#define GATEXX_TEST_REQUIRE_NOTHROW(expression)
 
#define GATEXX_TEST_REQUIRE_THROW(expression)
 
#define GATEXX_TEST_CHECK_RESULT(expected, expression)   GATEXX_TEST_CHECK( ((expected) == (expression)) )
 
#define GATEXX_TEST_REQUIRE_RESULT(expected, expression)   GATEXX_TEST_REQUIRE( ((expected) == (expression)) )
 
#define GATEXX_TEST_CHECK_OK(expression)   GATE_TEST_CHECK( (GATE_RESULT_OK == (expression)) )
 
#define GATEXX_TEST_REQUIRE_OK(expression)   GATE_TEST_REQUIRE( (GATE_RESULT_OK == (expression)) )
 
#define GATEXX_TEST_CHECK_EQUAL(expression, equals)   GATEXX_TEST_CHECK( ((expression) == (equals)) )
 
#define GATEXX_TEST_REQUIRE_EQUAL(expression, equals)   GATEXX_TEST_REQUIRE( ((expression) == (equals)) )
 
#define GATEXX_TEST_CHECK_NOT_EQUAL(expression, not_equals)   GATEXX_TEST_CHECK( ((expression) != (not_equals)) )
 
#define GATEXX_TEST_REQUIRE_NOT_EQUAL(expression, not_equals)   GATEXX_TEST_REQUIRE( ((expression) != (not_equals)) )
 
#define GATEXX_TEST_TRACE_MESSAGE(message)   gate_test_trace_message(message, __FILE__, __LINE__)
 

Detailed Description

C++ unit test utilities.

Macro Definition Documentation

◆ GATEXX_TEST_CHECK

#define GATEXX_TEST_CHECK ( expression)
Value:
do { \
::gate::UnitTest::countTest(); \
::gate::UnitTest::printTrace( GATEXX_TEST_STR(expression), __FILE__, __LINE__ ); \
if( (expression) ) \
{ \
} \
else \
{ \
::gate::UnitTest::countTestFailure(); \
::gate::UnitTest::printError( GATEXX_TEST_STR(expression), __FILE__, __LINE__ ); \
} \
} while(0)

◆ GATEXX_TEST_CHECK_NOTHROW

#define GATEXX_TEST_CHECK_NOTHROW ( expression)
Value:
do { \
::gate::UnitTest::countTest(); \
::gate::UnitTest::printTrace( GATEXX_TEST_STR(expression), __FILE__, __LINE__ ); \
try { \
expression; \
} catch(...) { \
::gate::UnitTest::countTestFailure(); \
::gate::UnitTest::printError( GATEXX_TEST_STR(expression), __FILE__, __LINE__ ); \
} \
} while(0)

◆ GATEXX_TEST_CHECK_THROW

#define GATEXX_TEST_CHECK_THROW ( expression)
Value:
do { \
::gate::UnitTest::countTest(); \
::gate::UnitTest::printTrace( GATEXX_TEST_STR(expression), __FILE__, __LINE__ ); \
try { \
expression; \
::gate::UnitTest::countTestFailure(); \
::gate::UnitTest::printError( GATEXX_TEST_STR(expression), __FILE__, __LINE__ ); \
} catch(...) { \
} \
} while(0)

◆ GATEXX_TEST_REQUIRE

#define GATEXX_TEST_REQUIRE ( expression)
Value:
do { \
::gate::UnitTest::countTest(); \
::gate::UnitTest::printTrace( GATEXX_TEST_STR(expression), __FILE__, __LINE__ ); \
if( (expression) ) \
{ \
} \
else \
{ \
::gate::UnitTest::countTestFailure(); \
::gate::UnitTest::printError( GATEXX_TEST_STR(expression), __FILE__, __LINE__ ); \
throw UnitTestException(); \
} \
} while(0)

◆ GATEXX_TEST_REQUIRE_NOTHROW

#define GATEXX_TEST_REQUIRE_NOTHROW ( expression)
Value:
do { \
::gate::UnitTest::countTest(); \
::gate::UnitTest::printTrace( GATEXX_TEST_STR(expression), __FILE__, __LINE__ ); \
try { \
expression; \
} catch(...) { \
::gate::UnitTest::countTestFailure(); \
::gate::UnitTest::printError( GATEXX_TEST_STR(expression), __FILE__, __LINE__ ); \
throw UnitTestException(); \
} \
} while(0)

◆ GATEXX_TEST_REQUIRE_THROW

#define GATEXX_TEST_REQUIRE_THROW ( expression)
Value:
do { \
::gate::UnitTest::countTest(); \
::gate::UnitTest::printTrace( GATEXX_TEST_STR(expression), __FILE__, __LINE__ ); \
try { \
expression; \
::gate::UnitTest::countTestFailure(); \
::gate::UnitTest::printError( GATEXX_TEST_STR(expression), __FILE__, __LINE__ ); \
} catch(...) { \
break; \
} \
throw UnitTestException(); \
} while(0)

◆ GATEXX_TEST_UNIT

#define GATEXX_TEST_UNIT ( unit_name)
Value:
class GateUnitTest_ ## unit_name : public ::gate::UnitTestBase \
{ \
private: \
void run_test(); \
public: \
GateUnitTest_ ## unit_name () \
: UnitTestBase( # unit_name ) \
{ \
gate::UnitTest::registerTest(*this); \
} \
void test() override \
{\
::gate::UnitTest::beginTest(this->getUnitTestName(), __FILE__, __LINE__); \
try \
{ \
this->run_test(); \
} \
catch(UnitTestException const&) \
{ \
} \
catch(...) \
{ \
::gate::UnitTest::printError( GATEXX_TEST_STR("Unexpected exception"), __FILE__, __LINE__ ); \
::gate::UnitTest::countTestFailure(); \
} \
::gate::UnitTest::endTest(this->getUnitTestName(), __FILE__, __LINE__); \
}\
} volatile gate_unit_test_instance_ ## unit_name ; \
void GateUnitTest_ ## unit_name ::run_test()
Definition tests.hpp:51