/* $Id$ */ /* Release $Name$ */ /* _PDCLIB_assert( char const * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #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 ) { fputs( message1, stderr ); fputs( function, stderr ); fputs( message2, stderr ); abort(); } #else void _PDCLIB_assert( char const * const message ) { fputs( message, stderr ); abort(); } #endif #ifdef TEST #include <_PDCLIB_test.h> #include static int rc = 0; static int EXPECTED_ABORT = 0; static int UNEXPECTED_ABORT = 1; 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() { BEGIN_TESTS; TESTCASE( signal( SIGABRT, &aborthandler ) != SIG_ERR ); assert( UNEXPECTED_ABORT ); /* NDEBUG not set, condition met */ assert( EXPECTED_ABORT ); /* NDEBUG not set, condition fails - should abort */ return TEST_RESULTS; } #endif