Blame


1 3e66d05b 2020-10-11 neels #include <stdio.h>
2 3e66d05b 2020-10-11 neels #include <stdlib.h>
3 3e66d05b 2020-10-11 neels #include <string.h>
4 3e66d05b 2020-10-11 neels #include <arraylist.h>
5 3e66d05b 2020-10-11 neels
6 3e66d05b 2020-10-11 neels void test_basic(void)
7 3e66d05b 2020-10-11 neels {
8 3e66d05b 2020-10-11 neels int *p;
9 3e66d05b 2020-10-11 neels ARRAYLIST(int) list;
10 3e66d05b 2020-10-11 neels ARRAYLIST_INIT(list, 2);
11 3e66d05b 2020-10-11 neels
12 3e66d05b 2020-10-11 neels #define dump() do {\
13 3e66d05b 2020-10-11 neels printf("(%d items)\n", list.len); \
14 3e66d05b 2020-10-11 neels ARRAYLIST_FOREACH(p, list) \
15 cdaa991d 2020-10-16 stsp printf("[%lu] %d\n", \
16 cdaa991d 2020-10-16 stsp (unsigned long)ARRAYLIST_IDX(p, list), *p); \
17 3e66d05b 2020-10-11 neels printf("\n"); \
18 3e66d05b 2020-10-11 neels } while(0)
19 3e66d05b 2020-10-11 neels
20 3e66d05b 2020-10-11 neels dump();
21 3e66d05b 2020-10-11 neels
22 3e66d05b 2020-10-11 neels ARRAYLIST_ADD(p, list);
23 3e66d05b 2020-10-11 neels *p = 100;
24 3e66d05b 2020-10-11 neels dump();
25 3e66d05b 2020-10-11 neels
26 3e66d05b 2020-10-11 neels ARRAYLIST_ADD(p, list);
27 3e66d05b 2020-10-11 neels *p = 101;
28 3e66d05b 2020-10-11 neels dump();
29 3e66d05b 2020-10-11 neels
30 3e66d05b 2020-10-11 neels ARRAYLIST_ADD(p, list);
31 3e66d05b 2020-10-11 neels *p = 102;
32 3e66d05b 2020-10-11 neels dump();
33 3e66d05b 2020-10-11 neels
34 3e66d05b 2020-10-11 neels #define insert_test(AT) do {\
35 3e66d05b 2020-10-11 neels printf("insert at [" #AT "]:\n"); \
36 3e66d05b 2020-10-11 neels ARRAYLIST_INSERT(p, list, AT); \
37 3e66d05b 2020-10-11 neels *p = AT; \
38 3e66d05b 2020-10-11 neels dump(); \
39 3e66d05b 2020-10-11 neels } while(0)
40 3e66d05b 2020-10-11 neels
41 3e66d05b 2020-10-11 neels insert_test(list.len - 1);
42 3e66d05b 2020-10-11 neels insert_test(1);
43 3e66d05b 2020-10-11 neels insert_test(0);
44 3e66d05b 2020-10-11 neels insert_test(6);
45 3e66d05b 2020-10-11 neels insert_test(123);
46 3e66d05b 2020-10-11 neels insert_test(-42);
47 3e66d05b 2020-10-11 neels
48 3e66d05b 2020-10-11 neels printf("clear:\n");
49 3e66d05b 2020-10-11 neels ARRAYLIST_CLEAR(list);
50 3e66d05b 2020-10-11 neels dump();
51 3e66d05b 2020-10-11 neels
52 3e66d05b 2020-10-11 neels ARRAYLIST_FREE(list);
53 3e66d05b 2020-10-11 neels }
54 3e66d05b 2020-10-11 neels
55 3e66d05b 2020-10-11 neels int main(void)
56 3e66d05b 2020-10-11 neels {
57 3e66d05b 2020-10-11 neels test_basic();
58 3e66d05b 2020-10-11 neels }