diff options
Diffstat (limited to 'tests/lists.c')
-rw-r--r-- | tests/lists.c | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/tests/lists.c b/tests/lists.c new file mode 100644 index 0000000..a8627ac --- /dev/null +++ b/tests/lists.c @@ -0,0 +1,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); + } +} + |