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