1 /* check-sources:disable-copyright-check */
2 #include <check.h>
3 #include <stdlib.h>
4 #include "utest_main.h"
5
6 static int three = 3;
7 static int two_plus_one = 3;
8 static int forty_two = 42;
9 static const char* ford = "Ford";
10 static const char* henrys_company = "Ford";
11 static const char* gmc = "General Motors";
12 static void* goodpointer1 = (void*)&three;
13 static void* goodpointer2 = (void*)&forty_two;
14 static void* nullpointer = NULL;
15
16 /* Test the dpl_assert_*() macros in utest_main.h */
17
18 /*
19 * This test has all the checks that are supposed to pass
20 */
START_TEST(pass_test)21 START_TEST(pass_test)
22 {
23 dpl_assert_int_eq(three, two_plus_one);
24 dpl_assert_int_eq(two_plus_one, three);
25 dpl_assert_int_eq(three, 3);
26 dpl_assert_int_eq(3, three);
27
28 dpl_assert_int_ne(forty_two, three);
29 dpl_assert_int_ne(three, forty_two);
30 dpl_assert_int_ne(forty_two, 5);
31 dpl_assert_int_ne(5, forty_two);
32
33 dpl_assert_str_eq(henrys_company, ford);
34 dpl_assert_str_eq(ford, henrys_company);
35 dpl_assert_str_eq(ford, "Ford");
36 dpl_assert_str_eq("Ford", ford);
37
38 dpl_assert_str_ne(gmc, ford);
39 dpl_assert_str_ne(ford, gmc);
40 dpl_assert_str_ne(ford, "Chrysler");
41 dpl_assert_str_ne("Chrysler", ford);
42
43 dpl_assert_ptr_not_null(goodpointer1);
44 dpl_assert_ptr_null(nullpointer);
45
46 dpl_assert_ptr_ne(goodpointer1, BADPOINTER);
47 dpl_assert_ptr_ne(BADPOINTER, goodpointer1);
48 dpl_assert_ptr_ne(goodpointer1, nullpointer);
49 dpl_assert_ptr_ne(nullpointer, goodpointer1);
50 dpl_assert_ptr_ne(goodpointer1, goodpointer2);
51 dpl_assert_ptr_ne(goodpointer2, goodpointer1);
52 }
53 END_TEST
54
55 /*
56 * These tests have all the checks that are supposed to fail.
57 * Limitations in the check library make it hard to automate
58 * running these in "make check" so we allow manual testing
59 * by running
60 *
61 * DPL_UTEST_UTEST_DO_FAILS=yes make check
62 *
63 * The expected result is that all of fail1..fail24 will fail.
64 */
65
START_TEST(fail1_test)66 START_TEST(fail1_test) { dpl_assert_int_ne(three, two_plus_one); }
67 END_TEST
68
START_TEST(fail2_test)69 START_TEST(fail2_test) { dpl_assert_int_ne(two_plus_one, three); }
70 END_TEST
71
START_TEST(fail3_test)72 START_TEST(fail3_test) { dpl_assert_int_ne(three, 3); }
73 END_TEST
74
START_TEST(fail4_test)75 START_TEST(fail4_test) { dpl_assert_int_ne(3, three); }
76 END_TEST
77
START_TEST(fail5_test)78 START_TEST(fail5_test) { dpl_assert_int_eq(forty_two, three); }
79 END_TEST
80
START_TEST(fail6_test)81 START_TEST(fail6_test) { dpl_assert_int_eq(three, forty_two); }
82 END_TEST
83
START_TEST(fail7_test)84 START_TEST(fail7_test) { dpl_assert_int_eq(forty_two, 5); }
85 END_TEST
86
START_TEST(fail8_test)87 START_TEST(fail8_test) { dpl_assert_int_eq(5, forty_two); }
88 END_TEST
89
90
START_TEST(fail9_test)91 START_TEST(fail9_test) { dpl_assert_str_ne(henrys_company, ford); }
92 END_TEST
93
START_TEST(fail10_test)94 START_TEST(fail10_test) { dpl_assert_str_ne(ford, henrys_company); }
95 END_TEST
96
START_TEST(fail11_test)97 START_TEST(fail11_test) { dpl_assert_str_ne(ford, "Ford"); }
98 END_TEST
99
START_TEST(fail12_test)100 START_TEST(fail12_test) { dpl_assert_str_ne("Ford", ford); }
101 END_TEST
102
START_TEST(fail13_test)103 START_TEST(fail13_test) { dpl_assert_str_eq(gmc, ford); }
104 END_TEST
105
START_TEST(fail14_test)106 START_TEST(fail14_test) { dpl_assert_str_eq(ford, gmc); }
107 END_TEST
108
START_TEST(fail15_test)109 START_TEST(fail15_test) { dpl_assert_str_eq(ford, "Chrysler"); }
110 END_TEST
111
START_TEST(fail16_test)112 START_TEST(fail16_test) { dpl_assert_str_eq("Chrysler", ford); }
113 END_TEST
114
START_TEST(fail17_test)115 START_TEST(fail17_test) { dpl_assert_ptr_null(goodpointer1); }
116 END_TEST
117
START_TEST(fail18_test)118 START_TEST(fail18_test) { dpl_assert_ptr_not_null(nullpointer); }
119 END_TEST
120
START_TEST(fail19_test)121 START_TEST(fail19_test) { dpl_assert_ptr_eq(goodpointer1, BADPOINTER); }
122 END_TEST
123
START_TEST(fail20_test)124 START_TEST(fail20_test) { dpl_assert_ptr_eq(BADPOINTER, goodpointer1); }
125 END_TEST
126
START_TEST(fail21_test)127 START_TEST(fail21_test) { dpl_assert_ptr_eq(goodpointer1, nullpointer); }
128 END_TEST
129
START_TEST(fail22_test)130 START_TEST(fail22_test) { dpl_assert_ptr_eq(nullpointer, goodpointer1); }
131 END_TEST
132
START_TEST(fail23_test)133 START_TEST(fail23_test) { dpl_assert_ptr_eq(goodpointer1, goodpointer2); }
134 END_TEST
135
START_TEST(fail24_test)136 START_TEST(fail24_test) { dpl_assert_ptr_eq(goodpointer2, goodpointer1); }
137 END_TEST
138
139
utest_suite(void)140 Suite* utest_suite(void)
141 {
142 Suite* s = suite_create("utest");
143 TCase* t = tcase_create("pass");
144 tcase_add_test(t, pass_test);
145 if (getenv("DPL_UTEST_UTEST_DO_FAILS")) {
146 tcase_add_test(t, fail1_test);
147 tcase_add_test(t, fail2_test);
148 tcase_add_test(t, fail3_test);
149 tcase_add_test(t, fail4_test);
150 tcase_add_test(t, fail5_test);
151 tcase_add_test(t, fail6_test);
152 tcase_add_test(t, fail7_test);
153 tcase_add_test(t, fail8_test);
154 tcase_add_test(t, fail9_test);
155 tcase_add_test(t, fail10_test);
156 tcase_add_test(t, fail11_test);
157 tcase_add_test(t, fail12_test);
158 tcase_add_test(t, fail13_test);
159 tcase_add_test(t, fail14_test);
160 tcase_add_test(t, fail15_test);
161 tcase_add_test(t, fail16_test);
162 tcase_add_test(t, fail17_test);
163 tcase_add_test(t, fail18_test);
164 tcase_add_test(t, fail19_test);
165 tcase_add_test(t, fail20_test);
166 tcase_add_test(t, fail21_test);
167 tcase_add_test(t, fail22_test);
168 tcase_add_test(t, fail23_test);
169 tcase_add_test(t, fail24_test);
170 }
171 suite_add_tcase(s, t);
172 return s;
173 }
174