OpENeruCPort/OrginalSourceRepo/OpENer-master/source/tests/test_assert.h

33 lines
1.3 KiB
C

/*
* This header defines an implementation of the OPENER_ASSERT macro that
* can be used with Cpputest unit tests to confirm an assertion fails
* under given conditions. It is conditionally included in the application
* code when unit tests are enabled through the Cmake configuration; it should
* not be included in the Cpputest unit test code.
*
* The intent is to create an assertion implementation that both immediately
* stops execution after an assertion failure, as should normally be the
* case, and is detectable from the unit test code. This is accomplished via
* setjmp() and longjmp(), approximating the behavior of a C++ exception,
* where an OPENER_ASSERTION failure results in a longjmp() back to the
* unit test code, which then verifies that an assertion failure occurred.
*/
#ifndef OPENER_TEST_ASSERT_H
#define OPENER_TEST_ASSERT_H
/*
* Define the OPENER_ASSERT macro to call the unit test assertion verification
* function. The surrounding do/while loop serves to insulate the if statement
* from any surrounding if statements.
*/
#define OPENER_ASSERT(assertion) \
do {if ( !(assertion) ) test_assert_fail(__FILE__, __LINE__);} while (0)
/* Function Prototypes */
extern void test_assert_fail(const char *const file,
const unsigned int line);
#endif /* OPENER_TEST_ASSERT_H */