Annotation of embedaddon/expat/tests/minicheck.h, revision 1.1.1.1

1.1       misho       1: /* Miniature re-implementation of the "check" library.
                      2:  *
                      3:  * This is intended to support just enough of check to run the Expat
                      4:  * tests.  This interface is based entirely on the portion of the
                      5:  * check library being used.
                      6:  *
                      7:  * This is *source* compatible, but not necessary *link* compatible.
                      8:  */
                      9: 
                     10: #ifdef __cplusplus
                     11: extern "C" {
                     12: #endif
                     13: 
                     14: #define CK_NOFORK 0
                     15: #define CK_FORK   1
                     16: 
                     17: #define CK_SILENT  0
                     18: #define CK_NORMAL  1
                     19: #define CK_VERBOSE 2
                     20: 
                     21: /* Workaround for Tru64 Unix systems where the C compiler has a working
                     22:    __func__, but the C++ compiler only has a working __FUNCTION__.  This
                     23:    could be fixed in configure.in, but it's not worth it right now. */
                     24: #if defined(__osf__) && defined(__cplusplus)
                     25: #define __func__ __FUNCTION__
                     26: #endif
                     27: 
                     28: #define START_TEST(testname) static void testname(void) { \
                     29:     _check_set_test_info(__func__, __FILE__, __LINE__);   \
                     30:     {
                     31: #define END_TEST } }
                     32: 
                     33: #define fail(msg)  _fail_unless(0, __FILE__, __LINE__, msg)
                     34: 
                     35: typedef void (*tcase_setup_function)(void);
                     36: typedef void (*tcase_teardown_function)(void);
                     37: typedef void (*tcase_test_function)(void);
                     38: 
                     39: typedef struct SRunner SRunner;
                     40: typedef struct Suite Suite;
                     41: typedef struct TCase TCase;
                     42: 
                     43: struct SRunner {
                     44:     Suite *suite;
                     45:     int nchecks;
                     46:     int nfailures;
                     47: };
                     48: 
                     49: struct Suite {
                     50:     char *name;
                     51:     TCase *tests;
                     52: };
                     53: 
                     54: struct TCase {
                     55:     char *name;
                     56:     tcase_setup_function setup;
                     57:     tcase_teardown_function teardown;
                     58:     tcase_test_function *tests;
                     59:     int ntests;
                     60:     int allocated;
                     61:     TCase *next_tcase;
                     62: };
                     63: 
                     64: 
                     65: /* Internal helper. */
                     66: void _check_set_test_info(char const *function,
                     67:                           char const *filename, int lineno);
                     68: 
                     69: 
                     70: /*
                     71:  * Prototypes for the actual implementation.
                     72:  */
                     73: 
                     74: void _fail_unless(int condition, const char *file, int line, char *msg);
                     75: Suite *suite_create(char *name);
                     76: TCase *tcase_create(char *name);
                     77: void suite_add_tcase(Suite *suite, TCase *tc);
                     78: void tcase_add_checked_fixture(TCase *,
                     79:                                tcase_setup_function,
                     80:                                tcase_teardown_function);
                     81: void tcase_add_test(TCase *tc, tcase_test_function test);
                     82: SRunner *srunner_create(Suite *suite);
                     83: void srunner_run_all(SRunner *runner, int verbosity);
                     84: int srunner_ntests_failed(SRunner *runner);
                     85: void srunner_free(SRunner *runner);
                     86: 
                     87: #ifdef __cplusplus
                     88: }
                     89: #endif

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>