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)
30 printf("-------------\n");
31 printf("Testing Array\n");
32 printf("-------------\n");
38 printf("testing ini\n");
39 array_ini(&arr, sizeof(int), 0);
41 printf("testing add\n");
42 i = 1; array_add(&arr, &i);
43 i = 3; array_add(&arr, &i);
44 i = 4; array_add(&arr, &i);
46 printf("testing put\n");
47 i = 2; array_put(&arr, &i, 1);
48 i = 5; array_put(&arr, &i, arr.siz);
50 printf("testing siz: exp: 5 got: %lu\n", arr.siz);
53 printf("testing cap: exp: 5 got: %lu\n", arr.cap);
56 printf("testing contents: exp: 1,2,3,4,5 got: "); dump(&arr); printf("\n");
57 for (size_t j = 0; j < arr.siz; j++)
58 assert((size_t) ((int *) arr.ptr)[j] == j + 1);
60 printf("testing cln\n");
61 array_cln(&arr2, &arr);
63 printf("testing equality: exp: "); dump(&arr); printf(" got: "); dump(&arr2);
66 for (size_t j = 0; j < arr.siz; j++)
67 assert(((int *) arr.ptr)[j] == ((int *) arr2.ptr)[j]);
69 printf("testing clr\n");
73 printf("testing ini after clr\n");
74 array_ini(&arr, sizeof(int), 5);
76 printf("testing cap: exp: 0 got: %lu\n", arr.cap);
79 printf("testing overallocation\n");
80 i = 50; array_add(&arr, &i);
82 printf("testing cap: exp: 0 got: %lu\n", arr.cap);
85 printf("testing cap: exp: 6 got: %lu\n", arr.cap);
88 for (int j = 0; j < 7; j++) {
89 i = rand() % 100; array_add(&arr, &i);
92 printf("testing siz: exp: 8 got: %lu\n", arr.cap);
95 printf("testing cap: exp: 12 got: %lu\n", arr.cap);
96 assert(arr.cap == 12);
98 printf("testing grw\n");
101 printf("testing siz: exp: 13 got: %lu\n", arr.cap);
102 assert(arr.siz == 13);
104 printf("testing cap: exp: 18 got: %lu\n", arr.cap);
105 assert(arr.cap == 18);
107 printf("testing shr\n");
110 printf("testing siz: exp: 8 got: %lu\n", arr.cap);
111 assert(arr.siz == 8);
113 printf("testing cap: exp: 8 got: %lu\n", arr.cap);
114 assert(arr.cap == 8);
116 printf("testing srt\n");
117 array_srt(&arr, (void *) &cmp_int);
119 printf("testing order: exp: (sorted) got: "); dump(&arr); printf("\n");
120 assert_in_order(&arr);
122 for (size_t j = 0; j < arr.siz; j++) {
123 i = ((int *) arr.ptr)[j];
124 ssize_t s = array_fnd(&arr, &i, NULL, (void *) &cmp_int);
126 printf("testing fnd at index %lu: exp: >=0 got: %ld\n", j, s);
129 int k = ((int *) arr.ptr)[s];
131 printf("testing fnd at index %lu: exp: %d got: %d\n", j, i, k);
135 printf("testing ins\n");
136 for (int j = 0; j < 10; j++) {
137 i = rand() % 100; array_ins(&arr, &i, (void *) &cmp_int);
140 printf("testing order: exp: (sorted) got: "); dump(&arr); printf("\n");
141 assert_in_order(&arr);