This source file includes following definitions.
- setup
- teardown
- sign
- START_TEST
- START_TEST
- START_TEST
- START_TEST
- main
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 #define TEST_SUITE_NAME "/lib/strutil"
27
28 #include "tests/mctest.h"
29
30 #include "lib/strutil.h"
31
32
33
34
35 static void
36 setup (void)
37 {
38 }
39
40
41
42
43 static void
44 teardown (void)
45 {
46 }
47
48
49
50 static int
51 sign (int n)
52 {
53 return ((n < 0) ? -1 : (n == 0) ? 0 : 1);
54 }
55
56
57
58
59
60
61 static const struct filevercmp_test_struct
62 {
63 const char *s1;
64 const char *s2;
65 int expected_result;
66 } filevercmp_test_ds1[] =
67 {
68 { "", "", 0 },
69 { "a", "a", 0 },
70 { "a", "b", -1 },
71 { "b", "a", 1 },
72 { "a0", "a", 1 },
73 { "00", "01", -1 },
74 { "01", "010", -1 },
75 { "9", "10", -1 },
76 { "0a", "0", 1 }
77 };
78
79
80
81
82
83 START_TEST (filevercmp_test1)
84
85 {
86
87 int actual_result;
88 const struct filevercmp_test_struct *data = &filevercmp_test_ds1[_i];
89
90
91 actual_result = filevercmp (data->s1, data->s2);
92
93
94 mctest_assert_int_eq (sign (actual_result), sign (data->expected_result));
95 }
96
97 END_TEST
98
99
100
101
102
103
104 static const char *filevercmp_test_ds2[] = {
105 "",
106 ".",
107 "..",
108 ".0",
109 ".9",
110 ".A",
111 ".Z",
112 ".a~",
113 ".a",
114 ".b~",
115 ".b",
116 ".z",
117 ".zz~",
118 ".zz",
119 ".zz.~1~",
120 ".zz.0",
121 "0",
122 "9",
123 "A",
124 "Z",
125 "a~",
126 "a",
127 "a.b~",
128 "a.b",
129 "a.bc~",
130 "a.bc",
131 "b~",
132 "b",
133 "gcc-c++-10.fc9.tar.gz",
134 "gcc-c++-10.fc9.tar.gz.~1~",
135 "gcc-c++-10.fc9.tar.gz.~2~",
136 "gcc-c++-10.8.12-0.7rc2.fc9.tar.bz2",
137 "gcc-c++-10.8.12-0.7rc2.fc9.tar.bz2.~1~",
138 "glibc-2-0.1.beta1.fc10.rpm",
139 "glibc-common-5-0.2.beta2.fc9.ebuild",
140 "glibc-common-5-0.2b.deb",
141 "glibc-common-11b.ebuild",
142 "glibc-common-11-0.6rc2.ebuild",
143 "libstdc++-0.5.8.11-0.7rc2.fc10.tar.gz",
144 "libstdc++-4a.fc8.tar.gz",
145 "libstdc++-4.10.4.20040204svn.rpm",
146 "libstdc++-devel-3.fc8.ebuild",
147 "libstdc++-devel-3a.fc9.tar.gz",
148 "libstdc++-devel-8.fc8.deb",
149 "libstdc++-devel-8.6.2-0.4b.fc8",
150 "nss_ldap-1-0.2b.fc9.tar.bz2",
151 "nss_ldap-1-0.6rc2.fc8.tar.gz",
152 "nss_ldap-1.0-0.1a.tar.gz",
153 "nss_ldap-10beta1.fc8.tar.gz",
154 "nss_ldap-10.11.8.6.20040204cvs.fc10.ebuild",
155 "z",
156 "zz~",
157 "zz",
158 "zz.~1~",
159 "zz.0",
160 "#.b#"
161 };
162
163 const size_t filevercmp_test_ds2_len = G_N_ELEMENTS (filevercmp_test_ds2);
164
165
166
167 START_TEST (filevercmp_test2)
168
169 {
170 const char *i = filevercmp_test_ds2[_i];
171 size_t _j;
172
173 for (_j = 0; _j < filevercmp_test_ds2_len; _j++)
174 {
175 const char *j = filevercmp_test_ds2[_j];
176 int result;
177
178 result = filevercmp (i, j);
179
180 if (result < 0)
181 ck_assert_int_eq (! !((size_t) _i < _j), 1);
182 else if (0 < result)
183 ck_assert_int_eq (! !(_j < (size_t) _i), 1);
184 else
185 ck_assert_int_eq (! !(_j == (size_t) _i), 1);
186 }
187 }
188
189 END_TEST
190
191
192
193
194
195 static const char *filevercmp_test_ds3[] = {
196 "application-1.10.tar.gz",
197 "application-1.10.1.tar.gz"
198 };
199
200 const size_t filevercmp_test_ds3_len = G_N_ELEMENTS (filevercmp_test_ds3);
201
202
203
204 START_TEST (filevercmp_test3)
205
206 {
207 const char *i = filevercmp_test_ds3[_i];
208 size_t _j;
209
210 for (_j = 0; _j < filevercmp_test_ds3_len; _j++)
211 {
212 const char *j = filevercmp_test_ds3[_j];
213 int result;
214
215 result = filevercmp (i, j);
216
217 if (result < 0)
218 ck_assert_int_eq (! !((size_t) _i < _j), 1);
219 else if (0 < result)
220 ck_assert_int_eq (! !(_j < (size_t) _i), 1);
221 else
222 ck_assert_int_eq (! !(_j == (size_t) _i), 1);
223 }
224 }
225
226 END_TEST
227
228
229
230
231
232 static const char *filevercmp_test_ds4[] = {
233 "firefox-58.0.1+build1.tar.gz",
234 "firefox-59.0~b14+build1.tar.gz",
235 "firefox-59.0.1+build1.tar.gz"
236 };
237
238 const size_t filevercmp_test_ds4_len = G_N_ELEMENTS (filevercmp_test_ds4);
239
240
241
242 START_TEST (filevercmp_test4)
243
244 {
245 const char *i = filevercmp_test_ds4[_i];
246 size_t _j;
247
248 for (_j = 0; _j < filevercmp_test_ds4_len; _j++)
249 {
250 const char *j = filevercmp_test_ds4[_j];
251 int result;
252
253 result = filevercmp (i, j);
254
255 if (result < 0)
256 ck_assert_int_eq (! !((size_t) _i < _j), 1);
257 else if (0 < result)
258 ck_assert_int_eq (! !(_j < (size_t) _i), 1);
259 else
260 ck_assert_int_eq (! !(_j == (size_t) _i), 1);
261 }
262 }
263
264 END_TEST
265
266
267
268
269 int
270 main (void)
271 {
272 TCase *tc_core;
273
274 tc_core = tcase_create ("Core");
275
276 tcase_add_checked_fixture (tc_core, setup, teardown);
277
278
279 mctest_add_parameterized_test (tc_core, filevercmp_test1, filevercmp_test_ds1);
280 tcase_add_loop_test (tc_core, filevercmp_test2, 0, filevercmp_test_ds2_len);
281 tcase_add_loop_test (tc_core, filevercmp_test3, 0, filevercmp_test_ds3_len);
282 tcase_add_loop_test (tc_core, filevercmp_test4, 0, filevercmp_test_ds4_len);
283
284
285 return mctest_run_all (tc_core);
286 }
287
288