7 int cmp_int(const int *pa, const int *pb)
12 void assert_in_order(Array *arr)
14 for (size_t i = 1; i < arr->siz; i++)
15 assert(((int *) arr->ptr)[i - 1] <= ((int *) arr->ptr)[i]);
20 for (size_t i = 0; i < arr->siz; i++) {
21 printf("%d", ((int *) arr->ptr)[i]);
23 if (i != arr->siz - 1)
34 printf("testing ini\n");
35 array_ini(&arr, sizeof(int), 0, NULL);
37 printf("testing add\n");
38 i = 1; array_add(&arr, &i);
39 i = 3; array_add(&arr, &i);
40 i = 4; array_add(&arr, &i);
42 printf("testing put\n");
43 i = 2; array_put(&arr, &i, 1);
44 i = 5; array_put(&arr, &i, arr.siz);
46 printf("testing siz: exp: 5 got: %lu\n", arr.siz);
49 printf("testing cap: exp: 5 got: %lu\n", arr.cap);
52 printf("testing contents: exp: 1,2,3,4,5 got: "); dump(&arr); printf("\n");
53 for (size_t j = 0; j < arr.siz; j++)
54 assert((size_t) ((int *) arr.ptr)[j] == j + 1);
56 printf("testing cln\n");
57 array_cln(&arr2, &arr);
59 printf("testing equality: exp: "); dump(&arr); printf(" got: "); dump(&arr2);
62 for (size_t j = 0; j < arr.siz; j++)
63 assert(((int *) arr.ptr)[j] == ((int *) arr2.ptr)[j]);
65 printf("testing del\n");
69 printf("testing ini after del\n");
70 array_ini(&arr, sizeof(int), 5, (void *) &cmp_int);
72 printf("testing cap: exp: 0 got: %lu\n", arr.cap);
75 printf("testing overallocation\n");
76 i = 50; array_add(&arr, &i);
78 printf("testing cap: exp: 0 got: %lu\n", arr.cap);
81 printf("testing cap: exp: 6 got: %lu\n", arr.cap);
84 for (int j = 0; j < 7; j++) {
85 i = rand() % 100; array_add(&arr, &i);
88 printf("testing siz: exp: 8 got: %lu\n", arr.cap);
91 printf("testing cap: exp: 12 got: %lu\n", arr.cap);
92 assert(arr.cap == 12);
94 printf("testing grw\n");
97 printf("testing siz: exp: 13 got: %lu\n", arr.cap);
98 assert(arr.siz == 13);
100 printf("testing cap: exp: 18 got: %lu\n", arr.cap);
101 assert(arr.cap == 18);
103 printf("testing shr\n");
106 printf("testing siz: exp: 8 got: %lu\n", arr.cap);
107 assert(arr.siz == 8);
109 printf("testing cap: exp: 8 got: %lu\n", arr.cap);
110 assert(arr.cap == 8);
112 printf("testing srt\n");
115 printf("testing order: exp: (sorted) got: "); dump(&arr); printf("\n");
116 assert_in_order(&arr);
118 for (size_t j = 0; j < arr.siz; j++) {
119 i = ((int *) arr.ptr)[j]; ssize_t s = array_fnd(&arr, &i, NULL);
121 printf("testing fnd at index %lu: exp: >=0 got: %ld\n", j, s);
124 int k = ((int *) arr.ptr)[s];
126 printf("testing fnd at index %lu: exp: %d got: %d\n", j, i, k);
130 printf("testing ins\n");
131 for (int j = 0; j < 10; j++) {
132 i = rand() % 100; array_ins(&arr, &i);
135 printf("testing order: exp: (sorted) got: "); dump(&arr); printf("\n");
136 assert_in_order(&arr);