aboutsummaryrefslogtreecommitdiff
path: root/tests/un/lists.c
blob: a8627acfc2131fe904a900b66562e90c8e2b6bf0 (plain)
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
#include <ungrateful.h>

int main(void) {
    u64 i, v, times, size;
    List list;
    Allocator alloc;

    size = 16;
    times = 4;

    {
        alloc = un_allocator_get_standard();
        list = un_list_create(size, sizeof(u64), alloc);

        assert(un_list_get(&list, 0) == NULL);

        for (i = 0; i < size; i++) {
            v = i * times;

            un_list_append(&list, (void *)(&v));
        }

        assert(*(u64*)un_list_get(&list, size - 1) == ((size - 1) * times));

        for (i = 0; i < size; i++) {
            v = *(u64*)un_list_get(&list, i);
            assert(v == i * times);
        }

        un_list_remove(&list, 0);
        assert(*(u64*)un_list_get(&list, 0) == times);

        un_list_remove(&list, list.count); // will be ignored
        un_list_remove(&list, list.count - 1);

        assert(list.count == (size - 2));

        for (i = 0; i < size; i++) {
            v = i * times;
            un_list_append(&list, (void *)(&v));
        }

        assert(list.capacity == (size * 2));

        un_list_destroy(&list);

        assert(list.data == NULL);
    }
}