try to remove stdint.h
[liba.git] / test / str.h
blob68cad37e2468c7946261dd1e606b6ce4b4993218
1 #define MAIN(x) str##x
2 #include "test.h"
3 #include "a/str.h"
5 static void test_str(void)
8 a_str ctx = A_STR_INIT;
9 TEST_BUG(a_str_len(&ctx) == 0);
10 TEST_BUG(a_str_mem(&ctx) == 0);
11 TEST_BUG(!a_str_ptr(&ctx));
12 TEST_BUG(!a_str_exit(&ctx));
16 static void test_str_cmp(void)
19 a_str *lhs = a_str_new();
20 a_str *rhs = a_str_new();
21 TEST_BUG(a_str_cmp(lhs, rhs) == 0);
22 a_str_die(lhs);
23 a_str_die(rhs);
26 a_str *lhs = a_str_new();
27 a_str *rhs = a_str_new();
28 a_str_sets(lhs, "");
29 TEST_BUG(a_str_cmp(lhs, rhs) == 0);
30 a_str_die(lhs);
31 a_str_die(rhs);
34 a_str *lhs = a_str_new();
35 a_str *rhs = a_str_new();
36 a_str_sets(rhs, "");
37 TEST_BUG(a_str_cmp(lhs, rhs) == 0);
38 a_str_die(lhs);
39 a_str_die(rhs);
42 a_str *lhs = a_str_new();
43 a_str *rhs = a_str_new();
44 a_str_sets(lhs, "0");
45 TEST_BUG(a_str_cmp(lhs, rhs) > 0);
46 a_str_die(lhs);
47 a_str_die(rhs);
50 a_str *lhs = a_str_new();
51 a_str *rhs = a_str_new();
52 a_str_sets(rhs, "0");
53 TEST_BUG(a_str_cmp(lhs, rhs) < 0);
54 a_str_die(lhs);
55 a_str_die(rhs);
58 a_str *lhs = a_str_new();
59 a_str *rhs = a_str_new();
60 a_str_sets(lhs, "0");
61 a_str_sets(rhs, "00");
62 TEST_BUG(a_str_cmp(lhs, rhs) < 0);
63 a_str_die(lhs);
64 a_str_die(rhs);
67 a_str *lhs = a_str_new();
68 a_str *rhs = a_str_new();
69 a_str_sets(lhs, "00");
70 a_str_sets(rhs, "0");
71 TEST_BUG(a_str_cmp(lhs, rhs) > 0);
72 a_str_die(lhs);
73 a_str_die(rhs);
77 static void test_str_getc(void)
80 a_str ctx = A_STR_INIT;
81 TEST_BUG(a_str_getc_(&ctx) == ~0);
84 a_str ctx = A_STR_INIT;
85 TEST_BUG(a_str_getc(&ctx) == ~0);
88 a_str ctx = A_STR_INIT;
89 TEST_BUG(a_str_setn_(&ctx, A_NULL, 0) == A_SUCCESS);
90 TEST_BUG(a_str_getc_(&ctx) == ~0);
91 a_alloc(a_str_exit(&ctx), 0);
94 a_str ctx = A_STR_INIT;
95 TEST_BUG(a_str_setn(&ctx, A_NULL, 0) == A_SUCCESS);
96 TEST_BUG(a_str_getc(&ctx) == ~0);
97 a_alloc(a_str_exit(&ctx), 0);
101 static void test_str_putc(void)
104 a_str ctx = A_STR_INIT;
105 TEST_BUG(a_str_putc_(&ctx, 1) == 1);
106 TEST_BUG(a_str_ptr(&ctx)[0] == 1);
107 a_alloc(a_str_exit(&ctx), 0);
110 a_str ctx = A_STR_INIT;
111 TEST_BUG(a_str_putc(&ctx, 1) == 1);
112 TEST_BUG(a_str_ptr(&ctx)[0] == 1);
113 TEST_BUG(a_str_ptr(&ctx)[1] == 0);
114 a_alloc(a_str_exit(&ctx), 0);
118 static void test_str_getn(void)
121 char buf[2];
122 a_str ctx = A_STR_INIT;
124 a_fill(buf, sizeof(buf), 1);
125 TEST_BUG(a_str_getn_(&ctx, A_NULL, 0) == 0);
126 TEST_BUG(buf[0] == 1);
127 TEST_BUG(buf[1] == 1);
129 a_fill(buf, sizeof(buf), 1);
130 TEST_BUG(a_str_getn_(&ctx, A_NULL, 1) == 0);
131 TEST_BUG(buf[0] == 1);
132 TEST_BUG(buf[1] == 1);
134 a_fill(buf, sizeof(buf), 1);
135 TEST_BUG(a_str_getn_(&ctx, A_NULL, A_SIZE_MAX) == 0);
136 TEST_BUG(buf[0] == 1);
137 TEST_BUG(buf[1] == 1);
139 a_fill(buf, sizeof(buf), 1);
140 TEST_BUG(a_str_getn_(&ctx, buf, 0) == 0);
141 TEST_BUG(buf[0] == 1);
142 TEST_BUG(buf[1] == 1);
144 a_fill(buf, sizeof(buf), 1);
145 TEST_BUG(a_str_getn_(&ctx, buf, 1) == 0);
146 TEST_BUG(buf[0] == 1);
147 TEST_BUG(buf[1] == 1);
149 a_fill(buf, sizeof(buf), 1);
150 TEST_BUG(a_str_getn_(&ctx, buf, A_SIZE_MAX) == 0);
151 TEST_BUG(buf[0] == 1);
152 TEST_BUG(buf[1] == 1);
154 a_fill(buf, sizeof(buf), 1);
155 TEST_BUG(a_str_getn_(&ctx, A_NULL, 0) == 0);
156 TEST_BUG(buf[0] == 1);
157 TEST_BUG(buf[1] == 1);
159 a_fill(buf, sizeof(buf), 1);
160 TEST_BUG(a_str_setn_(&ctx, "0", 2) == A_SUCCESS);
161 TEST_BUG(a_str_getn_(&ctx, A_NULL, 1) == 1);
162 TEST_BUG(buf[0] == 1);
163 TEST_BUG(buf[1] == 1);
165 a_fill(buf, sizeof(buf), 1);
166 TEST_BUG(a_str_setn_(&ctx, "0", 2) == A_SUCCESS);
167 TEST_BUG(a_str_getn_(&ctx, A_NULL, A_SIZE_MAX) == 2);
168 TEST_BUG(buf[0] == 1);
169 TEST_BUG(buf[1] == 1);
171 a_fill(buf, sizeof(buf), 1);
172 TEST_BUG(a_str_getn_(&ctx, buf, 0) == 0);
173 TEST_BUG(buf[0] == 1);
174 TEST_BUG(buf[1] == 1);
176 a_fill(buf, sizeof(buf), 1);
177 TEST_BUG(a_str_setn_(&ctx, "0", 2) == A_SUCCESS);
178 TEST_BUG(a_str_getn_(&ctx, buf, 1) == 1);
179 TEST_BUG(buf[0] == 0);
180 TEST_BUG(buf[1] == 1);
182 a_fill(buf, sizeof(buf), 1);
183 TEST_BUG(a_str_setn_(&ctx, "0", 2) == A_SUCCESS);
184 TEST_BUG(a_str_getn_(&ctx, buf, A_SIZE_MAX) == 2);
185 TEST_BUG(buf[0] == '0');
186 TEST_BUG(buf[1] == 0);
188 a_alloc(a_str_exit(&ctx), 0);
191 char buf[2];
192 a_str ctx = A_STR_INIT;
194 a_fill(buf, sizeof(buf), 1);
195 TEST_BUG(a_str_getn(&ctx, A_NULL, 0) == 0);
196 TEST_BUG(buf[0] == 1);
197 TEST_BUG(buf[1] == 1);
199 a_fill(buf, sizeof(buf), 1);
200 TEST_BUG(a_str_getn(&ctx, A_NULL, 1) == 0);
201 TEST_BUG(buf[0] == 1);
202 TEST_BUG(buf[1] == 1);
204 a_fill(buf, sizeof(buf), 1);
205 TEST_BUG(a_str_getn(&ctx, A_NULL, A_SIZE_MAX) == 0);
206 TEST_BUG(buf[0] == 1);
207 TEST_BUG(buf[1] == 1);
209 a_fill(buf, sizeof(buf), 1);
210 TEST_BUG(a_str_getn(&ctx, buf, 0) == 0);
211 TEST_BUG(buf[0] == 1);
212 TEST_BUG(buf[1] == 1);
214 a_fill(buf, sizeof(buf), 1);
215 TEST_BUG(a_str_getn(&ctx, buf, 1) == 0);
216 TEST_BUG(buf[0] == 1);
217 TEST_BUG(buf[1] == 1);
219 a_fill(buf, sizeof(buf), 1);
220 TEST_BUG(a_str_getn(&ctx, buf, A_SIZE_MAX) == 0);
221 TEST_BUG(buf[0] == 1);
222 TEST_BUG(buf[1] == 1);
224 a_fill(buf, sizeof(buf), 1);
225 TEST_BUG(a_str_getn(&ctx, A_NULL, 0) == 0);
226 TEST_BUG(buf[0] == 1);
227 TEST_BUG(buf[1] == 1);
229 a_fill(buf, sizeof(buf), 1);
230 TEST_BUG(a_str_setn(&ctx, "0", 2) == A_SUCCESS);
231 TEST_BUG(a_str_getn(&ctx, A_NULL, 1) == 1);
232 TEST_BUG(buf[0] == 1);
233 TEST_BUG(buf[1] == 1);
235 a_fill(buf, sizeof(buf), 1);
236 TEST_BUG(a_str_setn(&ctx, "0", 2) == A_SUCCESS);
237 TEST_BUG(a_str_getn(&ctx, A_NULL, A_SIZE_MAX) == 2);
238 TEST_BUG(buf[0] == 1);
239 TEST_BUG(buf[1] == 1);
241 a_fill(buf, sizeof(buf), 1);
242 TEST_BUG(a_str_getn(&ctx, buf, 0) == 0);
243 TEST_BUG(buf[0] == 1);
244 TEST_BUG(buf[1] == 1);
246 a_fill(buf, sizeof(buf), 1);
247 TEST_BUG(a_str_setn(&ctx, "0", 2) == A_SUCCESS);
248 TEST_BUG(a_str_getn(&ctx, buf, 1) == 1);
249 TEST_BUG(buf[0] == 0);
250 TEST_BUG(buf[1] == 1);
252 a_fill(buf, sizeof(buf), 1);
253 TEST_BUG(a_str_setn(&ctx, "0", 2) == A_SUCCESS);
254 TEST_BUG(a_str_getn(&ctx, buf, A_SIZE_MAX) == 2);
255 TEST_BUG(buf[0] == '0');
256 TEST_BUG(buf[1] == 0);
258 a_alloc(a_str_exit(&ctx), 0);
262 static void test_str_setn(void)
265 a_str ctx = A_STR_INIT;
267 TEST_BUG(a_str_putn_(&ctx, A_NULL, 0) == A_SUCCESS);
268 TEST_BUG(!a_str_ptr(&ctx));
270 TEST_BUG(a_str_setn_(&ctx, A_NULL, 0) == A_SUCCESS);
271 TEST_BUG(!a_str_ptr(&ctx));
273 TEST_BUG(a_str_putn_(&ctx, "0", 0) == A_SUCCESS);
274 TEST_BUG(!a_str_ptr(&ctx));
276 TEST_BUG(a_str_setn_(&ctx, "0", 0) == A_SUCCESS);
277 TEST_BUG(!a_str_ptr(&ctx));
279 TEST_BUG(a_str_putn_(&ctx, "0", 1) == A_SUCCESS);
280 TEST_BUG(a_str_ptr(&ctx)[0] == '0');
281 TEST_BUG(a_str_setn_(&ctx, "0", 1) == A_SUCCESS);
282 TEST_BUG(a_str_ptr(&ctx)[0] == '0');
284 TEST_BUG(a_str_putn_(&ctx, "1", 2) == A_SUCCESS);
285 TEST_BUG(a_str_ptr(&ctx)[0] == '0');
286 TEST_BUG(a_str_ptr(&ctx)[1] == '1');
287 TEST_BUG(a_str_ptr(&ctx)[2] == 0);
289 a_alloc(a_str_exit(&ctx), 0);
292 a_str ctx = A_STR_INIT;
294 TEST_BUG(a_str_putn(&ctx, A_NULL, 0) == A_SUCCESS);
295 TEST_BUG(a_str_ptr(&ctx));
296 TEST_BUG(a_str_ptr(&ctx)[0] == 0);
298 TEST_BUG(a_str_setn(&ctx, A_NULL, 0) == A_SUCCESS);
299 TEST_BUG(a_str_ptr(&ctx));
300 TEST_BUG(a_str_ptr(&ctx)[0] == 0);
302 TEST_BUG(a_str_putn(&ctx, "0", 0) == A_SUCCESS);
303 TEST_BUG(a_str_ptr(&ctx));
304 TEST_BUG(a_str_ptr(&ctx)[0] == 0);
306 TEST_BUG(a_str_setn(&ctx, "0", 0) == A_SUCCESS);
307 TEST_BUG(a_str_ptr(&ctx));
308 TEST_BUG(a_str_ptr(&ctx)[0] == 0);
310 TEST_BUG(a_str_putn(&ctx, "0", 1) == A_SUCCESS);
311 TEST_BUG(a_str_ptr(&ctx)[0] == '0');
312 TEST_BUG(a_str_ptr(&ctx)[1] == 0);
314 TEST_BUG(a_str_setn(&ctx, "0", 1) == A_SUCCESS);
315 TEST_BUG(a_str_ptr(&ctx)[0] == '0');
316 TEST_BUG(a_str_ptr(&ctx)[1] == 0);
318 TEST_BUG(a_str_putn(&ctx, "1", 2) == A_SUCCESS);
319 TEST_BUG(a_str_ptr(&ctx)[0] == '0');
320 TEST_BUG(a_str_ptr(&ctx)[1] == '1');
321 TEST_BUG(a_str_ptr(&ctx)[2] == 0);
322 TEST_BUG(a_str_ptr(&ctx)[3] == 0);
324 a_alloc(a_str_exit(&ctx), 0);
328 static void test_str_sets(void)
331 a_str ctx = A_STR_INIT;
333 TEST_BUG(a_str_puts_(&ctx, "") == A_SUCCESS);
334 TEST_BUG(!a_str_ptr(&ctx));
336 TEST_BUG(a_str_sets_(&ctx, "") == A_SUCCESS);
337 TEST_BUG(!a_str_ptr(&ctx));
339 TEST_BUG(a_str_puts_(&ctx, "0") == A_SUCCESS);
340 TEST_BUG(a_str_ptr(&ctx)[0] == '0');
342 TEST_BUG(a_str_sets_(&ctx, "0") == A_SUCCESS);
343 TEST_BUG(a_str_ptr(&ctx)[0] == '0');
345 a_alloc(a_str_exit(&ctx), 0);
348 a_str ctx = A_STR_INIT;
350 TEST_BUG(a_str_puts(&ctx, "") == A_SUCCESS);
351 TEST_BUG(a_str_ptr(&ctx));
353 TEST_BUG(a_str_sets(&ctx, "") == A_SUCCESS);
354 TEST_BUG(a_str_ptr(&ctx));
356 TEST_BUG(a_str_puts(&ctx, "0") == A_SUCCESS);
357 TEST_BUG(a_str_ptr(&ctx)[0] == '0');
358 TEST_BUG(a_str_ptr(&ctx)[1] == 0);
360 TEST_BUG(a_str_sets(&ctx, "0") == A_SUCCESS);
361 TEST_BUG(a_str_ptr(&ctx)[0] == '0');
362 TEST_BUG(a_str_ptr(&ctx)[1] == 0);
364 a_alloc(a_str_exit(&ctx), 0);
368 static void test_str_setf(void)
371 a_str ctx = A_STR_INIT;
373 TEST_BUG(a_str_putf(&ctx, "%i", 0) == 1);
374 TEST_BUG(a_str_ptr(&ctx)[0] == '0');
375 TEST_BUG(a_str_ptr(&ctx)[1] == 0);
377 TEST_BUG(a_str_setf(&ctx, "%i", 0) == 1);
378 TEST_BUG(a_str_ptr(&ctx)[0] == '0');
379 TEST_BUG(a_str_ptr(&ctx)[1] == 0);
381 a_alloc(a_str_exit(&ctx), 0);
385 static void test_str_set(void)
388 a_str ctx = A_STR_INIT;
389 a_str obj = A_STR_INIT;
391 a_str_put_(&ctx, &obj);
392 TEST_BUG(!a_str_ptr(&ctx));
394 a_str_set_(&ctx, &obj);
395 TEST_BUG(!a_str_ptr(&ctx));
397 a_str_puts_(&obj, "0");
398 a_str_put_(&ctx, &obj);
399 TEST_BUG(a_str_ptr(&ctx)[0] == '0');
401 a_str_sets_(&obj, "0");
402 a_str_set_(&ctx, &obj);
403 TEST_BUG(a_str_ptr(&ctx)[0] == '0');
405 a_alloc(a_str_exit(&obj), 0);
406 a_alloc(a_str_exit(&ctx), 0);
409 a_str ctx = A_STR_INIT;
410 a_str obj = A_STR_INIT;
412 a_str_put(&ctx, &obj);
413 TEST_BUG(a_str_ptr(&ctx));
415 a_str_set(&ctx, &obj);
416 TEST_BUG(a_str_ptr(&ctx));
418 a_str_puts(&obj, "0");
419 a_str_put(&ctx, &obj);
420 TEST_BUG(a_str_ptr(&ctx)[0] == '0');
421 TEST_BUG(a_str_ptr(&ctx)[1] == 0);
423 a_str_sets(&obj, "0");
424 a_str_set(&ctx, &obj);
425 TEST_BUG(a_str_ptr(&ctx)[0] == '0');
426 TEST_BUG(a_str_ptr(&ctx)[1] == 0);
428 a_alloc(a_str_exit(&obj), 0);
429 a_alloc(a_str_exit(&ctx), 0);
433 int main(int argc, char *argv[]) /* NOLINT(misc-definitions-in-headers) */
435 int i;
436 puts(A_FUNC);
437 test_str();
438 test_str_cmp();
439 test_str_getc();
440 test_str_putc();
441 test_str_getn();
442 test_str_setn();
443 test_str_sets();
444 test_str_setf();
445 test_str_set();
447 a_str *ctx = a_str_new();
448 a_str_setf(ctx, "0123");
449 TEST_BUG(a_str_idx(ctx, -1) == '3');
450 TEST_BUG(a_str_at_(ctx, 0) == '0');
451 TEST_BUG(a_str_at(ctx, 0) == '0');
452 TEST_BUG(a_str_at(ctx, 4) == 0);
453 a_str_die(ctx);
455 for (i = 1; i < argc; ++i)
457 a_str *ctx = a_str_new();
458 a_str_sets(ctx, argv[i]);
459 printf("%s %" PRIz "u\n", argv[i], a_str_utflen(ctx));
460 a_str_die(ctx);
462 return 0;