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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#include "../List.h"
#include <assert.h>
int compareFunction(void* a, void* b) {
return a < b
? -1
: (a > b ? +1 : 0);
}
void testQSort() {
int cmpArray[26] = { 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 };
struct List* lst = List_create();
List_pushBack(lst, (void*)24);
List_pushBack(lst, (void*)25);
List_pushBack(lst, (void*)26);
List_pushBack(lst, (void*)1);
List_pushBack(lst, (void*)2);
List_pushBack(lst, (void*)3);
List_pushBack(lst, (void*)4);
List_pushBack(lst, (void*)5);
List_pushBack(lst, (void*)6);
List_pushBack(lst, (void*)7);
List_pushBack(lst, (void*)8);
List_pushBack(lst, (void*)9);
List_pushBack(lst, (void*)10);
List_pushBack(lst, (void*)11);
List_pushBack(lst, (void*)12);
List_pushBack(lst, (void*)13);
List_pushBack(lst, (void*)14);
List_pushBack(lst, (void*)15);
List_pushBack(lst, (void*)16);
List_pushBack(lst, (void*)17);
List_pushBack(lst, (void*)18);
List_pushBack(lst, (void*)19);
List_pushBack(lst, (void*)20);
List_pushBack(lst, (void*)21);
List_pushBack(lst, (void*)22);
List_pushBack(lst, (void*)23);
List_qSort(lst, compareFunction);
ListNode* node = lst->first;
for (int i=0; i < 26; ++i) {
printf("%d assumed. Is %d\n", cmpArray[i], (int)node->data);
/* assert(cmpArray[i] == node->data); */
node = node->next;
}
List_destroy(lst);
}
void testQSortLow() {
int cmpArray[2] = { 1, 2 };
struct List* lst = List_create();
List_pushBack(lst, (void*)1);
List_pushBack(lst, (void*)2);
List_qSort(lst, compareFunction);
ListNode* node = lst->first;
for (int i=0; i < 2; ++i) {
printf("%d assumed. Is %d\n", cmpArray[i], (int)node->data);
/* assert(cmpArray[i] == node->data); */
node = node->next;
}
List_destroy(lst);
}
void testQSortEmpty() {
struct List* lst = List_create();
List_qSort(lst, compareFunction);
ListNode* node = lst->first;
assert(NULL == lst->first);
assert(NULL == lst->last);
List_destroy(lst);
}
int main() {
testQSort();
testQSortLow();
testQSortEmpty();
return 0;
}