Check
Unit testing framework for C
|
Go to the documentation of this file.
30 #include <check_stdint.h>
39 #define CK_CPPSTART extern "C" {
52 #if defined(__GNUC__) && defined(__GNUC_MINOR__) && defined(__GNUC_PATCHLEVEL__)
53 #define GCC_VERSION_AT_LEAST(major, minor, patch) \
54 ((__GNUC__ > (major)) || \
55 (__GNUC__ == (major) && __GNUC_MINOR__ > (minor)) || \
56 (__GNUC__ == (major) && __GNUC_MINOR__ == (minor) && __GNUC_PATCHLEVEL__ >= (patch)) )
57 #elif defined(__GNUC__) && defined(__GNUC_MINOR__)
58 #define GCC_VERSION_AT_LEAST(major, minor, patch) \
59 ((__GNUC__ > (major)) || \
60 (__GNUC__ == (major) && __GNUC_MINOR__ >= (minor)))
62 #define GCC_VERSION_AT_LEAST(major, minor, patch) 0
65 #if GCC_VERSION_AT_LEAST(2,95,3)
66 #define CK_ATTRIBUTE_UNUSED __attribute__ ((unused))
68 #define CK_ATTRIBUTE_UNUSED
71 #if GCC_VERSION_AT_LEAST(2,5,0)
72 #define CK_ATTRIBUTE_NORETURN __attribute__ ((noreturn))
74 #define CK_ATTRIBUTE_NORETURN
77 #undef GCC_VERSION_AT_LEAST
79 #include <sys/types.h>
112 #define CHECK_MAJOR_VERSION (0)
113 #define CHECK_MINOR_VERSION (14)
114 #define CHECK_MICRO_VERSION (0)
116 CK_DLL_EXP
extern int CK_EXPORT check_major_version;
117 CK_DLL_EXP
extern int CK_EXPORT check_minor_version;
118 CK_DLL_EXP
extern int CK_EXPORT check_micro_version;
121 #define NULL ((void*)0)
237 #define tcase_add_test(tc,tf) tcase_add_test_raise_signal(tc,tf,0)
251 #define tcase_add_test_raise_signal(tc,ttest,signal) \
252 _tcase_add_test((tc),(ttest),(signal), 0, 0, 1)
266 #define tcase_add_exit_test(tc, ttest, expected_exit_value) \
267 _tcase_add_test((tc),(ttest),0,(expected_exit_value),0,1)
283 #define tcase_add_loop_test(tc,ttest,s,e) \
284 _tcase_add_test((tc),(ttest),0,0,(s),(e))
304 #define tcase_add_loop_test_raise_signal(tc,ttest,signal,s,e) \
305 _tcase_add_test((tc),(ttest),(signal),0,(s),(e))
325 #define tcase_add_loop_exit_test(tc,ttest,expected_exit_value,s,e) \
326 _tcase_add_test((tc),(ttest),0,(expected_exit_value),(s),(e))
331 CK_DLL_EXP
void CK_EXPORT _tcase_add_test(
TCase * tc,
const TTest * ttest,
332 int _signal,
int allowed_exit_value,
415 CK_DLL_EXP
void CK_EXPORT
tcase_fn_start(
const char *fname,
const char *file,
426 CK_DLL_EXP
const char* CK_EXPORT
tcase_name(
void);
435 #define START_TEST(__testname)\
436 static void __testname ## _fn (int _i CK_ATTRIBUTE_UNUSED);\
437 static const TTest __testname ## _ttest = {""# __testname, __testname ## _fn, __FILE__, __LINE__};\
438 static const TTest * __testname = & __testname ## _ttest;\
439 static void __testname ## _fn (int _i CK_ATTRIBUTE_UNUSED)
453 #define fail_unless ck_assert_msg
465 #define fail_if(expr, ...)\
467 _ck_assert_failed(__FILE__, __LINE__, "Failure '"#expr"' occurred" , ## __VA_ARGS__, NULL) \
468 : _mark_point(__FILE__, __LINE__)
475 #define fail ck_abort_msg
486 CK_DLL_EXP
void CK_EXPORT _ck_assert_failed(
const char *file,
int line,
488 ...) CK_ATTRIBUTE_NORETURN;
490 CK_DLL_EXP
void CK_EXPORT _ck_assert_failed(
const char *file,
int line,
491 const char *expr, ...);
503 #define ck_assert(expr) ck_assert_msg(expr, NULL)
518 #define ck_assert_msg(expr, ...) \
520 _mark_point(__FILE__, __LINE__) : \
521 _ck_assert_failed(__FILE__, __LINE__, "Assertion '"#expr"' failed" , ## __VA_ARGS__, NULL)
530 #define ck_abort() ck_abort_msg(NULL)
540 #define ck_abort_msg(...) _ck_assert_failed(__FILE__, __LINE__, "Failed" , ## __VA_ARGS__, NULL)
544 #define _ck_assert_int(X, OP, Y) do { \
545 intmax_t _ck_x = (X); \
546 intmax_t _ck_y = (Y); \
547 ck_assert_msg(_ck_x OP _ck_y, "Assertion '%s' failed: %s == %jd, %s == %jd", #X" "#OP" "#Y, #X, _ck_x, #Y, _ck_y); \
562 #define ck_assert_int_eq(X, Y) _ck_assert_int(X, ==, Y)
575 #define ck_assert_int_ne(X, Y) _ck_assert_int(X, !=, Y)
588 #define ck_assert_int_lt(X, Y) _ck_assert_int(X, <, Y)
601 #define ck_assert_int_le(X, Y) _ck_assert_int(X, <=, Y)
614 #define ck_assert_int_gt(X, Y) _ck_assert_int(X, >, Y)
627 #define ck_assert_int_ge(X, Y) _ck_assert_int(X, >=, Y)
629 #define _ck_assert_uint(X, OP, Y) do { \
630 uintmax_t _ck_x = (X); \
631 uintmax_t _ck_y = (Y); \
632 ck_assert_msg(_ck_x OP _ck_y, "Assertion '%s' failed: %s == %ju, %s == %ju", #X" "#OP" "#Y, #X, _ck_x, #Y, _ck_y); \
646 #define ck_assert_uint_eq(X, Y) _ck_assert_uint(X, ==, Y)
659 #define ck_assert_uint_ne(X, Y) _ck_assert_uint(X, !=, Y)
672 #define ck_assert_uint_lt(X, Y) _ck_assert_uint(X, <, Y)
685 #define ck_assert_uint_le(X, Y) _ck_assert_uint(X, <=, Y)
698 #define ck_assert_uint_gt(X, Y) _ck_assert_uint(X, >, Y)
711 #define ck_assert_uint_ge(X, Y) _ck_assert_uint(X, >=, Y)
714 #ifndef CK_FLOATING_DIG
715 # define CK_FLOATING_DIG 6
721 #define _ck_assert_floating(X, OP, Y, TP, TM) do { \
724 ck_assert_msg(_ck_x OP _ck_y, \
725 "Assertion '%s' failed: %s == %.*" TM "g, %s == %.*" TM "g", \
727 #X, (int)CK_FLOATING_DIG, _ck_x, \
728 #Y, (int)CK_FLOATING_DIG, _ck_y); \
733 #define _ck_assert_floating_finite(X, TP, TM) \
736 ck_assert_msg(isfinite(_ck_x), \
737 "Assertion '%s' failed: %s == %.*" TM "g", \
739 #X, (int)CK_FLOATING_DIG, _ck_x); \
744 #define _ck_assert_floating_infinite(X, TP, TM) \
747 ck_assert_msg(isinf(_ck_x), \
748 "Assertion '%s' failed: %s == %.*" TM "g", \
750 #X, (int)CK_FLOATING_DIG, _ck_x); \
755 #define _ck_assert_floating_nan(X, TP, TM) \
758 ck_assert_msg(isnan(_ck_x), \
759 "Assertion '%s' failed: %s == %.*" TM "g", \
761 #X, (int)CK_FLOATING_DIG, _ck_x); \
766 #define _ck_assert_floating_nonnan(X, TP, TM) \
769 ck_assert_msg(!isnan(_ck_x), \
770 "Assertion '%s' failed: %s == %.*" TM "g", \
772 #X, (int)CK_FLOATING_DIG, _ck_x); \
778 #define _ck_assert_floating_op_tol(X, OP, Y, T, D, TP, TM) do { \
782 ck_assert_msg((_ck_x - _ck_y) OP _ck_t * (D), \
783 "Assertion '%s' failed: %s == %.*" TM "g, %s == %.*" TM "g, %s == %.*" TM "g", \
784 #X" "#OP"= "#Y", error < "#T, \
785 #X, (int)CK_FLOATING_DIG, _ck_x, \
786 #Y, (int)CK_FLOATING_DIG, _ck_y, \
787 #T, (int)CK_FLOATING_DIG, _ck_t); \
793 #define _ck_assert_floating_absdiff_op_tol(X, Y, OP, T, TP, TM) \
798 ck_assert_msg(fabsl(_ck_y - _ck_x) OP _ck_t, \
799 "Assertion '%s' failed: %s == %.*" TM "g, %s == %.*" TM "g, %s == %.*" TM "g", \
800 "fabsl("#Y" - "#X") "#OP" "#T, \
801 #X, (int)CK_FLOATING_DIG, _ck_x, \
802 #Y, (int)CK_FLOATING_DIG, _ck_y, \
803 #T, (int)CK_FLOATING_DIG, _ck_t); \
822 #define ck_assert_float_eq(X, Y) _ck_assert_floating(X, ==, Y, float, "")
839 #define ck_assert_float_ne(X, Y) _ck_assert_floating(X, !=, Y, float, "")
852 #define ck_assert_float_lt(X, Y) _ck_assert_floating(X, <, Y, float, "")
865 #define ck_assert_float_le(X, Y) _ck_assert_floating(X, <=, Y, float, "")
878 #define ck_assert_float_gt(X, Y) _ck_assert_floating(X, >, Y, float, "")
891 #define ck_assert_float_ge(X, Y) _ck_assert_floating(X, >=, Y, float, "")
907 #define ck_assert_float_eq_tol(X, Y, T) _ck_assert_floating_absdiff_op_tol(X, Y, <, T, float, "")
923 #define ck_assert_float_ne_tol(X, Y, T) _ck_assert_floating_absdiff_op_tol(X, Y, >=, T, float, "")
939 #define ck_assert_float_ge_tol(X, Y, T) _ck_assert_floating_op_tol(X, >, Y, T, -1, float, "")
955 #define ck_assert_float_le_tol(X, Y, T) _ck_assert_floating_op_tol(X, <, Y, T, 1, float, "")
969 #define ck_assert_float_finite(X) _ck_assert_floating_finite(X, float, "")
983 #define ck_assert_float_infinite(X) _ck_assert_floating_infinite(X, float, "")
997 #define ck_assert_float_nan(X) _ck_assert_floating_nan(X, float, "")
1011 #define ck_assert_float_nonnan(X) _ck_assert_floating_nonnan(X, float, "")
1029 #define ck_assert_double_eq(X, Y) _ck_assert_floating(X, ==, Y, double, "")
1046 #define ck_assert_double_ne(X, Y) _ck_assert_floating(X, !=, Y, double, "")
1059 #define ck_assert_double_lt(X, Y) _ck_assert_floating(X, <, Y, double, "")
1072 #define ck_assert_double_le(X, Y) _ck_assert_floating(X, <=, Y, double, "")
1085 #define ck_assert_double_gt(X, Y) _ck_assert_floating(X, >, Y, double, "")
1098 #define ck_assert_double_ge(X, Y) _ck_assert_floating(X, >=, Y, double, "")
1114 #define ck_assert_double_eq_tol(X, Y, T) _ck_assert_floating_absdiff_op_tol(X, Y, <, T, double, "")
1130 #define ck_assert_double_ne_tol(X, Y, T) _ck_assert_floating_absdiff_op_tol(X, Y, >=, T, double, "")
1146 #define ck_assert_double_ge_tol(X, Y, T) _ck_assert_floating_op_tol(X, >, Y, T, -1, double, "")
1162 #define ck_assert_double_le_tol(X, Y, T) _ck_assert_floating_op_tol(X, <, Y, T, 1, double, "")
1176 #define ck_assert_double_finite(X) _ck_assert_floating_finite(X, double, "")
1190 #define ck_assert_double_infinite(X) _ck_assert_floating_infinite(X, double, "")
1204 #define ck_assert_double_nan(X) _ck_assert_floating_nan(X, double, "")
1218 #define ck_assert_double_nonnan(X) _ck_assert_floating_nonnan(X, double, "")
1236 #define ck_assert_ldouble_eq(X, Y) _ck_assert_floating(X, ==, Y, long double, "L")
1253 #define ck_assert_ldouble_ne(X, Y) _ck_assert_floating(X, !=, Y, long double, "L")
1266 #define ck_assert_ldouble_lt(X, Y) _ck_assert_floating(X, <, Y, long double, "L")
1279 #define ck_assert_ldouble_le(X, Y) _ck_assert_floating(X, <=, Y, long double, "L")
1292 #define ck_assert_ldouble_gt(X, Y) _ck_assert_floating(X, >, Y, long double, "L")
1305 #define ck_assert_ldouble_ge(X, Y) _ck_assert_floating(X, >=, Y, long double, "L")
1321 #define ck_assert_ldouble_eq_tol(X, Y, T) _ck_assert_floating_absdiff_op_tol(X, Y, <, T, long double, "L")
1337 #define ck_assert_ldouble_ne_tol(X, Y, T) _ck_assert_floating_absdiff_op_tol(X, Y, >=, T, long double, "L")
1353 #define ck_assert_ldouble_ge_tol(X, Y, T) _ck_assert_floating_op_tol(X, >, Y, T, -1, long double, "L")
1369 #define ck_assert_ldouble_le_tol(X, Y, T) _ck_assert_floating_op_tol(X, <, Y, T, 1, long double, "L")
1383 #define ck_assert_ldouble_finite(X) _ck_assert_floating_finite(X, long double, "L")
1397 #define ck_assert_ldouble_infinite(X) _ck_assert_floating_infinite(X, long double, "L")
1411 #define ck_assert_ldouble_nan(X) _ck_assert_floating_nan(X, long double, "L")
1425 #define ck_assert_ldouble_nonnan(X) _ck_assert_floating_nonnan(X, long double, "L")
1432 #define _ck_assert_str(X, OP, Y, NULLEQ, NULLNE) do { \
1433 const char* _ck_x = (X); \
1434 const char* _ck_y = (Y); \
1435 const char* _ck_x_s; \
1436 const char* _ck_y_s; \
1437 const char* _ck_x_q; \
1438 const char* _ck_y_q; \
1439 if (_ck_x != NULL) { \
1444 _ck_x_s = "(null)"; \
1446 if (_ck_y != NULL) { \
1451 _ck_y_s = "(null)"; \
1454 (NULLEQ && (_ck_x == NULL) && (_ck_y == NULL)) || \
1455 (NULLNE && ((_ck_x == NULL) || (_ck_y == NULL)) && (_ck_x != _ck_y)) || \
1456 ((_ck_x != NULL) && (_ck_y != NULL) && (0 OP strcmp(_ck_y, _ck_x))), \
1457 "Assertion '%s' failed: %s == %s%s%s, %s == %s%s%s", \
1459 #X, _ck_x_q, _ck_x_s, _ck_x_q, \
1460 #Y, _ck_y_q, _ck_y_s, _ck_y_q); \
1476 #define ck_assert_str_eq(X, Y) _ck_assert_str(X, ==, Y, 0, 0)
1491 #define ck_assert_str_ne(X, Y) _ck_assert_str(X, !=, Y, 0, 0)
1506 #define ck_assert_str_lt(X, Y) _ck_assert_str(X, <, Y, 0, 0)
1521 #define ck_assert_str_le(X, Y) _ck_assert_str(X, <=, Y, 0, 0)
1536 #define ck_assert_str_gt(X, Y) _ck_assert_str(X, >, Y, 0, 0)
1551 #define ck_assert_str_ge(X, Y) _ck_assert_str(X, >=, Y, 0, 0)
1567 #define ck_assert_pstr_eq(X, Y) _ck_assert_str(X, ==, Y, 1, 0)
1583 #define ck_assert_pstr_ne(X, Y) _ck_assert_str(X, !=, Y, 0, 1)
1589 #ifndef CK_MAX_ASSERT_MEM_PRINT_SIZE
1590 #define CK_MAX_ASSERT_MEM_PRINT_SIZE 64
1597 #ifndef CK_MAX_ASSERT_MEM_PRINT_SIZE
1598 #define CK_MAX_ASSERT_MEM_PRINT_SIZE 64
1601 #define _ck_assert_mem(X, OP, Y, L) do { \
1602 const uint8_t* _ck_x = (const uint8_t*)(X); \
1603 const uint8_t* _ck_y = (const uint8_t*)(Y); \
1604 size_t _ck_l = (L); \
1605 char _ck_x_str[CK_MAX_ASSERT_MEM_PRINT_SIZE * 2 + 1]; \
1606 char _ck_y_str[CK_MAX_ASSERT_MEM_PRINT_SIZE * 2 + 1]; \
1607 static const char _ck_hexdigits[] = "0123456789abcdef"; \
1609 size_t _ck_maxl = (_ck_l > CK_MAX_ASSERT_MEM_PRINT_SIZE) ? CK_MAX_ASSERT_MEM_PRINT_SIZE : _ck_l; \
1610 for (_ck_i = 0; _ck_i < _ck_maxl; _ck_i++) { \
1611 _ck_x_str[_ck_i * 2 ] = _ck_hexdigits[(_ck_x[_ck_i] >> 4) & 0xF]; \
1612 _ck_y_str[_ck_i * 2 ] = _ck_hexdigits[(_ck_y[_ck_i] >> 4) & 0xF]; \
1613 _ck_x_str[_ck_i * 2 + 1] = _ck_hexdigits[_ck_x[_ck_i] & 0xF]; \
1614 _ck_y_str[_ck_i * 2 + 1] = _ck_hexdigits[_ck_y[_ck_i] & 0xF]; \
1616 _ck_x_str[_ck_i * 2] = 0; \
1617 _ck_y_str[_ck_i * 2] = 0; \
1618 if (_ck_maxl != _ck_l) { \
1619 _ck_x_str[_ck_i * 2 - 2] = '.'; \
1620 _ck_y_str[_ck_i * 2 - 2] = '.'; \
1621 _ck_x_str[_ck_i * 2 - 1] = '.'; \
1622 _ck_y_str[_ck_i * 2 - 1] = '.'; \
1624 ck_assert_msg(0 OP memcmp(_ck_y, _ck_x, _ck_l), \
1625 "Assertion '%s' failed: %s == \"%s\", %s == \"%s\"", #X" "#OP" "#Y, #X, _ck_x_str, #Y, _ck_y_str); \
1639 #define ck_assert_mem_eq(X, Y, L) _ck_assert_mem(X, ==, Y, L)
1652 #define ck_assert_mem_ne(X, Y, L) _ck_assert_mem(X, !=, Y, L)
1665 #define ck_assert_mem_lt(X, Y, L) _ck_assert_mem(X, <, Y, L)
1678 #define ck_assert_mem_le(X, Y, L) _ck_assert_mem(X, <=, Y, L)
1691 #define ck_assert_mem_gt(X, Y, L) _ck_assert_mem(X, >, Y, L)
1704 #define ck_assert_mem_ge(X, Y, L) _ck_assert_mem(X, >=, Y, L)
1708 #define _ck_assert_ptr(X, OP, Y) do { \
1709 const void* _ck_x = (X); \
1710 const void* _ck_y = (Y); \
1711 ck_assert_msg(_ck_x OP _ck_y, "Assertion '%s' failed: %s == %#x, %s == %#x", #X" "#OP" "#Y, #X, _ck_x, #Y, _ck_y); \
1717 #define _ck_assert_ptr_null(X, OP) do { \
1718 const void* _ck_x = (X); \
1719 ck_assert_msg(_ck_x OP NULL, \
1720 "Assertion '%s' failed: %s == %#x", \
1738 #define ck_assert_ptr_eq(X, Y) _ck_assert_ptr(X, ==, Y)
1750 #define ck_assert_ptr_ne(X, Y) _ck_assert_ptr(X, !=, Y)
1763 #define ck_assert_ptr_null(X) _ck_assert_ptr_null(X, ==)
1776 #define ck_assert_ptr_nonnull(X) _ck_assert_ptr_null(X, !=)
1788 #define mark_point() _mark_point(__FILE__,__LINE__)
1791 CK_DLL_EXP
void CK_EXPORT _mark_point(
const char *file,
int line);
2045 const char *include_tags,
2046 const char *exclude_tags,
fork_status
Definition: check.h:2247
@ CK_LAST
Definition: check.h:1822
CK_DLL_EXP pid_t CK_EXPORT check_fork(void)
TFun fn
Definition: check.h:153
const CK_DLL_EXP char *CK_EXPORT srunner_xml_fname(SRunner *sr)
CK_DLL_EXP void CK_EXPORT srunner_set_fork_status(SRunner *sr, enum fork_status fstat)
const CK_DLL_EXP char *CK_EXPORT tr_lfile(TestResult *tr)
print_output
Definition: check.h:1808
@ CK_ENV
Definition: check.h:1814
@ CK_VERBOSE
Definition: check.h:1813
CK_DLL_EXP void CK_EXPORT suite_add_tcase(Suite *s, TCase *tc)
@ CK_SILENT
Definition: check.h:1810
@ CK_PASS
Definition: check.h:1799
CK_DLL_EXP void CK_EXPORT check_set_max_msg_size(size_t max_msg_size)
CK_DLL_EXP int CK_EXPORT suite_tcase(Suite *s, const char *tcname)
CK_DLL_EXP int CK_EXPORT tr_rtype(TestResult *tr)
CK_DLL_EXP int CK_EXPORT tr_lno(TestResult *tr)
void(* SFun)(void)
Definition: check.h:141
test_result
Definition: check.h:1796
CK_DLL_EXP void CK_EXPORT srunner_run(SRunner *sr, const char *sname, const char *tcname, enum print_output print_mode)
CK_DLL_EXP void CK_EXPORT srunner_run_tagged(SRunner *sr, const char *sname, const char *tcname, const char *include_tags, const char *exclude_tags, enum print_output print_mode)
CK_DLL_EXP void CK_EXPORT srunner_set_log(SRunner *sr, const char *fname)
CK_DLL_EXP int CK_EXPORT srunner_ntests_failed(SRunner *sr)
CK_DLL_EXP Suite *CK_EXPORT suite_create(const char *name)
@ CK_CTX_TEST
Definition: check.h:1842
@ CK_FORK
Definition: check.h:2250
@ CK_FAILURE
Definition: check.h:1800
CK_DLL_EXP int CK_EXPORT srunner_ntests_run(SRunner *sr)
const char * file
Definition: check.h:154
@ CK_NORMAL
Definition: check.h:1812
@ CK_CTX_SETUP
Definition: check.h:1841
CK_DLL_EXP void CK_EXPORT srunner_print(SRunner *sr, enum print_output print_mode)
CK_DLL_EXP void CK_EXPORT check_waitpid_and_exit(pid_t pid) CK_ATTRIBUTE_NORETURN
struct SRunner SRunner
Definition: check.h:1828
CK_DLL_EXP TestResult **CK_EXPORT srunner_results(SRunner *sr)
struct TCase TCase
Definition: check.h:131
struct Suite Suite
Definition: check.h:146
CK_DLL_EXP enum fork_status CK_EXPORT srunner_fork_status(SRunner *sr)
CK_DLL_EXP void CK_EXPORT tcase_add_checked_fixture(TCase *tc, SFun setup, SFun teardown)
@ CK_FORK_GETENV
Definition: check.h:2249
CK_DLL_EXP void CK_EXPORT srunner_free(SRunner *sr)
@ CK_TEST_RESULT_INVALID
Definition: check.h:1798
CK_DLL_EXP void CK_EXPORT srunner_add_suite(SRunner *sr, Suite *s)
CK_DLL_EXP void CK_EXPORT srunner_set_xml(SRunner *sr, const char *fname)
int line
Definition: check.h:155
CK_DLL_EXP int CK_EXPORT srunner_has_tap(SRunner *sr)
@ CK_NOFORK
Definition: check.h:2251
const CK_DLL_EXP char *CK_EXPORT tr_tcname(TestResult *tr)
const CK_DLL_EXP char *CK_EXPORT tr_msg(TestResult *tr)
CK_DLL_EXP void CK_EXPORT srunner_set_tap(SRunner *sr, const char *fname)
const CK_DLL_EXP char *CK_EXPORT srunner_tap_fname(SRunner *sr)
@ CK_CTX_TEARDOWN
Definition: check.h:1843
ck_result_ctx
Definition: check.h:1838
@ CK_CTX_INVALID
Definition: check.h:1840
CK_DLL_EXP void CK_EXPORT tcase_fn_start(const char *fname, const char *file, int line)
CK_DLL_EXP TCase *CK_EXPORT tcase_create(const char *name)
CK_DLL_EXP int CK_EXPORT srunner_has_log(SRunner *sr)
CK_DLL_EXP enum ck_result_ctx CK_EXPORT tr_ctx(TestResult *tr)
CK_DLL_EXP SRunner *CK_EXPORT srunner_create(Suite *s)
CK_DLL_EXP void CK_EXPORT tcase_add_unchecked_fixture(TCase *tc, SFun setup, SFun teardown)
CK_DLL_EXP TestResult **CK_EXPORT srunner_failures(SRunner *sr)
CK_DLL_EXP int CK_EXPORT srunner_has_xml(SRunner *sr)
const char * name
Definition: check.h:152
@ CK_ERROR
Definition: check.h:1801
const CK_DLL_EXP char *CK_EXPORT srunner_log_fname(SRunner *sr)
@ CK_MINIMAL
Definition: check.h:1811
CK_DLL_EXP void CK_EXPORT tcase_set_timeout(TCase *tc, double timeout)
CK_DLL_EXP void CK_EXPORT srunner_run_all(SRunner *sr, enum print_output print_mode)
struct TestResult TestResult
Definition: check.h:1833
CK_DLL_EXP void CK_EXPORT tcase_set_tags(TCase *tc, const char *tags)
void(* TFun)(int)
Definition: check.h:136
const CK_DLL_EXP char *CK_EXPORT tcase_name(void)