X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=functions%2Fassert.c;h=cf3afb99e74d173fbb8cfe96873642139c381869;hb=c5d3e636bfdbead4da6d41439043b2d10b252180;hp=31c43866e56bb5765df0bdf54da7f69372d217ba;hpb=3220f577b186e04180acd7554a785c60dfb7ebb2;p=pdclib diff --git a/functions/assert.c b/functions/assert.c index 31c4386..cf3afb9 100644 --- a/functions/assert.c +++ b/functions/assert.c @@ -7,7 +7,10 @@ #include #include +#ifndef _PDCLIB_AUX_H +#define _PDCLIB_AUX_H _PDCLIB_AUX_H #include <_PDCLIB_aux.h> +#endif #if _PDCLIB_C_VERSION == 99 void _PDCLIB_assert( char const * const message1, char const * const function, char const * const message2 ) @@ -25,3 +28,43 @@ void _PDCLIB_assert( char const * const message ) } #endif + +#ifdef TEST +#include <_PDCLIB_test.h> +#include + +static int rc = 0; +static int EXPECTED_ABORT = 0; + +void aborthandler( int signal ) +{ + TESTCASE( ! EXPECTED_ABORT ); + exit( rc ); +} + +#define NDEBUG +#include + +int disabled_test() +{ + int i = 0; + assert( i == 0 ); /* NDEBUG set, condition met */ + assert( i == 1 ); /* NDEBUG set, condition fails */ + return i; +} + +#undef NDEBUG +#include + +int main() +{ + int i = 0; + BEGIN_TESTS; + TESTCASE( signal( SIGABRT, &aborthandler ) != SIG_ERR ); + assert( i == 0 ); /* NDEBUG not set, condition met */ + puts( "Expecting failed assert() message here:" ); + assert( i == 1 ); /* NDEBUG not set, condition fails - should abort */ + return TEST_RESULTS; +} + +#endif