root/tests/ListTest.c

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;
}