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