2 * Check: a unit test framework for C
3 * Copyright (C) 2001, 2002 Arien Malec
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2.1 of the License, or (at your option) any later version.
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, write to the
17 * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
21 #include "../lib/libcompat.h"
23 #include <sys/types.h>
27 #include "check_check.h"
32 record_test_name(tcase_name());
34 record_failure_line_num(__LINE__);
35 ck_abort_msg("Failure expected");
39 #if defined(HAVE_FORK) && HAVE_FORK==1
40 START_TEST(test_mark_lno)
42 record_test_name(tcase_name());
44 record_failure_line_num(__LINE__);
46 exit(EXIT_FAILURE); /* should fail with mark_point above as line */
49 #endif /* HAVE_FORK */
53 record_test_name(tcase_name());
55 ck_assert_msg(1 == 1, "This test should pass");
56 ck_assert_msg(9999, "This test should pass");
60 START_TEST(test_fail_unless)
62 record_test_name(tcase_name());
64 record_failure_line_num(__LINE__);
65 fail_unless(1 == 2, "This test should fail");
69 START_TEST(test_fail_if_pass)
71 record_test_name(tcase_name());
73 fail_if(1 == 2, "This test should pass");
74 fail_if(0, "This test should pass");
78 START_TEST(test_fail_if_fail)
80 record_test_name(tcase_name());
82 record_failure_line_num(__LINE__);
83 fail_if(1 == 1, "This test should fail");
87 START_TEST(test_fail_null_msg)
89 record_test_name(tcase_name());
91 record_failure_line_num(__LINE__);
92 fail_unless(2 == 3, NULL);
97 START_TEST(test_fail_no_msg)
99 record_test_name(tcase_name());
101 /* taking out the NULL provokes an ISO C99 warning in GCC */
102 record_failure_line_num(__LINE__);
103 fail_unless(4 == 5, NULL);
106 #endif /* __GNUC__ */
107 START_TEST(test_fail_if_null_msg)
109 record_test_name(tcase_name());
111 record_failure_line_num(__LINE__);
112 fail_if(2 != 3, NULL);
116 #if defined(__GNUC__)
117 START_TEST(test_fail_if_no_msg)
119 record_test_name(tcase_name());
121 /* taking out the NULL provokes an ISO C99 warning in GCC */
122 record_failure_line_num(__LINE__);
123 fail_if(4 != 5, NULL);
126 #endif /* __GNUC__ */
127 START_TEST(test_fail_vararg_msg_1)
132 record_test_name(tcase_name());
134 record_failure_line_num(__LINE__);
135 fail_unless(x == y, "%d != %d", x, y);
139 START_TEST(test_fail_vararg_msg_2)
144 record_test_name(tcase_name());
146 record_failure_line_num(__LINE__);
147 fail_if(x != y, "%d != %d", x, y);
151 START_TEST(test_fail_vararg_msg_3)
156 record_test_name(tcase_name());
158 record_failure_line_num(__LINE__);
159 fail("%d == %d", x, y);
163 #if defined(__GNUC__)
164 START_TEST(test_fail_empty)
166 record_test_name(tcase_name());
168 /* plain fail() doesn't compile with xlc in C mode because of `, ## __VA_ARGS__' problem */
169 /* on the other hand, taking out the NULL provokes an ISO C99 warning in GCC */
170 record_failure_line_num(__LINE__);
174 #endif /* __GNUC__ */
176 START_TEST(test_ck_abort)
178 record_test_name(tcase_name());
180 record_failure_line_num(__LINE__);
185 START_TEST(test_ck_abort_msg)
187 record_test_name(tcase_name());
189 record_failure_line_num(__LINE__);
190 ck_abort_msg("Failure expected");
194 /* FIXME: perhaps passing NULL to ck_abort_msg should be an error. */
195 START_TEST(test_ck_abort_msg_null)
197 record_test_name(tcase_name());
199 record_failure_line_num(__LINE__);
204 /* These ck_assert tests are all designed to fail on the last
207 START_TEST(test_ck_assert)
212 record_test_name(tcase_name());
218 record_failure_line_num(__LINE__);
223 START_TEST(test_ck_assert_null)
225 record_test_name(tcase_name());
227 record_failure_line_num(__LINE__);
232 START_TEST(test_ck_assert_with_mod)
236 record_test_name(tcase_name());
238 record_failure_line_num(__LINE__);
243 START_TEST(test_ck_assert_int_eq)
248 record_test_name(tcase_name());
250 ck_assert_int_eq(x, y);
252 record_failure_line_num(__LINE__);
253 ck_assert_int_eq(x, y);
257 START_TEST(test_ck_assert_int_eq_with_mod)
262 record_test_name(tcase_name());
264 record_failure_line_num(__LINE__);
265 ck_assert_int_eq(3%d, 2%f);
269 START_TEST(test_ck_assert_int_ne)
274 record_test_name(tcase_name());
276 ck_assert_int_ne(x, y);
278 record_failure_line_num(__LINE__);
279 ck_assert_int_ne(x, y);
283 START_TEST(test_ck_assert_int_ne_with_mod)
288 record_test_name(tcase_name());
290 record_failure_line_num(__LINE__);
291 ck_assert_int_ne(3%d, 3%f);
295 START_TEST(test_ck_assert_int_lt)
300 record_test_name(tcase_name());
302 ck_assert_int_lt(x, y);
303 record_failure_line_num(__LINE__);
304 ck_assert_int_lt(x, x);
308 START_TEST(test_ck_assert_int_lt_with_mod)
313 record_test_name(tcase_name());
315 record_failure_line_num(__LINE__);
316 ck_assert_int_lt(3%d, 3%f);
320 START_TEST(test_ck_assert_int_le)
325 record_test_name(tcase_name());
327 ck_assert_int_le(x, y);
328 ck_assert_int_le(x, x);
329 record_failure_line_num(__LINE__);
330 ck_assert_int_le(y, x);
334 START_TEST(test_ck_assert_int_le_with_mod)
339 record_test_name(tcase_name());
341 record_failure_line_num(__LINE__);
342 ck_assert_int_le(3%d, 2%f);
346 START_TEST(test_ck_assert_int_gt)
351 record_test_name(tcase_name());
353 ck_assert_int_gt(y, x);
354 record_failure_line_num(__LINE__);
355 ck_assert_int_gt(y, y);
359 START_TEST(test_ck_assert_int_gt_with_mod)
364 record_test_name(tcase_name());
366 record_failure_line_num(__LINE__);
367 ck_assert_int_gt(3%d, 3%f);
371 START_TEST(test_ck_assert_int_ge)
376 record_test_name(tcase_name());
378 ck_assert_int_ge(y, x);
379 ck_assert_int_ge(y, x);
380 record_failure_line_num(__LINE__);
381 ck_assert_int_ge(x, y);
385 START_TEST(test_ck_assert_int_ge_with_mod)
390 record_test_name(tcase_name());
392 record_failure_line_num(__LINE__);
393 ck_assert_int_ge(3%d, 4%f);
397 START_TEST(test_ck_assert_int_expr)
402 record_test_name(tcase_name());
404 ck_assert_int_eq(x, ++y);
405 ck_assert_int_eq(x, y);
408 START_TEST(test_ck_assert_uint_eq)
413 record_test_name(tcase_name());
415 ck_assert_uint_eq(x, y);
417 record_failure_line_num(__LINE__);
418 ck_assert_uint_eq(x, y);
422 START_TEST(test_ck_assert_uint_eq_with_mod)
427 record_test_name(tcase_name());
429 record_failure_line_num(__LINE__);
430 ck_assert_uint_eq(3%d, 1%f);
434 START_TEST(test_ck_assert_uint_ne)
439 record_test_name(tcase_name());
441 ck_assert_uint_ne(x, y);
443 record_failure_line_num(__LINE__);
444 ck_assert_uint_ne(x, y);
448 START_TEST(test_ck_assert_uint_ne_with_mod)
453 record_test_name(tcase_name());
455 record_failure_line_num(__LINE__);
456 ck_assert_uint_ne(1%d, 1%f);
460 START_TEST(test_ck_assert_uint_lt)
465 record_test_name(tcase_name());
467 ck_assert_uint_lt(x, y);
468 record_failure_line_num(__LINE__);
469 ck_assert_uint_lt(x, x);
473 START_TEST(test_ck_assert_uint_lt_with_mod)
478 record_test_name(tcase_name());
480 record_failure_line_num(__LINE__);
481 ck_assert_uint_lt(3%d, 1%f);
485 START_TEST(test_ck_assert_uint_le)
490 record_test_name(tcase_name());
492 ck_assert_uint_le(x, y);
493 ck_assert_uint_le(x, x);
494 record_failure_line_num(__LINE__);
495 ck_assert_uint_le(y, x);
499 START_TEST(test_ck_assert_uint_le_with_mod)
504 record_test_name(tcase_name());
506 record_failure_line_num(__LINE__);
507 ck_assert_uint_le(3%d, 1%f);
511 START_TEST(test_ck_assert_uint_gt)
516 record_test_name(tcase_name());
518 ck_assert_uint_gt(y, x);
519 record_failure_line_num(__LINE__);
520 ck_assert_uint_gt(y, y);
524 START_TEST(test_ck_assert_uint_gt_with_mod)
529 record_test_name(tcase_name());
531 record_failure_line_num(__LINE__);
532 ck_assert_uint_gt(1%d, 3%f);
536 START_TEST(test_ck_assert_uint_ge)
541 record_test_name(tcase_name());
543 ck_assert_uint_ge(y, x);
544 ck_assert_uint_ge(y, x);
545 record_failure_line_num(__LINE__);
546 ck_assert_uint_ge(x, y);
550 START_TEST(test_ck_assert_uint_ge_with_mod)
555 record_test_name(tcase_name());
557 record_failure_line_num(__LINE__);
558 ck_assert_uint_ge(1%d, 3%f);
562 START_TEST(test_ck_assert_uint_expr)
567 record_test_name(tcase_name());
569 ck_assert_uint_eq(x, ++y);
570 ck_assert_uint_eq(x, y);
573 START_TEST(test_ck_assert_float_eq)
578 record_test_name(tcase_name());
580 ck_assert_float_eq(x, y);
582 record_failure_line_num(__LINE__);
583 ck_assert_float_eq(x, y);
587 START_TEST(test_ck_assert_float_eq_with_mod)
592 record_test_name(tcase_name());
594 record_failure_line_num(__LINE__);
595 ck_assert_float_eq(3%d, 2%f);
599 START_TEST(test_ck_assert_float_ne)
604 record_test_name(tcase_name());
606 ck_assert_float_ne(x, y);
608 record_failure_line_num(__LINE__);
609 ck_assert_float_ne(x, y);
613 START_TEST(test_ck_assert_float_ne_with_mod)
618 record_test_name(tcase_name());
620 record_failure_line_num(__LINE__);
621 ck_assert_float_ne(1%d, 1%f);
625 START_TEST(test_ck_assert_float_lt)
630 record_test_name(tcase_name());
632 ck_assert_float_lt(x, y);
634 record_failure_line_num(__LINE__);
635 ck_assert_float_lt(x, y);
639 START_TEST(test_ck_assert_float_lt_with_mod)
644 record_test_name(tcase_name());
646 record_failure_line_num(__LINE__);
647 ck_assert_float_lt(3%d, 2%f);
651 START_TEST(test_ck_assert_float_le)
656 record_test_name(tcase_name());
658 ck_assert_float_le(x, y);
659 ck_assert_float_le(x, x);
661 record_failure_line_num(__LINE__);
662 ck_assert_float_le(x, y);
666 START_TEST(test_ck_assert_float_le_with_mod)
671 record_test_name(tcase_name());
673 record_failure_line_num(__LINE__);
674 ck_assert_float_le(3%d, 2%f);
678 START_TEST(test_ck_assert_float_gt)
683 record_test_name(tcase_name());
685 ck_assert_float_gt(x, y);
687 record_failure_line_num(__LINE__);
688 ck_assert_float_gt(x, y);
692 START_TEST(test_ck_assert_float_gt_with_mod)
697 record_test_name(tcase_name());
699 record_failure_line_num(__LINE__);
700 ck_assert_float_gt(2%d, 3%f);
704 START_TEST(test_ck_assert_float_ge)
709 record_test_name(tcase_name());
711 ck_assert_float_ge(x, y);
712 ck_assert_float_ge(x, x);
714 record_failure_line_num(__LINE__);
715 ck_assert_float_ge(x, y);
719 START_TEST(test_ck_assert_float_ge_with_mod)
724 record_test_name(tcase_name());
726 record_failure_line_num(__LINE__);
727 ck_assert_float_ge(2%d, 3%f);
731 START_TEST(test_ck_assert_float_with_expr)
733 float x[] = {NAN, 1.1f, 1.1f, 1.2f, 1.2f, NAN};
737 record_test_name(tcase_name());
740 ck_assert_float_eq(x[i++], y);
741 ck_assert_float_eq(x[i++], y);
744 ck_assert_float_ne(x[i--], y);
745 ck_assert_float_ne(x[i--], y);
750 ck_assert_float_le(x[i++], y);
751 ck_assert_float_le(x[i++], y);
754 ck_assert_float_lt(x[i++], y);
755 ck_assert_float_lt(x[i++], y);
758 ck_assert_float_gt(x[i--], y);
759 ck_assert_float_gt(x[i--], y);
762 ck_assert_float_ge(x[i--], y);
763 ck_assert_float_ge(x[i--], y);
767 START_TEST(test_ck_assert_float_eq_tol)
773 record_test_name(tcase_name());
775 ck_assert_float_eq_tol(x, y, t);
776 ck_assert_float_eq_tol(x, x, t);
780 ck_assert_float_eq_tol(x, y, t);
782 record_failure_line_num(__LINE__);
783 ck_assert_float_eq_tol(x, y, t);
787 START_TEST(test_ck_assert_float_eq_tol_with_mod)
793 record_test_name(tcase_name());
795 record_failure_line_num(__LINE__);
796 ck_assert_float_eq_tol(3%d, 2%f, 2%p);
800 START_TEST(test_ck_assert_float_ne_tol)
806 record_test_name(tcase_name());
808 ck_assert_float_ne_tol(x, y, t);
812 ck_assert_float_ne_tol(x, y, t);
814 record_failure_line_num(__LINE__);
815 ck_assert_float_ne_tol(x, y, t);
819 START_TEST(test_ck_assert_float_ne_tol_with_mod)
825 record_test_name(tcase_name());
827 record_failure_line_num(__LINE__);
828 ck_assert_float_ne_tol(3%d, 3%f, 3%p);
832 START_TEST(test_ck_assert_float_ge_tol)
838 record_test_name(tcase_name());
840 ck_assert_float_ge_tol(y, x, t);
841 ck_assert_float_ge_tol(x, x, t);
842 ck_assert_float_ge_tol(y, y, t);
846 ck_assert_float_ge_tol(y, x, t);
847 ck_assert_float_ge_tol(x, x, t);
848 ck_assert_float_ge_tol(y, y, t);
849 record_failure_line_num(__LINE__);
850 ck_assert_float_ge_tol(x, y, t);
854 START_TEST(test_ck_assert_float_ge_tol_with_mod)
860 record_test_name(tcase_name());
862 record_failure_line_num(__LINE__);
863 ck_assert_float_ge_tol(2%d, 3%f, 3%p);
867 START_TEST(test_ck_assert_float_le_tol)
873 record_test_name(tcase_name());
875 ck_assert_float_le_tol(x, y, t);
876 ck_assert_float_le_tol(x, x, t);
877 ck_assert_float_le_tol(y, y, t);
881 ck_assert_float_le_tol(x, y, t);
882 ck_assert_float_le_tol(x, x, t);
883 ck_assert_float_le_tol(y, y, t);
884 record_failure_line_num(__LINE__);
885 ck_assert_float_le_tol(y, x, t);
889 START_TEST(test_ck_assert_float_le_tol_with_mod)
895 record_test_name(tcase_name());
897 record_failure_line_num(__LINE__);
898 ck_assert_float_le_tol(3%d, 2%f, 3%p);
902 START_TEST(test_ck_assert_float_tol_with_expr)
904 float x[] = {NAN, 1.1f, 1.1f, 1.2f, 1.2f, NAN};
909 record_test_name(tcase_name());
912 ck_assert_float_eq_tol(x[i++], y, t);
913 ck_assert_float_eq_tol(x[i++], y, t);
916 ck_assert_float_ne_tol(x[i--], y, t);
917 ck_assert_float_ne_tol(x[i--], y, t);
922 ck_assert_float_le_tol(x[i++], y, t);
923 ck_assert_float_le_tol(x[i++], y, t);
926 ck_assert_float_ge_tol(x[i--], y, t);
927 ck_assert_float_ge_tol(x[i--], y, t);
931 START_TEST(test_ck_assert_float_finite)
936 record_test_name(tcase_name());
938 ck_assert_float_finite(x);
939 /* MS VS doesn't allow explicit division by zero */
940 x = 1.0f / (1.0f - t);
941 record_failure_line_num(__LINE__);
942 ck_assert_float_finite(x);
946 START_TEST(test_ck_assert_float_finite_with_mod)
950 float x = 1.0f / (1.0f - t);
952 record_test_name(tcase_name());
954 record_failure_line_num(__LINE__);
955 ck_assert_float_finite(x*(1%d));
959 START_TEST(test_ck_assert_float_infinite)
962 float x = 1.0f / (1.0f - t);
964 record_test_name(tcase_name());
966 ck_assert_float_infinite(x);
967 x = -1.0f / (1.0f - t);
968 ck_assert_float_infinite(x);
970 record_failure_line_num(__LINE__);
971 ck_assert_float_infinite(x);
975 START_TEST(test_ck_assert_float_infinite_with_mod)
979 record_test_name(tcase_name());
981 record_failure_line_num(__LINE__);
982 ck_assert_float_infinite(2%d);
986 START_TEST(test_ck_assert_float_nan)
989 float x = 0.0f / (1.0f - t);
991 record_test_name(tcase_name());
993 ck_assert_float_nan(x);
994 x = 1.0f / (1.0f - t);
995 record_failure_line_num(__LINE__);
996 ck_assert_float_nan(x);
1000 START_TEST(test_ck_assert_float_nan_with_mod)
1004 record_test_name(tcase_name());
1006 record_failure_line_num(__LINE__);
1007 ck_assert_float_nan(2%d);
1011 START_TEST(test_ck_assert_float_nonnan)
1016 record_test_name(tcase_name());
1018 ck_assert_float_nonnan(x);
1020 x = 0.0f / (1.0f - t);
1021 record_failure_line_num(__LINE__);
1022 ck_assert_float_nonnan(x);
1024 (void)t; /* unused */
1029 START_TEST(test_ck_assert_float_nonnan_with_mod)
1035 record_test_name(tcase_name());
1037 ck_assert_float_nonnan(2%s);
1039 x = 0.0f / (1.0f - t);
1040 record_failure_line_num(__LINE__);
1041 ck_assert_float_nonnan((2%s)*x);
1043 (void)x; /* unused */
1044 (void)t; /* unused */
1049 START_TEST(test_ck_assert_float_nan_and_inf_with_expr)
1051 float x[] = {0.0f, 0.0f, INFINITY, INFINITY, NAN, NAN, 0.0f, 0.0f, NAN};
1054 record_test_name(tcase_name());
1056 ck_assert_float_finite(x[i++]);
1057 ck_assert_float_finite(x[i++]);
1058 ck_assert_float_infinite(x[i++]);
1059 ck_assert_float_infinite(x[i++]);
1060 ck_assert_float_nan(x[i++]);
1061 ck_assert_float_nan(x[i++]);
1062 ck_assert_float_nonnan(x[i++]);
1063 ck_assert_float_nonnan(x[i++]);
1067 START_TEST(test_ck_assert_double_eq)
1072 record_test_name(tcase_name());
1074 ck_assert_double_eq(x, y);
1076 record_failure_line_num(__LINE__);
1077 ck_assert_double_eq(x, y);
1081 START_TEST(test_ck_assert_double_eq_with_mod)
1086 record_test_name(tcase_name());
1088 record_failure_line_num(__LINE__);
1089 ck_assert_double_eq(3%d, 2%f);
1093 START_TEST(test_ck_assert_double_eq_with_promotion)
1098 record_test_name(tcase_name());
1100 ck_assert_double_eq(x, y);
1104 START_TEST(test_ck_assert_double_eq_with_conv)
1108 record_test_name(tcase_name());
1110 record_failure_line_num(__LINE__);
1111 ck_assert_double_eq(x, 0.1);
1115 START_TEST(test_ck_assert_double_ne)
1120 record_test_name(tcase_name());
1122 ck_assert_double_ne(x, y);
1124 record_failure_line_num(__LINE__);
1125 ck_assert_double_ne(x, y);
1129 START_TEST(test_ck_assert_double_ne_with_mod)
1134 record_test_name(tcase_name());
1136 record_failure_line_num(__LINE__);
1137 ck_assert_double_ne(1%d, 1%f);
1141 START_TEST(test_ck_assert_double_lt)
1146 record_test_name(tcase_name());
1148 ck_assert_double_lt(x, y);
1150 record_failure_line_num(__LINE__);
1151 ck_assert_double_lt(x, y);
1155 START_TEST(test_ck_assert_double_lt_with_mod)
1160 record_test_name(tcase_name());
1162 record_failure_line_num(__LINE__);
1163 ck_assert_double_lt(3%d, 2%f);
1167 START_TEST(test_ck_assert_double_le)
1172 record_test_name(tcase_name());
1174 ck_assert_double_le(x, y);
1175 ck_assert_double_le(x, x);
1177 record_failure_line_num(__LINE__);
1178 ck_assert_double_le(x, y);
1182 START_TEST(test_ck_assert_double_le_with_mod)
1187 record_test_name(tcase_name());
1189 record_failure_line_num(__LINE__);
1190 ck_assert_double_le(3%d, 2%f);
1194 START_TEST(test_ck_assert_double_gt)
1199 record_test_name(tcase_name());
1201 ck_assert_double_gt(x, y);
1203 record_failure_line_num(__LINE__);
1204 ck_assert_double_gt(x, y);
1208 START_TEST(test_ck_assert_double_gt_with_mod)
1213 record_test_name(tcase_name());
1215 record_failure_line_num(__LINE__);
1216 ck_assert_double_gt(2%d, 3%f);
1220 START_TEST(test_ck_assert_double_ge)
1225 record_test_name(tcase_name());
1227 ck_assert_double_ge(x, y);
1228 ck_assert_double_ge(x, x);
1230 record_failure_line_num(__LINE__);
1231 ck_assert_double_ge(x, y);
1235 START_TEST(test_ck_assert_double_ge_with_mod)
1240 record_test_name(tcase_name());
1242 record_failure_line_num(__LINE__);
1243 ck_assert_double_ge(2%d, 3%f);
1247 START_TEST(test_ck_assert_double_with_expr)
1249 double x[] = {NAN, 1.1, 1.1, 1.2, 1.2, NAN};
1253 record_test_name(tcase_name());
1256 ck_assert_double_eq(x[i++], y);
1257 ck_assert_double_eq(x[i++], y);
1260 ck_assert_double_ne(x[i--], y);
1261 ck_assert_double_ne(x[i--], y);
1266 ck_assert_double_le(x[i++], y);
1267 ck_assert_double_le(x[i++], y);
1270 ck_assert_double_lt(x[i++], y);
1271 ck_assert_double_lt(x[i++], y);
1274 ck_assert_double_gt(x[i--], y);
1275 ck_assert_double_gt(x[i--], y);
1278 ck_assert_double_ge(x[i--], y);
1279 ck_assert_double_ge(x[i--], y);
1283 START_TEST(test_ck_assert_double_eq_tol)
1289 record_test_name(tcase_name());
1291 ck_assert_double_eq_tol(x, y, t);
1292 ck_assert_double_eq_tol(x, x, t);
1296 ck_assert_double_eq_tol(x, y, t);
1298 record_failure_line_num(__LINE__);
1299 ck_assert_double_eq_tol(x, y, t);
1303 START_TEST(test_ck_assert_double_eq_tol_with_mod)
1309 record_test_name(tcase_name());
1311 record_failure_line_num(__LINE__);
1312 ck_assert_double_eq_tol(3%d, 2%f, 2%p);
1316 START_TEST(test_ck_assert_double_ne_tol)
1322 record_test_name(tcase_name());
1324 ck_assert_double_ne_tol(x, y, t);
1328 ck_assert_double_ne_tol(x, y, t);
1330 record_failure_line_num(__LINE__);
1331 ck_assert_double_ne_tol(x, y, t);
1335 START_TEST(test_ck_assert_double_ne_tol_with_mod)
1341 record_test_name(tcase_name());
1343 record_failure_line_num(__LINE__);
1344 ck_assert_double_ne_tol(3%d, 3%f, 3%p);
1348 START_TEST(test_ck_assert_double_ge_tol)
1354 record_test_name(tcase_name());
1356 ck_assert_double_ge_tol(y, x, t);
1357 ck_assert_double_ge_tol(x, x, t);
1358 ck_assert_double_ge_tol(y, y, t);
1362 ck_assert_double_ge_tol(y, x, t);
1363 ck_assert_double_ge_tol(x, x, t);
1364 ck_assert_double_ge_tol(y, y, t);
1365 record_failure_line_num(__LINE__);
1366 ck_assert_double_ge_tol(x, y, t);
1370 START_TEST(test_ck_assert_double_ge_tol_with_mod)
1376 record_test_name(tcase_name());
1378 record_failure_line_num(__LINE__);
1379 ck_assert_double_ge_tol(2%d, 3%f, 3%p);
1383 START_TEST(test_ck_assert_double_le_tol)
1389 record_test_name(tcase_name());
1391 ck_assert_double_le_tol(x, y, t);
1392 ck_assert_double_le_tol(x, x, t);
1393 ck_assert_double_le_tol(y, y, t);
1397 ck_assert_double_le_tol(x, y, t);
1398 ck_assert_double_le_tol(x, x, t);
1399 ck_assert_double_le_tol(y, y, t);
1400 record_failure_line_num(__LINE__);
1401 ck_assert_double_le_tol(y, x, t);
1405 START_TEST(test_ck_assert_double_le_tol_with_mod)
1411 record_test_name(tcase_name());
1413 record_failure_line_num(__LINE__);
1414 ck_assert_double_le_tol(3%d, 2%f, 3%p);
1418 START_TEST(test_ck_assert_double_tol_with_expr)
1420 double x[] = {NAN, 1.1, 1.1, 1.2, 1.2, NAN};
1425 record_test_name(tcase_name());
1428 ck_assert_double_eq_tol(x[i++], y, t);
1429 ck_assert_double_eq_tol(x[i++], y, t);
1432 ck_assert_double_ne_tol(x[i--], y, t);
1433 ck_assert_double_ne_tol(x[i--], y, t);
1438 ck_assert_double_le_tol(x[i++], y, t);
1439 ck_assert_double_le_tol(x[i++], y, t);
1442 ck_assert_double_ge_tol(x[i--], y, t);
1443 ck_assert_double_ge_tol(x[i--], y, t);
1447 START_TEST(test_ck_assert_double_finite)
1452 record_test_name(tcase_name());
1454 ck_assert_double_finite(x);
1455 /* MS VS doesn't allow explicit division by zero */
1456 x = 1.0 / (1.0 - t);
1457 record_failure_line_num(__LINE__);
1458 ck_assert_double_finite(x);
1462 START_TEST(test_ck_assert_double_finite_with_mod)
1466 double x = 1.0 / (1.0 - t);
1468 record_test_name(tcase_name());
1470 record_failure_line_num(__LINE__);
1471 ck_assert_double_finite(x*(1%d));
1475 START_TEST(test_ck_assert_double_infinite)
1478 double x = 1.0 / (1.0 - t);
1480 record_test_name(tcase_name());
1482 ck_assert_double_infinite(x);
1483 x = -1.0 / (1.0 - t);
1484 ck_assert_double_infinite(x);
1486 record_failure_line_num(__LINE__);
1487 ck_assert_double_infinite(x);
1491 START_TEST(test_ck_assert_double_infinite_with_mod)
1495 record_test_name(tcase_name());
1497 record_failure_line_num(__LINE__);
1498 ck_assert_double_infinite(2%d);
1502 START_TEST(test_ck_assert_double_nan)
1505 double x = 0.0 / (1.0 - t);
1507 record_test_name(tcase_name());
1509 ck_assert_double_nan(x);
1510 x = 1.0 / (1.0 - t);
1511 record_failure_line_num(__LINE__);
1512 ck_assert_double_nan(x);
1516 START_TEST(test_ck_assert_double_nan_with_mod)
1520 record_test_name(tcase_name());
1522 record_failure_line_num(__LINE__);
1523 ck_assert_double_nan(2%d);
1527 START_TEST(test_ck_assert_double_nonnan)
1532 record_test_name(tcase_name());
1534 ck_assert_double_nonnan(x);
1536 x = 0.0 / (1.0 - t);
1537 record_failure_line_num(__LINE__);
1538 ck_assert_double_nonnan(x);
1540 (void)t; /* unused */
1545 START_TEST(test_ck_assert_double_nonnan_with_mod)
1551 record_test_name(tcase_name());
1553 ck_assert_double_nonnan(2%s);
1555 x = 0.0 / (1.0 - t);
1556 record_failure_line_num(__LINE__);
1557 ck_assert_double_nonnan((2%s)*x);
1559 (void)t; /* unused */
1560 (void)x; /* unused */
1565 START_TEST(test_ck_assert_double_nan_and_inf_with_expr)
1567 double x[] = {0.0, 0.0, INFINITY, INFINITY, NAN, NAN, 0.0, 0.0, NAN};
1570 record_test_name(tcase_name());
1572 ck_assert_double_finite(x[i++]);
1573 ck_assert_double_finite(x[i++]);
1574 ck_assert_double_infinite(x[i++]);
1575 ck_assert_double_infinite(x[i++]);
1576 ck_assert_double_nan(x[i++]);
1577 ck_assert_double_nan(x[i++]);
1578 ck_assert_double_nonnan(x[i++]);
1579 ck_assert_double_nonnan(x[i++]);
1583 START_TEST(test_ck_assert_ldouble_eq)
1585 long double x = 1.1l;
1586 long double y = 1.1l;
1588 record_test_name(tcase_name());
1590 ck_assert_ldouble_eq(x, y);
1592 record_failure_line_num(__LINE__);
1593 ck_assert_ldouble_eq(x, y);
1597 START_TEST(test_ck_assert_ldouble_eq_with_mod)
1602 record_test_name(tcase_name());
1604 record_failure_line_num(__LINE__);
1605 ck_assert_ldouble_eq(3%d, 2%f);
1609 START_TEST(test_ck_assert_ldouble_eq_with_promotion)
1614 record_test_name(tcase_name());
1616 ck_assert_ldouble_eq(x, y);
1620 START_TEST(test_ck_assert_ldouble_eq_with_conv)
1625 record_test_name(tcase_name());
1627 ck_assert_ldouble_eq(x, y);
1628 record_failure_line_num(__LINE__);
1629 ck_assert_ldouble_eq(x, 1.1);
1633 START_TEST(test_ck_assert_ldouble_ne)
1635 long double x = 1.1l;
1636 long double y = 1.2l;
1638 record_test_name(tcase_name());
1640 ck_assert_ldouble_ne(x, y);
1642 record_failure_line_num(__LINE__);
1643 ck_assert_ldouble_ne(x, y);
1647 START_TEST(test_ck_assert_ldouble_ne_with_mod)
1652 record_test_name(tcase_name());
1654 record_failure_line_num(__LINE__);
1655 ck_assert_ldouble_ne(1%d, 1%f);
1659 START_TEST(test_ck_assert_ldouble_lt)
1661 long double x = 2.0l;
1662 long double y = 2.5l;
1664 record_test_name(tcase_name());
1666 ck_assert_ldouble_lt(x, y);
1668 record_failure_line_num(__LINE__);
1669 ck_assert_ldouble_lt(x, y);
1673 START_TEST(test_ck_assert_ldouble_lt_with_mod)
1678 record_test_name(tcase_name());
1680 record_failure_line_num(__LINE__);
1681 ck_assert_ldouble_lt(3%d, 2%f);
1685 START_TEST(test_ck_assert_ldouble_le)
1687 long double x = 2.0l;
1688 long double y = 2.5l;
1690 record_test_name(tcase_name());
1692 ck_assert_ldouble_le(x, y);
1693 ck_assert_ldouble_le(x, x);
1695 record_failure_line_num(__LINE__);
1696 ck_assert_ldouble_le(x, y);
1700 START_TEST(test_ck_assert_ldouble_le_with_mod)
1705 record_test_name(tcase_name());
1707 record_failure_line_num(__LINE__);
1708 ck_assert_ldouble_le(3%d, 2%f);
1712 START_TEST(test_ck_assert_ldouble_gt)
1714 long double x = 2.5l;
1715 long double y = 2.0l;
1717 record_test_name(tcase_name());
1719 ck_assert_ldouble_gt(x, y);
1721 record_failure_line_num(__LINE__);
1722 ck_assert_ldouble_gt(x, y);
1726 START_TEST(test_ck_assert_ldouble_gt_with_mod)
1731 record_test_name(tcase_name());
1733 record_failure_line_num(__LINE__);
1734 ck_assert_ldouble_gt(2%d, 3%f);
1738 START_TEST(test_ck_assert_ldouble_ge)
1740 long double x = 2.5l;
1741 long double y = 2.0l;
1743 record_test_name(tcase_name());
1745 ck_assert_ldouble_ge(x, y);
1746 ck_assert_ldouble_ge(x, x);
1748 record_failure_line_num(__LINE__);
1749 ck_assert_ldouble_ge(x, y);
1753 START_TEST(test_ck_assert_ldouble_ge_with_mod)
1758 record_test_name(tcase_name());
1760 record_failure_line_num(__LINE__);
1761 ck_assert_ldouble_ge(2%d, 3%f);
1765 START_TEST(test_ck_assert_ldouble_with_expr)
1767 long double x[] = {NAN, 1.1l, 1.1l, 1.2l, 1.2l, NAN};
1768 long double y = 1.1l;
1771 record_test_name(tcase_name());
1774 ck_assert_ldouble_eq(x[i++], y);
1775 ck_assert_ldouble_eq(x[i++], y);
1778 ck_assert_ldouble_ne(x[i--], y);
1779 ck_assert_ldouble_ne(x[i--], y);
1784 ck_assert_ldouble_le(x[i++], y);
1785 ck_assert_ldouble_le(x[i++], y);
1788 ck_assert_ldouble_lt(x[i++], y);
1789 ck_assert_ldouble_lt(x[i++], y);
1792 ck_assert_ldouble_gt(x[i--], y);
1793 ck_assert_ldouble_gt(x[i--], y);
1796 ck_assert_ldouble_ge(x[i--], y);
1797 ck_assert_ldouble_ge(x[i--], y);
1801 START_TEST(test_ck_assert_ldouble_eq_tol)
1803 long double x = 0.0001l;
1804 long double y = 0.0002l;
1805 long double t = 0.001l;
1807 record_test_name(tcase_name());
1809 ck_assert_ldouble_eq_tol(x, y, t);
1810 ck_assert_ldouble_eq_tol(x, x, t);
1814 ck_assert_ldouble_eq_tol(x, y, t);
1816 record_failure_line_num(__LINE__);
1817 ck_assert_ldouble_eq_tol(x, y, t);
1821 START_TEST(test_ck_assert_ldouble_eq_tol_with_mod)
1827 record_test_name(tcase_name());
1829 record_failure_line_num(__LINE__);
1830 ck_assert_ldouble_eq_tol(3%d, 2%f, 2%p);
1834 START_TEST(test_ck_assert_ldouble_ne_tol)
1836 long double x = 0.0001l;
1837 long double y = 0.0002l;
1838 long double t = 0.0001l;
1840 record_test_name(tcase_name());
1842 ck_assert_ldouble_ne_tol(x, y, t);
1846 ck_assert_ldouble_ne_tol(x, y, t);
1848 record_failure_line_num(__LINE__);
1849 ck_assert_ldouble_ne_tol(x, y, t);
1853 START_TEST(test_ck_assert_ldouble_ne_tol_with_mod)
1859 record_test_name(tcase_name());
1861 record_failure_line_num(__LINE__);
1862 ck_assert_ldouble_ne_tol(3%d, 3%f, 3%p);
1866 START_TEST(test_ck_assert_ldouble_ge_tol)
1868 long double x = 0.001l;
1869 long double y = 0.003l;
1870 long double t = 0.001l;
1872 record_test_name(tcase_name());
1874 ck_assert_ldouble_ge_tol(y, x, t);
1875 ck_assert_ldouble_ge_tol(x, x, t);
1876 ck_assert_ldouble_ge_tol(y, y, t);
1880 ck_assert_ldouble_ge_tol(y, x, t);
1881 ck_assert_ldouble_ge_tol(x, x, t);
1882 ck_assert_ldouble_ge_tol(y, y, t);
1883 record_failure_line_num(__LINE__);
1884 ck_assert_ldouble_ge_tol(x, y, t);
1888 START_TEST(test_ck_assert_ldouble_ge_tol_with_mod)
1894 record_test_name(tcase_name());
1896 record_failure_line_num(__LINE__);
1897 ck_assert_ldouble_ge_tol(2%d, 3%f, 3%p);
1901 START_TEST(test_ck_assert_ldouble_le_tol)
1903 long double x = 0.001l;
1904 long double y = 0.003l;
1905 long double t = 0.001l;
1907 record_test_name(tcase_name());
1909 ck_assert_ldouble_le_tol(x, y, t);
1910 ck_assert_ldouble_le_tol(x, x, t);
1911 ck_assert_ldouble_le_tol(y, y, t);
1915 ck_assert_ldouble_le_tol(x, y, t);
1916 ck_assert_ldouble_le_tol(x, x, t);
1917 ck_assert_ldouble_le_tol(y, y, t);
1918 record_failure_line_num(__LINE__);
1919 ck_assert_ldouble_le_tol(y, x, t);
1923 START_TEST(test_ck_assert_ldouble_le_tol_with_mod)
1929 record_test_name(tcase_name());
1931 record_failure_line_num(__LINE__);
1932 ck_assert_ldouble_le_tol(3%d, 2%f, 3%p);
1936 START_TEST(test_ck_assert_ldouble_tol_with_expr)
1938 long double x[] = {NAN, 1.1l, 1.1l, 1.2l, 1.2l, NAN};
1939 long double y = 1.1l;
1940 long double t = 0.01l;
1943 record_test_name(tcase_name());
1946 ck_assert_ldouble_eq_tol(x[i++], y, t);
1947 ck_assert_ldouble_eq_tol(x[i++], y, t);
1950 ck_assert_ldouble_ne_tol(x[i--], y, t);
1951 ck_assert_ldouble_ne_tol(x[i--], y, t);
1956 ck_assert_ldouble_le_tol(x[i++], y, t);
1957 ck_assert_ldouble_le_tol(x[i++], y, t);
1960 ck_assert_ldouble_ge_tol(x[i--], y, t);
1961 ck_assert_ldouble_ge_tol(x[i--], y, t);
1965 START_TEST(test_ck_assert_ldouble_finite)
1967 long double x = 0.0001l;
1968 long double t = 1.0l;
1970 record_test_name(tcase_name());
1972 ck_assert_ldouble_finite(x);
1973 /* MS VS doesn't allow explicit division by zero */
1974 x = 1.0l / (1.0l - t);
1975 record_failure_line_num(__LINE__);
1976 ck_assert_ldouble_finite(x);
1980 START_TEST(test_ck_assert_ldouble_finite_with_mod)
1983 long double t = 1.0l;
1984 long double x = 1.0l / (1.0l - t);
1986 record_test_name(tcase_name());
1988 record_failure_line_num(__LINE__);
1989 ck_assert_ldouble_finite(x*(1%d));
1993 START_TEST(test_ck_assert_ldouble_infinite)
1995 long double t = 1.0l;
1996 long double x = 1.0l / (1.0l - t);
1998 record_test_name(tcase_name());
2000 ck_assert_ldouble_infinite(x);
2001 x = -1.0l / (1.0l - t);
2002 ck_assert_ldouble_infinite(x);
2004 record_failure_line_num(__LINE__);
2005 ck_assert_ldouble_infinite(x);
2009 START_TEST(test_ck_assert_ldouble_infinite_with_mod)
2013 record_test_name(tcase_name());
2015 record_failure_line_num(__LINE__);
2016 ck_assert_ldouble_infinite(2%d);
2020 START_TEST(test_ck_assert_ldouble_nan)
2022 long double t = 1.0l;
2023 long double x = 0.0l / (1.0l - t);
2025 record_test_name(tcase_name());
2027 ck_assert_ldouble_nan(x);
2028 x = 1.0l / (1.0l - t);
2029 record_failure_line_num(__LINE__);
2030 ck_assert_ldouble_nan(x);
2034 START_TEST(test_ck_assert_ldouble_nan_with_mod)
2038 record_test_name(tcase_name());
2040 record_failure_line_num(__LINE__);
2041 ck_assert_ldouble_nan(2%d);
2045 START_TEST(test_ck_assert_ldouble_nonnan)
2047 long double x = 0.0l;
2048 long double t = 1.0l;
2050 record_test_name(tcase_name());
2052 ck_assert_ldouble_nonnan(x);
2054 x = 0.0l / (1.0l - t);
2055 record_failure_line_num(__LINE__);
2056 ck_assert_ldouble_nonnan(x);
2058 (void)t; /* unused */
2063 START_TEST(test_ck_assert_ldouble_nonnan_with_mod)
2066 long double t = 1.0l;
2069 record_test_name(tcase_name());
2071 ck_assert_ldouble_nonnan(2%s);
2073 x = 0.0l / (1.0l - t);
2074 record_failure_line_num(__LINE__);
2075 ck_assert_ldouble_nonnan((2%s)*x);
2077 (void)t; /* unused */
2078 (void)x; /* unused */
2083 START_TEST(test_ck_assert_ldouble_nan_and_inf_with_expr)
2085 long double x[] = {0.0l, 0.0l, INFINITY, INFINITY, NAN, NAN, 0.0l, 0.0l, NAN};
2088 record_test_name(tcase_name());
2090 ck_assert_ldouble_finite(x[i++]);
2091 ck_assert_ldouble_finite(x[i++]);
2092 ck_assert_ldouble_infinite(x[i++]);
2093 ck_assert_ldouble_infinite(x[i++]);
2094 ck_assert_ldouble_nan(x[i++]);
2095 ck_assert_ldouble_nan(x[i++]);
2096 ck_assert_ldouble_nonnan(x[i++]);
2097 ck_assert_ldouble_nonnan(x[i++]);
2101 int returnsZero(const char* argument);
2102 int returnsZero(const char* argument)
2108 START_TEST(test_percent_n_escaped)
2110 record_test_name(tcase_name());
2112 /* If the %n is not escaped in the ck macro, then this results in a SEGFAULT */
2113 record_failure_line_num(__LINE__);
2114 ck_assert_int_eq(returnsZero("%n"), 1);
2117 START_TEST(test_ck_assert_str_eq)
2119 const char *s = "test2";
2121 record_test_name(tcase_name());
2123 ck_assert_str_eq("test2", s);
2124 record_failure_line_num(__LINE__);
2125 ck_assert_str_eq("test1", s);
2129 START_TEST(test_ck_assert_str_eq_with_null)
2131 const char *s = NULL;
2132 const char *t = NULL;
2134 record_test_name(tcase_name());
2136 record_failure_line_num(__LINE__);
2137 ck_assert_str_eq(t, s);
2141 START_TEST(test_ck_assert_str_ne)
2143 const char *s = "test2";
2144 const char *t = "test1";
2146 record_test_name(tcase_name());
2148 ck_assert_str_ne(t, s);
2150 record_failure_line_num(__LINE__);
2151 ck_assert_str_ne(t, s);
2155 START_TEST(test_ck_assert_str_ne_with_null)
2157 const char *s = NULL;
2158 const char *t = "test";
2160 record_test_name(tcase_name());
2162 record_failure_line_num(__LINE__);
2163 ck_assert_str_ne(t, s);
2167 START_TEST(test_ck_assert_str_lt)
2169 const char *s = "test1";
2170 const char *t = "test2";
2172 record_test_name(tcase_name());
2174 ck_assert_str_lt(s, t);
2175 record_failure_line_num(__LINE__);
2176 ck_assert_str_lt(s, s);
2180 START_TEST(test_ck_assert_str_lt_with_null)
2182 const char *s = NULL;
2183 const char *t = "test";
2185 record_test_name(tcase_name());
2187 record_failure_line_num(__LINE__);
2188 ck_assert_str_lt(s, t);
2192 START_TEST(test_ck_assert_str_le)
2194 const char *s = "test1";
2195 const char *t = "test2";
2197 record_test_name(tcase_name());
2199 ck_assert_str_le(s, t);
2200 ck_assert_str_le(s, s);
2201 record_failure_line_num(__LINE__);
2202 ck_assert_str_le(t, s);
2206 START_TEST(test_ck_assert_str_le_with_null)
2208 const char *s = NULL;
2209 const char *t = NULL;
2211 record_test_name(tcase_name());
2213 record_failure_line_num(__LINE__);
2214 ck_assert_str_le(t, s);
2218 START_TEST(test_ck_assert_str_gt)
2220 const char *s = "test1";
2221 const char *t = "test2";
2223 record_test_name(tcase_name());
2225 ck_assert_str_gt(t, s);
2226 record_failure_line_num(__LINE__);
2227 ck_assert_str_gt(t, t);
2231 START_TEST(test_ck_assert_str_gt_with_null)
2233 const char *s = NULL;
2234 const char *t = "test";
2236 record_test_name(tcase_name());
2238 record_failure_line_num(__LINE__);
2239 ck_assert_str_gt(t, s);
2243 START_TEST(test_ck_assert_str_ge)
2245 const char *s = "test1";
2246 const char *t = "test2";
2248 record_test_name(tcase_name());
2250 ck_assert_str_ge(t, s);
2251 ck_assert_str_ge(t, t);
2252 record_failure_line_num(__LINE__);
2253 ck_assert_str_ge(s, t);
2257 START_TEST(test_ck_assert_str_ge_with_null)
2259 const char *s = NULL;
2260 const char *t = NULL;
2262 record_test_name(tcase_name());
2264 record_failure_line_num(__LINE__);
2265 ck_assert_str_ge(s, t);
2269 START_TEST(test_ck_assert_str_expr)
2271 const char *s = "test1";
2272 const char *t[] = { "test1", "test2" };
2275 record_test_name(tcase_name());
2277 ck_assert_str_eq(s, t[++i]);
2278 ck_assert_str_eq(s, t[i]);
2282 START_TEST(test_ck_assert_pstr_eq)
2284 const char *s = "test";
2286 record_test_name(tcase_name());
2288 ck_assert_pstr_eq("test", s);
2289 ck_assert_pstr_eq(NULL, NULL);
2290 record_failure_line_num(__LINE__);
2291 ck_assert_pstr_eq("test1", s);
2295 START_TEST(test_ck_assert_pstr_eq_with_null)
2297 const char *t = "test";
2298 const char *s = NULL;
2300 record_test_name(tcase_name());
2302 record_failure_line_num(__LINE__);
2303 ck_assert_pstr_eq(t, s);
2307 START_TEST(test_ck_assert_pstr_ne)
2309 const char *t = "test1";
2310 const char *s = "test2";
2312 record_test_name(tcase_name());
2314 ck_assert_pstr_ne(t, s);
2315 ck_assert_pstr_ne(t, NULL);
2317 record_failure_line_num(__LINE__);
2318 ck_assert_pstr_ne(t, s);
2322 START_TEST(test_ck_assert_pstr_ne_with_null)
2324 const char *s = NULL;
2325 const char *t = NULL;
2327 record_test_name(tcase_name());
2329 record_failure_line_num(__LINE__);
2330 ck_assert_pstr_ne(t, s);
2334 START_TEST(test_ck_assert_ptr_eq)
2336 int * x = (int*)0x1;
2337 int * y = (int*)0x2;
2339 record_test_name(tcase_name());
2341 ck_assert_ptr_eq(NULL, NULL);
2342 ck_assert_ptr_eq(x, x);
2343 record_failure_line_num(__LINE__);
2344 ck_assert_ptr_eq(x, y);
2348 START_TEST(test_ck_assert_ptr_ne)
2350 int * x = (int*)0x1;
2351 int * y = (int*)0x2;
2354 record_test_name(tcase_name());
2356 ck_assert_ptr_ne(x, y);
2357 ck_assert_ptr_ne(x, NULL);
2358 ck_assert_ptr_ne(NULL, y);
2359 record_failure_line_num(__LINE__);
2360 ck_assert_ptr_ne(x, z);
2364 START_TEST(test_ck_assert_ptr_null)
2366 void* x = (void*)0x1;
2369 record_test_name(tcase_name());
2371 ck_assert_ptr_null(y);
2372 record_failure_line_num(__LINE__);
2373 ck_assert_ptr_null(x);
2377 START_TEST(test_ck_assert_ptr_nonnull)
2380 void* y = (void*)0x1;
2382 record_test_name(tcase_name());
2384 ck_assert_ptr_nonnull(y);
2385 record_failure_line_num(__LINE__);
2386 ck_assert_ptr_nonnull(x);
2390 START_TEST(test_ck_assert_mem_eq)
2392 const char *s = "\x00\x00\x00\x00\x02";
2394 record_test_name(tcase_name());
2396 ck_assert_mem_eq("\x00\x00\x00\x00\x02", s, 5);
2397 record_failure_line_num(__LINE__);
2398 ck_assert_mem_eq("\x00\x00\x00\x00\x01", s, 5);
2402 START_TEST(test_ck_assert_mem_ne)
2404 const char *s = "\x00\x00\x00\x00\x02";
2405 const char *t = "\x00\x00\x00\x00\x01";
2407 record_test_name(tcase_name());
2409 ck_assert_mem_ne(t, s, 5);
2410 t = "\x00\x00\x00\x00\x02";
2411 record_failure_line_num(__LINE__);
2412 ck_assert_mem_ne(t, s, 5);
2416 START_TEST(test_ck_assert_mem_lt)
2418 const char *s = "\x00\x00\x00\x00\x01";
2419 const char *t = "\x00\x00\x00\x00\x02";
2421 record_test_name(tcase_name());
2423 ck_assert_mem_lt(s, t, 5);
2424 record_failure_line_num(__LINE__);
2425 ck_assert_mem_lt(s, s, 5);
2429 START_TEST(test_ck_assert_mem_le)
2431 const char *s = "\x00\x00\x00\x00\x01";
2432 const char *t = "\x00\x00\x00\x00\x02";
2434 record_test_name(tcase_name());
2436 ck_assert_mem_le(s, t, 5);
2437 ck_assert_mem_le(s, s, 5);
2438 record_failure_line_num(__LINE__);
2439 ck_assert_mem_le(t, s, 5);
2443 START_TEST(test_ck_assert_mem_gt)
2445 const char *s = "\x00\x00\x00\x00\x01";
2446 const char *t = "\x00\x00\x00\x00\x02";
2448 record_test_name(tcase_name());
2450 ck_assert_mem_gt(t, s, 5);
2451 record_failure_line_num(__LINE__);
2452 ck_assert_mem_gt(t, t, 5);
2456 START_TEST(test_ck_assert_mem_ge)
2458 const char *s = "\x00\x00\x00\x00\x01";
2459 const char *t = "\x00\x00\x00\x00\x02";
2461 record_test_name(tcase_name());
2463 ck_assert_mem_ge(t, s, 5);
2464 ck_assert_mem_ge(t, t, 5);
2465 record_failure_line_num(__LINE__);
2466 ck_assert_mem_ge(s, t, 5);
2470 START_TEST(test_ck_assert_mem_zerolen)
2472 const char *s = "\x00\x00\x00\x00\x02";
2473 const char *t = "\x00\x00\x00\x00\x01";
2475 record_test_name(tcase_name());
2477 ck_assert_mem_eq(t, s, 0);
2481 START_TEST(test_ck_assert_mem_eq_exact)
2483 const char *s = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02";
2484 const char *t = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01";
2486 record_test_name(tcase_name());
2488 record_failure_line_num(__LINE__);
2489 ck_assert_mem_eq(t, s, 64);
2493 START_TEST(test_ck_assert_mem_eq_longer)
2495 const char *s = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02";
2496 const char *t = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01";
2498 record_test_name(tcase_name());
2500 record_failure_line_num(__LINE__);
2501 ck_assert_mem_eq(t, s, 65);
2505 #if defined(HAVE_FORK) && HAVE_FORK == 1
2506 START_TEST(test_segv_pass)
2508 record_test_name(tcase_name());
2510 * This test is to be used when it would otherwise not cause a
2511 * failure. e.g., shen SIGSEGV is expected.
2517 START_TEST(test_segv)
2519 record_test_name(tcase_name());
2520 record_failure_line_num(__LINE__-4); /* -4 as the failure is reported at START_TEST() */
2525 /* This test currently does not work on Cygwin, as it results in a
2526 * SIGSEGV instead of a SIGFPE. However, a simple program that installs
2527 * a SIGFPE handler then raise(SIGFPE) works as expected. Further
2528 * investigation is necessary. */
2529 #if !defined(__CYGWIN__)
2530 START_TEST(test_fpe)
2532 record_test_name(tcase_name());
2533 record_failure_line_num(__LINE__-4); /* -4 as the failure is reported at START_TEST() */
2537 #endif /* !defined(__CYGWIN__) */
2540 * This test is to be used when the test is expected to throw signal 8,
2541 * but does not, resulting in a failure.
2543 START_TEST(test_non_signal_8)
2545 record_test_name(tcase_name());
2546 record_failure_line_num(__LINE__-4); /* -4 as the failure is reported at START_TEST() */
2552 unit test running the same suite in succession */
2554 /* This test currently does not work on Cygwin, as it results in a
2555 * SIGSEGV instead of a SIGFPE. However, a simple program that installs
2556 * a SIGFPE handler then raise(SIGFPE) works as expected. Further
2557 * investigation is necessary. */
2558 #if !defined(__CYGWIN__)
2559 START_TEST(test_mark_point)
2562 record_test_name(tcase_name());
2566 record_failure_line_num(__LINE__-2); /* -2 as the failure is listed as from mark_point() */
2568 ck_abort_msg("Shouldn't reach here");
2571 #endif /* !defined(__CYGWIN__) */
2573 #endif /* HAVE_FORK */
2575 #if TIMEOUT_TESTS_ENABLED && defined(HAVE_FORK) && HAVE_FORK == 1
2576 START_TEST(test_eternal_fail)
2578 record_test_name(tcase_name());
2579 record_failure_line_num(__LINE__-4); /* -4 as the failure is reported at START_TEST() */
2586 * Only include sub-second timing tests on systems
2587 * that support librt.
2590 START_TEST(test_sleep0_025_pass)
2592 record_test_name(tcase_name());
2597 START_TEST(test_sleep1_pass)
2599 record_test_name(tcase_name());
2604 START_TEST(test_sleep1_fail)
2606 record_test_name(tcase_name());
2607 record_failure_line_num(__LINE__-4); /* -4 as the failure is reported at START_TEST() */
2611 #endif /* HAVE_LIBRT */
2613 START_TEST(test_sleep2_pass)
2615 record_test_name(tcase_name());
2620 START_TEST(test_sleep2_fail)
2622 record_test_name(tcase_name());
2623 record_failure_line_num(__LINE__-4); /* -4 as the failure is reported at START_TEST() */
2628 START_TEST(test_sleep5_pass)
2630 record_test_name(tcase_name());
2635 START_TEST(test_sleep5_fail)
2637 record_test_name(tcase_name());
2638 record_failure_line_num(__LINE__-4); /* -4 as the failure is reported at START_TEST() */
2643 START_TEST(test_sleep9_pass)
2645 record_test_name(tcase_name());
2650 START_TEST(test_sleep9_fail)
2652 record_test_name(tcase_name());
2653 record_failure_line_num(__LINE__-4); /* -4 as the failure is reported at START_TEST() */
2658 START_TEST(test_sleep14_fail)
2660 record_test_name(tcase_name());
2661 record_failure_line_num(__LINE__-4); /* -4 as the failure is reported at START_TEST() */
2666 #endif /* TIMEOUT_TESTS_ENABLED && defined(HAVE_FORK) */
2668 #if defined(HAVE_FORK) && HAVE_FORK==1
2669 START_TEST(test_early_exit)
2671 record_test_name(tcase_name());
2672 record_failure_line_num(__LINE__-4); /* -4 as the failure is reported at START_TEST() */
2676 #endif /* HAVE_FORK */
2679 * The following test will leak memory because it is calling
2680 * APIs inproperly. The leaked memory cannot be free'd, as
2681 * the methods to do so are static. (No user of Check should
2682 * call them directly).
2684 #if MEMORY_LEAKING_TESTS_ENABLED
2685 START_TEST(test_null)
2690 record_test_name(tcase_name());
2692 s = suite_create(NULL);
2693 tc = tcase_create(NULL);
2694 suite_add_tcase (s, NULL);
2695 tcase_add_test (tc, NULL);
2696 srunner_free(srunner_create(NULL));
2697 srunner_run_all (NULL, (enum print_output)-1);
2698 srunner_free (NULL);
2699 record_failure_line_num(__LINE__);
2700 ck_abort_msg("Completed properly");
2703 #endif /* MEMORY_LEAKING_TESTS_ENABLED */
2705 START_TEST(test_null_2)
2707 SRunner *sr = srunner_create(NULL);
2709 record_test_name(tcase_name());
2711 srunner_run_all (sr, CK_NORMAL);
2713 ck_assert_int_eq(suite_tcase(NULL, NULL), 0);
2714 record_failure_line_num(__LINE__);
2715 ck_abort_msg("Completed properly");
2719 #if defined(HAVE_FORK) && HAVE_FORK==1
2720 START_TEST(test_fork1p_pass)
2724 record_test_name(tcase_name());
2726 if((pid = fork()) < 0) {
2727 ck_abort_msg("Failed to fork new process");
2728 } else if (pid > 0) {
2729 ck_assert_msg(1, NULL);
2739 START_TEST(test_fork1p_fail)
2743 record_test_name(tcase_name());
2745 if((pid = fork()) < 0) {
2746 ck_abort_msg("Failed to fork new process");
2747 } else if (pid > 0) {
2748 record_failure_line_num(__LINE__);
2749 ck_abort_msg("Expected fail");
2759 START_TEST(test_fork1c_pass)
2763 record_test_name(tcase_name());
2765 if((pid = check_fork()) < 0) {
2766 ck_abort_msg("Failed to fork new process");
2767 } else if (pid > 0) {
2768 check_waitpid_and_exit(pid);
2770 ck_assert_msg(1, NULL);
2771 check_waitpid_and_exit(0);
2776 START_TEST(test_fork1c_fail)
2780 record_test_name(tcase_name());
2782 if((pid = check_fork()) < 0) {
2783 ck_abort_msg("Failed to fork new process");
2784 } else if (pid == 0) {
2785 record_failure_line_num(__LINE__);
2786 ck_abort_msg("Expected fail");
2787 check_waitpid_and_exit(0);
2789 check_waitpid_and_exit(pid);
2793 START_TEST(test_fork2_pass)
2798 record_test_name(tcase_name());
2800 if((pid = check_fork()) < 0) {
2801 ck_abort_msg("Failed to fork new process");
2802 } else if (pid > 0) {
2803 if((pid2 = check_fork()) < 0) {
2804 ck_abort_msg("Failed to fork new process");
2805 } else if (pid2 == 0) {
2806 ck_assert_msg(1, NULL);
2807 check_waitpid_and_exit(0);
2809 check_waitpid_and_exit(pid2);
2811 check_waitpid_and_exit(pid);
2815 START_TEST(test_fork2_fail)
2820 record_test_name(tcase_name());
2822 if((pid = check_fork()) < 0) {
2823 ck_abort_msg("Failed to fork new process");
2824 } else if (pid > 0) {
2825 if((pid2 = check_fork()) < 0) {
2826 ck_abort_msg("Failed to fork new process");
2827 } else if (pid2 == 0) {
2828 record_failure_line_num(__LINE__);
2829 ck_abort_msg("Expected fail");
2830 check_waitpid_and_exit(0);
2832 check_waitpid_and_exit(pid2);
2833 ck_abort_msg("Expected fail");
2835 check_waitpid_and_exit(pid);
2838 #endif /* HAVE_FORK */
2840 #if defined(HAVE_FORK) && HAVE_FORK == 1
2841 #if MEMORY_LEAKING_TESTS_ENABLED
2842 START_TEST(test_invalid_set_fork_status)
2848 record_test_name(tcase_name());
2850 record_failure_line_num(__LINE__-9); /* -9 as the failure is reported at START_TEST() */
2851 s1 = suite_create ("suite1");
2852 tc1 = tcase_create ("tcase1");
2853 tcase_add_test (tc1, test_pass);
2854 sr = srunner_create(s1);
2855 srunner_set_fork_status (sr, (enum fork_status)-1);
2856 srunner_run_all(sr, CK_SILENT);
2859 #endif /* MEMORY_LEAKING_TESTS_ENABLED */
2860 #endif /* HAVE_FORK */
2862 START_TEST(test_srunner)
2867 record_test_name(tcase_name());
2869 s = suite_create("Check Servant3");
2870 ck_assert_msg(s != NULL, NULL);
2871 sr = srunner_create(NULL);
2872 ck_assert_msg(sr != NULL, NULL);
2873 srunner_add_suite(sr, s);
2876 sr = srunner_create(NULL);
2877 ck_assert_msg(sr != NULL, NULL);
2878 srunner_add_suite(sr, NULL);
2881 s = suite_create("Check Servant3");
2882 ck_assert_msg(s != NULL, NULL);
2883 sr = srunner_create(s);
2884 ck_assert_msg(sr != NULL, NULL);
2889 START_TEST(test_2nd_suite)
2891 record_test_name(tcase_name());
2892 record_failure_line_num(__LINE__);
2893 ck_abort_msg("We failed");
2897 Suite *make_sub2_suite(void)
2899 Suite *s = suite_create("Check Servant2");
2900 TCase *tc = tcase_create("Core");
2901 suite_add_tcase(s, tc);
2902 tcase_add_test(tc, test_srunner);
2903 tcase_add_test(tc, test_2nd_suite);
2908 #if defined(HAVE_FORK) && HAVE_FORK == 1
2909 void exit_handler(void);
2910 void exit_handler ()
2912 /* This exit handler should never be executed */
2919 START_TEST(test_ignore_exit_handlers)
2923 record_test_name(tcase_name());
2925 result = atexit(exit_handler);
2928 ck_abort_msg("Failed to set an exit handler, test cannot proceed");
2930 record_failure_line_num(__LINE__);
2934 #endif /* HAVE_FORK */
2936 Suite *make_sub_suite(void)
2941 #if defined(HAVE_FORK) && HAVE_FORK==1
2944 #if TIMEOUT_TESTS_ENABLED && defined(HAVE_FORK) && HAVE_FORK == 1
2945 #if HAVE_DECL_SETENV
2946 TCase *tc_timeout_env_int;
2947 TCase *tc_timeout_env_double;
2948 #endif /* HAVE_DECL_SETENV */
2949 TCase *tc_timeout_default;
2950 TCase *tc_timeout_usr_int;
2951 TCase *tc_timeout_usr_double;
2952 #if HAVE_DECL_SETENV
2953 TCase *tc_timeout_env_scale_int;
2954 TCase *tc_timeout_scale_int;
2955 TCase *tc_timeout_usr_scale_int;
2956 TCase *tc_timeout_env_scale_double;
2957 TCase *tc_timeout_scale_double;
2958 TCase *tc_timeout_usr_scale_double;
2959 #endif /* HAVE_DECL_SETENV */
2960 #endif /* TIMEOUT_TESTS_ENABLED && defined(HAVE_FORK) */
2962 #if defined(HAVE_FORK) && HAVE_FORK==1
2963 TCase *tc_messaging_and_fork;
2965 TCase *tc_exit_handlers;
2968 s = suite_create("Check Servant");
2970 tc_simple = tcase_create("Simple Tests");
2971 #if defined(HAVE_FORK) && HAVE_FORK==1
2972 tc_signal = tcase_create("Signal Tests");
2973 #endif /* HAVE_FORK */
2974 #if TIMEOUT_TESTS_ENABLED && defined(HAVE_FORK) && HAVE_FORK == 1
2975 #if HAVE_DECL_SETENV
2976 setenv("CK_DEFAULT_TIMEOUT", "6", 1);
2977 tc_timeout_env_int = tcase_create("Environment Integer Timeout Tests");
2978 unsetenv("CK_DEFAULT_TIMEOUT");
2979 setenv("CK_DEFAULT_TIMEOUT", "0.5", 1);
2980 tc_timeout_env_double = tcase_create("Environment Double Timeout Tests");
2981 unsetenv("CK_DEFAULT_TIMEOUT");
2982 #endif /* HAVE_DECL_SETENV */
2983 tc_timeout_default = tcase_create("Default Timeout Tests");
2984 tc_timeout_usr_int = tcase_create("User Integer Timeout Tests");
2985 tc_timeout_usr_double = tcase_create("User Double Timeout Tests");
2986 #if HAVE_DECL_SETENV
2987 setenv("CK_TIMEOUT_MULTIPLIER", "2", 1);
2988 tc_timeout_scale_int = tcase_create("Timeout Integer Scaling Tests");
2989 tc_timeout_usr_scale_int = tcase_create("User Integer Timeout Scaling Tests");
2990 setenv("CK_DEFAULT_TIMEOUT", "6", 1);
2991 tc_timeout_env_scale_int = tcase_create("Environment Integer Timeout Scaling Tests");
2992 unsetenv("CK_DEFAULT_TIMEOUT");
2993 unsetenv("CK_TIMEOUT_MULTIPLIER");
2995 setenv("CK_TIMEOUT_MULTIPLIER", "0.35", 1);
2996 tc_timeout_scale_double = tcase_create("Timeout Double Scaling Tests");
2997 tc_timeout_usr_scale_double = tcase_create("User Double Timeout Scaling Tests");
2998 setenv("CK_DEFAULT_TIMEOUT", "0.9", 1);
2999 tc_timeout_env_scale_double = tcase_create("Environment Double Timeout Scaling Tests");
3000 unsetenv("CK_DEFAULT_TIMEOUT");
3001 unsetenv("CK_TIMEOUT_MULTIPLIER");
3002 #endif /* HAVE_DECL_SETENV */
3003 #endif /* TIMEOUT_TESTS_ENABLED && defined(HAVE_FORK) */
3004 tc_limit = tcase_create("Limit Tests");
3005 #if defined(HAVE_FORK) && HAVE_FORK==1
3006 tc_messaging_and_fork = tcase_create("Msg and fork Tests");
3007 tc_errors = tcase_create("Check Errors Tests");
3008 tc_exit_handlers = tcase_create("Check Ignore Exit Handlers");
3009 #endif /* HAVE_FORK */
3011 suite_add_tcase (s, tc_simple);
3012 #if defined(HAVE_FORK) && HAVE_FORK==1
3013 suite_add_tcase (s, tc_signal);
3014 #endif /* HAVE_FORK */
3015 #if TIMEOUT_TESTS_ENABLED && defined(HAVE_FORK) && HAVE_FORK == 1
3016 #if HAVE_DECL_SETENV
3017 suite_add_tcase (s, tc_timeout_env_int);
3018 suite_add_tcase (s, tc_timeout_env_double);
3019 #endif /* HAVE_DECL_SETENV */
3020 suite_add_tcase (s, tc_timeout_default);
3021 suite_add_tcase (s, tc_timeout_usr_int);
3022 suite_add_tcase (s, tc_timeout_usr_double);
3024 #if HAVE_DECL_SETENV
3025 suite_add_tcase (s, tc_timeout_env_scale_int);
3026 suite_add_tcase (s, tc_timeout_env_scale_double);
3027 suite_add_tcase (s, tc_timeout_scale_int);
3028 suite_add_tcase (s, tc_timeout_scale_double);
3029 suite_add_tcase (s, tc_timeout_usr_scale_int);
3030 suite_add_tcase (s, tc_timeout_usr_scale_double);
3031 #endif /* HAVE_DECL_SETENV */
3032 #endif /* TIMEOUT_TESTS_ENABLED && defined(HAVE_FORK) */
3033 suite_add_tcase (s, tc_limit);
3034 #if defined(HAVE_FORK) && HAVE_FORK == 1
3035 suite_add_tcase (s, tc_messaging_and_fork);
3036 suite_add_tcase (s, tc_errors);
3037 suite_add_tcase (s, tc_exit_handlers);
3040 tcase_add_test (tc_simple, test_lno);
3041 #if defined(HAVE_FORK) && HAVE_FORK==1
3042 tcase_add_test (tc_simple, test_mark_lno);
3044 tcase_add_test (tc_simple, test_pass);
3045 tcase_add_test (tc_simple, test_fail_unless);
3046 tcase_add_test (tc_simple, test_fail_if_pass);
3047 tcase_add_test (tc_simple, test_fail_if_fail);
3048 tcase_add_test (tc_simple, test_fail_null_msg);
3049 #if defined(__GNUC__)
3050 tcase_add_test (tc_simple, test_fail_no_msg);
3051 #endif /* __GNUC__ */
3052 tcase_add_test (tc_simple, test_fail_if_null_msg);
3053 #if defined(__GNUC__)
3054 tcase_add_test (tc_simple, test_fail_if_no_msg);
3055 #endif /* __GNUC__ */
3056 tcase_add_test (tc_simple, test_fail_vararg_msg_1);
3057 tcase_add_test (tc_simple, test_fail_vararg_msg_2);
3058 tcase_add_test (tc_simple, test_fail_vararg_msg_3);
3059 #if defined(__GNUC__)
3060 tcase_add_test (tc_simple, test_fail_empty);
3061 #endif /* __GNUC__ */
3063 tcase_add_test (tc_simple, test_ck_abort);
3064 tcase_add_test (tc_simple, test_ck_abort_msg);
3065 tcase_add_test (tc_simple, test_ck_abort_msg_null);
3066 tcase_add_test (tc_simple, test_ck_assert);
3067 tcase_add_test (tc_simple, test_ck_assert_null);
3068 tcase_add_test (tc_simple, test_ck_assert_with_mod);
3069 tcase_add_test (tc_simple, test_ck_assert_int_eq);
3070 tcase_add_test (tc_simple, test_ck_assert_int_eq_with_mod);
3071 tcase_add_test (tc_simple, test_ck_assert_int_ne);
3072 tcase_add_test (tc_simple, test_ck_assert_int_ne_with_mod);
3073 tcase_add_test (tc_simple, test_ck_assert_int_lt);
3074 tcase_add_test (tc_simple, test_ck_assert_int_lt_with_mod);
3075 tcase_add_test (tc_simple, test_ck_assert_int_le);
3076 tcase_add_test (tc_simple, test_ck_assert_int_le_with_mod);
3077 tcase_add_test (tc_simple, test_ck_assert_int_gt);
3078 tcase_add_test (tc_simple, test_ck_assert_int_gt_with_mod);
3079 tcase_add_test (tc_simple, test_ck_assert_int_ge);
3080 tcase_add_test (tc_simple, test_ck_assert_int_ge_with_mod);
3081 tcase_add_test (tc_simple, test_ck_assert_int_expr);
3082 tcase_add_test (tc_simple, test_ck_assert_uint_eq);
3083 tcase_add_test (tc_simple, test_ck_assert_uint_eq_with_mod);
3084 tcase_add_test (tc_simple, test_ck_assert_uint_ne);
3085 tcase_add_test (tc_simple, test_ck_assert_uint_ne_with_mod);
3086 tcase_add_test (tc_simple, test_ck_assert_uint_lt);
3087 tcase_add_test (tc_simple, test_ck_assert_uint_lt_with_mod);
3088 tcase_add_test (tc_simple, test_ck_assert_uint_le);
3089 tcase_add_test (tc_simple, test_ck_assert_uint_le_with_mod);
3090 tcase_add_test (tc_simple, test_ck_assert_uint_gt);
3091 tcase_add_test (tc_simple, test_ck_assert_uint_gt_with_mod);
3092 tcase_add_test (tc_simple, test_ck_assert_uint_ge);
3093 tcase_add_test (tc_simple, test_ck_assert_uint_ge_with_mod);
3094 tcase_add_test (tc_simple, test_ck_assert_uint_expr);
3095 tcase_add_test (tc_simple, test_ck_assert_float_eq);
3096 tcase_add_test (tc_simple, test_ck_assert_float_eq_with_mod);
3097 tcase_add_test (tc_simple, test_ck_assert_float_ne);
3098 tcase_add_test (tc_simple, test_ck_assert_float_ne_with_mod);
3099 tcase_add_test (tc_simple, test_ck_assert_float_lt);
3100 tcase_add_test (tc_simple, test_ck_assert_float_lt_with_mod);
3101 tcase_add_test (tc_simple, test_ck_assert_float_le);
3102 tcase_add_test (tc_simple, test_ck_assert_float_le_with_mod);
3103 tcase_add_test (tc_simple, test_ck_assert_float_gt);
3104 tcase_add_test (tc_simple, test_ck_assert_float_gt_with_mod);
3105 tcase_add_test (tc_simple, test_ck_assert_float_ge);
3106 tcase_add_test (tc_simple, test_ck_assert_float_ge_with_mod);
3107 tcase_add_test (tc_simple, test_ck_assert_float_with_expr);
3108 tcase_add_test (tc_simple, test_ck_assert_float_eq_tol);
3109 tcase_add_test (tc_simple, test_ck_assert_float_eq_tol_with_mod);
3110 tcase_add_test (tc_simple, test_ck_assert_float_ne_tol);
3111 tcase_add_test (tc_simple, test_ck_assert_float_ne_tol_with_mod);
3112 tcase_add_test (tc_simple, test_ck_assert_float_ge_tol);
3113 tcase_add_test (tc_simple, test_ck_assert_float_ge_tol_with_mod);
3114 tcase_add_test (tc_simple, test_ck_assert_float_le_tol);
3115 tcase_add_test (tc_simple, test_ck_assert_float_le_tol_with_mod);
3116 tcase_add_test (tc_simple, test_ck_assert_float_tol_with_expr);
3117 tcase_add_test (tc_simple, test_ck_assert_float_finite);
3118 tcase_add_test (tc_simple, test_ck_assert_float_finite_with_mod);
3119 tcase_add_test (tc_simple, test_ck_assert_float_infinite);
3120 tcase_add_test (tc_simple, test_ck_assert_float_infinite_with_mod);
3121 tcase_add_test (tc_simple, test_ck_assert_float_nan);
3122 tcase_add_test (tc_simple, test_ck_assert_float_nan_with_mod);
3123 tcase_add_test (tc_simple, test_ck_assert_float_nonnan);
3124 tcase_add_test (tc_simple, test_ck_assert_float_nonnan_with_mod);
3125 tcase_add_test (tc_simple, test_ck_assert_float_nan_and_inf_with_expr);
3126 tcase_add_test (tc_simple, test_ck_assert_double_eq);
3127 tcase_add_test (tc_simple, test_ck_assert_double_eq_with_mod);
3128 tcase_add_test (tc_simple, test_ck_assert_double_eq_with_promotion);
3129 tcase_add_test (tc_simple, test_ck_assert_double_eq_with_conv);
3130 tcase_add_test (tc_simple, test_ck_assert_double_ne);
3131 tcase_add_test (tc_simple, test_ck_assert_double_ne_with_mod);
3132 tcase_add_test (tc_simple, test_ck_assert_double_lt);
3133 tcase_add_test (tc_simple, test_ck_assert_double_lt_with_mod);
3134 tcase_add_test (tc_simple, test_ck_assert_double_le);
3135 tcase_add_test (tc_simple, test_ck_assert_double_le_with_mod);
3136 tcase_add_test (tc_simple, test_ck_assert_double_gt);
3137 tcase_add_test (tc_simple, test_ck_assert_double_gt_with_mod);
3138 tcase_add_test (tc_simple, test_ck_assert_double_ge);
3139 tcase_add_test (tc_simple, test_ck_assert_double_ge_with_mod);
3140 tcase_add_test (tc_simple, test_ck_assert_double_with_expr);
3141 tcase_add_test (tc_simple, test_ck_assert_double_eq_tol);
3142 tcase_add_test (tc_simple, test_ck_assert_double_eq_tol_with_mod);
3143 tcase_add_test (tc_simple, test_ck_assert_double_ne_tol);
3144 tcase_add_test (tc_simple, test_ck_assert_double_ne_tol_with_mod);
3145 tcase_add_test (tc_simple, test_ck_assert_double_ge_tol);
3146 tcase_add_test (tc_simple, test_ck_assert_double_ge_tol_with_mod);
3147 tcase_add_test (tc_simple, test_ck_assert_double_le_tol);
3148 tcase_add_test (tc_simple, test_ck_assert_double_le_tol_with_mod);
3149 tcase_add_test (tc_simple, test_ck_assert_double_tol_with_expr);
3150 tcase_add_test (tc_simple, test_ck_assert_double_finite);
3151 tcase_add_test (tc_simple, test_ck_assert_double_finite_with_mod);
3152 tcase_add_test (tc_simple, test_ck_assert_double_infinite);
3153 tcase_add_test (tc_simple, test_ck_assert_double_infinite_with_mod);
3154 tcase_add_test (tc_simple, test_ck_assert_double_nan);
3155 tcase_add_test (tc_simple, test_ck_assert_double_nan_with_mod);
3156 tcase_add_test (tc_simple, test_ck_assert_double_nonnan);
3157 tcase_add_test (tc_simple, test_ck_assert_double_nonnan_with_mod);
3158 tcase_add_test (tc_simple, test_ck_assert_double_nan_and_inf_with_expr);
3159 tcase_add_test (tc_simple, test_ck_assert_ldouble_eq);
3160 tcase_add_test (tc_simple, test_ck_assert_ldouble_eq_with_mod);
3161 tcase_add_test (tc_simple, test_ck_assert_ldouble_eq_with_promotion);
3162 tcase_add_test (tc_simple, test_ck_assert_ldouble_eq_with_conv);
3163 tcase_add_test (tc_simple, test_ck_assert_ldouble_ne);
3164 tcase_add_test (tc_simple, test_ck_assert_ldouble_ne_with_mod);
3165 tcase_add_test (tc_simple, test_ck_assert_ldouble_lt);
3166 tcase_add_test (tc_simple, test_ck_assert_ldouble_lt_with_mod);
3167 tcase_add_test (tc_simple, test_ck_assert_ldouble_le);
3168 tcase_add_test (tc_simple, test_ck_assert_ldouble_le_with_mod);
3169 tcase_add_test (tc_simple, test_ck_assert_ldouble_gt);
3170 tcase_add_test (tc_simple, test_ck_assert_ldouble_gt_with_mod);
3171 tcase_add_test (tc_simple, test_ck_assert_ldouble_ge);
3172 tcase_add_test (tc_simple, test_ck_assert_ldouble_ge_with_mod);
3173 tcase_add_test (tc_simple, test_ck_assert_ldouble_with_expr);
3174 tcase_add_test (tc_simple, test_ck_assert_ldouble_eq_tol);
3175 tcase_add_test (tc_simple, test_ck_assert_ldouble_eq_tol_with_mod);
3176 tcase_add_test (tc_simple, test_ck_assert_ldouble_ne_tol);
3177 tcase_add_test (tc_simple, test_ck_assert_ldouble_ne_tol_with_mod);
3178 tcase_add_test (tc_simple, test_ck_assert_ldouble_ge_tol);
3179 tcase_add_test (tc_simple, test_ck_assert_ldouble_ge_tol_with_mod);
3180 tcase_add_test (tc_simple, test_ck_assert_ldouble_le_tol);
3181 tcase_add_test (tc_simple, test_ck_assert_ldouble_le_tol_with_mod);
3182 tcase_add_test (tc_simple, test_ck_assert_ldouble_tol_with_expr);
3183 tcase_add_test (tc_simple, test_ck_assert_ldouble_finite);
3184 tcase_add_test (tc_simple, test_ck_assert_ldouble_finite_with_mod);
3185 tcase_add_test (tc_simple, test_ck_assert_ldouble_infinite);
3186 tcase_add_test (tc_simple, test_ck_assert_ldouble_infinite_with_mod);
3187 tcase_add_test (tc_simple, test_ck_assert_ldouble_nan);
3188 tcase_add_test (tc_simple, test_ck_assert_ldouble_nan_with_mod);
3189 tcase_add_test (tc_simple, test_ck_assert_ldouble_nonnan);
3190 tcase_add_test (tc_simple, test_ck_assert_ldouble_nonnan_with_mod);
3191 tcase_add_test (tc_simple, test_ck_assert_ldouble_nan_and_inf_with_expr);
3192 tcase_add_test (tc_simple, test_percent_n_escaped);
3193 tcase_add_test (tc_simple, test_ck_assert_str_eq);
3194 tcase_add_test (tc_simple, test_ck_assert_str_eq_with_null);
3195 tcase_add_test (tc_simple, test_ck_assert_str_ne);
3196 tcase_add_test (tc_simple, test_ck_assert_str_ne_with_null);
3197 tcase_add_test (tc_simple, test_ck_assert_str_lt);
3198 tcase_add_test (tc_simple, test_ck_assert_str_lt_with_null);
3199 tcase_add_test (tc_simple, test_ck_assert_str_le);
3200 tcase_add_test (tc_simple, test_ck_assert_str_le_with_null);
3201 tcase_add_test (tc_simple, test_ck_assert_str_gt);
3202 tcase_add_test (tc_simple, test_ck_assert_str_gt_with_null);
3203 tcase_add_test (tc_simple, test_ck_assert_str_ge);
3204 tcase_add_test (tc_simple, test_ck_assert_str_ge_with_null);
3205 tcase_add_test (tc_simple, test_ck_assert_str_expr);
3206 tcase_add_test (tc_simple, test_ck_assert_pstr_eq);
3207 tcase_add_test (tc_simple, test_ck_assert_pstr_eq_with_null);
3208 tcase_add_test (tc_simple, test_ck_assert_pstr_ne);
3209 tcase_add_test (tc_simple, test_ck_assert_pstr_ne_with_null);
3210 tcase_add_test (tc_simple, test_ck_assert_ptr_eq);
3211 tcase_add_test (tc_simple, test_ck_assert_ptr_ne);
3212 tcase_add_test (tc_simple, test_ck_assert_ptr_null);
3213 tcase_add_test (tc_simple, test_ck_assert_ptr_nonnull);
3214 tcase_add_test (tc_simple, test_ck_assert_mem_eq);
3215 tcase_add_test (tc_simple, test_ck_assert_mem_ne);
3216 tcase_add_test (tc_simple, test_ck_assert_mem_lt);
3217 tcase_add_test (tc_simple, test_ck_assert_mem_le);
3218 tcase_add_test (tc_simple, test_ck_assert_mem_gt);
3219 tcase_add_test (tc_simple, test_ck_assert_mem_ge);
3220 tcase_add_test (tc_simple, test_ck_assert_mem_zerolen);
3221 tcase_add_test (tc_simple, test_ck_assert_mem_eq_exact);
3222 tcase_add_test (tc_simple, test_ck_assert_mem_eq_longer);
3224 #if defined(HAVE_FORK) && HAVE_FORK==1
3225 tcase_add_test (tc_signal, test_segv);
3226 tcase_add_test_raise_signal (tc_signal, test_segv_pass, 11); /* pass */
3227 tcase_add_test_raise_signal (tc_signal, test_segv, 8); /* error */
3228 tcase_add_test_raise_signal (tc_signal, test_non_signal_8, 8); /* fail */
3229 tcase_add_test_raise_signal (tc_signal, test_fail_unless, 8); /* fail */
3230 #if !defined(__CYGWIN__)
3231 tcase_add_test (tc_signal, test_fpe);
3232 tcase_add_test (tc_signal, test_mark_point);
3233 #endif /* !defined(__CYGWIN__) */
3234 #endif /* HAVE_FORK */
3236 #if TIMEOUT_TESTS_ENABLED && defined(HAVE_FORK) && HAVE_FORK == 1
3237 #if HAVE_DECL_SETENV
3238 /* tc_timeout_env_int tests have a timeout of 6 seconds */
3239 tcase_add_test (tc_timeout_env_int, test_eternal_fail);
3240 tcase_add_test (tc_timeout_env_int, test_sleep2_pass);
3241 tcase_add_test (tc_timeout_env_int, test_sleep5_pass);
3242 tcase_add_test (tc_timeout_env_int, test_sleep9_fail);
3244 /* tc_timeout_env_double tests have a timeout of 0.5 seconds */
3245 tcase_add_test (tc_timeout_env_double, test_eternal_fail);
3247 tcase_add_test (tc_timeout_env_double, test_sleep0_025_pass);
3248 tcase_add_test (tc_timeout_env_double, test_sleep1_fail);
3249 #endif /* HAVE_LIBRT */
3250 tcase_add_test (tc_timeout_env_double, test_sleep2_fail);
3251 tcase_add_test (tc_timeout_env_double, test_sleep5_fail);
3252 tcase_add_test (tc_timeout_env_double, test_sleep9_fail);
3253 #endif /* HAVE_DECL_SETENV */
3255 /* tc_timeout_default tests have a timeout of 4 seconds */
3256 tcase_add_test (tc_timeout_default, test_eternal_fail);
3258 tcase_add_test (tc_timeout_default, test_sleep0_025_pass);
3259 tcase_add_test (tc_timeout_default, test_sleep1_pass);
3260 #endif /* HAVE_LIBRT */
3261 tcase_add_test (tc_timeout_default, test_sleep2_pass);
3262 tcase_add_test (tc_timeout_default, test_sleep5_fail);
3263 tcase_add_test (tc_timeout_default, test_sleep9_fail);
3265 tcase_set_timeout (tc_timeout_usr_int, 6);
3266 tcase_add_test (tc_timeout_usr_int, test_eternal_fail);
3267 tcase_add_test (tc_timeout_usr_int, test_sleep2_pass);
3268 tcase_add_test (tc_timeout_usr_int, test_sleep5_pass);
3269 tcase_add_test (tc_timeout_usr_int, test_sleep9_fail);
3271 tcase_set_timeout (tc_timeout_usr_double, 0.5);
3272 tcase_add_test (tc_timeout_usr_double, test_eternal_fail);
3274 tcase_add_test (tc_timeout_usr_double, test_sleep0_025_pass);
3275 tcase_add_test (tc_timeout_usr_double, test_sleep1_fail);
3276 #endif /* HAVE_LIBRT */
3277 tcase_add_test (tc_timeout_usr_double, test_sleep2_fail);
3278 tcase_add_test (tc_timeout_usr_double, test_sleep5_fail);
3279 tcase_add_test (tc_timeout_usr_double, test_sleep9_fail);
3281 #if HAVE_DECL_SETENV
3282 /* tc_timeout_env_scale_int tests have a timeout of 6 (time) * 2 (multiplier) = 12 seconds */
3283 tcase_add_test (tc_timeout_env_scale_int, test_eternal_fail);
3285 tcase_add_test (tc_timeout_env_scale_int, test_sleep0_025_pass);
3286 tcase_add_test (tc_timeout_env_scale_int, test_sleep1_pass);
3287 #endif /* HAVE_LIBRT */
3288 tcase_add_test (tc_timeout_env_scale_int, test_sleep2_pass);
3289 tcase_add_test (tc_timeout_env_scale_int, test_sleep5_pass);
3290 tcase_add_test (tc_timeout_env_scale_int, test_sleep9_pass);
3291 tcase_add_test (tc_timeout_env_scale_int, test_sleep14_fail);
3293 /* tc_timeout_env_scale_double tests have a timeout of 0.9 (time) * 0.4 (multiplier) = 0.36 seconds */
3294 tcase_add_test (tc_timeout_env_scale_double, test_eternal_fail);
3296 tcase_add_test (tc_timeout_env_scale_double, test_sleep0_025_pass);
3297 tcase_add_test (tc_timeout_env_scale_double, test_sleep1_fail);
3298 #endif /* HAVE_LIBRT */
3299 tcase_add_test (tc_timeout_env_scale_double, test_sleep2_fail);
3300 tcase_add_test (tc_timeout_env_scale_double, test_sleep5_fail);
3301 tcase_add_test (tc_timeout_env_scale_double, test_sleep9_fail);
3302 tcase_add_test (tc_timeout_env_scale_double, test_sleep14_fail);
3304 /* tc_timeout_scale_int tests have a timeout of 2 * 4 (default) = 8 seconds */
3305 tcase_add_test (tc_timeout_scale_int, test_eternal_fail);
3307 tcase_add_test (tc_timeout_scale_int, test_sleep0_025_pass);
3308 tcase_add_test (tc_timeout_scale_int, test_sleep1_pass);
3309 tcase_add_test (tc_timeout_scale_int, test_sleep2_pass);
3310 #endif /* HAVE_LIBRT */
3311 tcase_add_test (tc_timeout_scale_int, test_sleep5_pass);
3312 tcase_add_test (tc_timeout_scale_int, test_sleep9_fail);
3314 /* tc_timeout_scale_double tests have a timeout of 4 (default) * 0.3 (multiplier) = 1.6 second */
3315 tcase_add_test (tc_timeout_scale_double, test_eternal_fail);
3317 tcase_add_test (tc_timeout_scale_double, test_sleep0_025_pass);
3318 tcase_add_test (tc_timeout_scale_double, test_sleep1_pass);
3319 #endif /* HAVE_LIBRT */
3320 tcase_add_test (tc_timeout_scale_double, test_sleep2_fail);
3321 tcase_add_test (tc_timeout_scale_double, test_sleep5_fail);
3322 tcase_add_test (tc_timeout_scale_double, test_sleep9_fail);
3324 setenv("CK_TIMEOUT_MULTIPLIER", "2", 1);
3325 tcase_set_timeout (tc_timeout_usr_scale_int, 6);
3326 unsetenv("CK_TIMEOUT_MULTIPLIER");
3327 tcase_add_test (tc_timeout_usr_scale_int, test_eternal_fail);
3329 tcase_add_test (tc_timeout_usr_scale_int, test_sleep0_025_pass);
3330 tcase_add_test (tc_timeout_usr_scale_int, test_sleep1_pass);
3331 #endif /* HAVE_LIBRT */
3332 tcase_add_test (tc_timeout_usr_scale_int, test_sleep2_pass);
3333 tcase_add_test (tc_timeout_usr_scale_int, test_sleep5_pass);
3334 tcase_add_test (tc_timeout_usr_scale_int, test_sleep9_pass);
3335 tcase_add_test (tc_timeout_usr_scale_int, test_sleep14_fail);
3337 setenv("CK_TIMEOUT_MULTIPLIER", "0.4", 1);
3338 tcase_set_timeout (tc_timeout_usr_scale_double, 0.9);
3339 unsetenv("CK_TIMEOUT_MULTIPLIER");
3340 tcase_add_test (tc_timeout_usr_scale_double, test_eternal_fail);
3342 tcase_add_test (tc_timeout_usr_scale_double, test_sleep0_025_pass);
3343 tcase_add_test (tc_timeout_usr_scale_double, test_sleep1_fail);
3344 #endif /* HAVE_LIBRT */
3345 tcase_add_test (tc_timeout_usr_scale_double, test_sleep2_fail);
3346 tcase_add_test (tc_timeout_usr_scale_double, test_sleep5_fail);
3347 tcase_add_test (tc_timeout_usr_scale_double, test_sleep9_fail);
3348 tcase_add_test (tc_timeout_usr_scale_double, test_sleep14_fail);
3349 #endif /* HAVE_DECL_SETENV */
3350 #endif /* TIMEOUT_TESTS_ENABLED && defined(HAVE_FORK) */
3352 #if defined(HAVE_FORK) && HAVE_FORK==1
3353 tcase_add_test (tc_limit, test_early_exit);
3354 #endif /* HAVE_FORK */
3355 #if MEMORY_LEAKING_TESTS_ENABLED
3356 tcase_add_test (tc_limit, test_null);
3357 #endif /* MEMORY_LEAKING_TESTS_ENABLED */
3358 tcase_add_test (tc_limit, test_null_2);
3360 #if defined(HAVE_FORK) && HAVE_FORK==1
3361 tcase_add_test (tc_messaging_and_fork, test_fork1p_pass);
3362 tcase_add_test (tc_messaging_and_fork, test_fork1p_fail);
3363 tcase_add_test (tc_messaging_and_fork, test_fork1c_pass);
3364 tcase_add_test (tc_messaging_and_fork, test_fork1c_fail);
3365 tcase_add_test (tc_messaging_and_fork, test_fork2_pass);
3366 tcase_add_test (tc_messaging_and_fork, test_fork2_fail);
3368 #if MEMORY_LEAKING_TESTS_ENABLED
3369 tcase_add_test_raise_signal (tc_errors, test_invalid_set_fork_status, 2);
3372 tcase_add_test (tc_exit_handlers, test_ignore_exit_handlers);
3373 #endif /* HAVE_FORK */