/* ctest.h * * Defines a test framework for C projects. */ #ifndef CTEST_H #define CTEST_H #include #include #define ct_test(test, cond) \ ct_do_test(test, #cond, cond, __FILE__, __LINE__) #define ct_fail(test, str) \ ct_do_fail(test, str, __FILE__, __LINE__) typedef struct _Test Test; typedef void ( *TestFunc) ( Test *); struct _Test { char *name; FILE *pStream; size_t nTests; size_t maxTests; TestFunc *pTestFuns; long nPass; long nFail; }; #ifdef __cplusplus extern "C" { #endif Test *ct_create( const char *name, void (*init) (Test *)); void ct_destroy( Test * pTest); const char *ct_getName( Test * pTest); long ct_getNumPassed( Test * pTest); long ct_getNumFailed( Test * pTest); long ct_getNumTests( Test * pTest); FILE *ct_getStream( Test * pTest); void ct_setStream( Test * pTest, FILE * stream); bool ct_addTestFunction( Test * pTest, TestFunc tfun); void ct_succeed( Test * pTest); long ct_run( Test * pTest); long ct_report( Test * pTest); void ct_reset( Test * pTest); /* Not intended for end-users: */ void ct_do_test( Test * pTest, const char *str, bool cond, const char *file, long line); void ct_do_fail( Test * pTest, const char *str, const char *file, long line); #ifdef __cplusplus } #endif #endif