Annotation of embedaddon/expat/tests/minicheck.h, revision 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>