Add queue implementation

This commit is contained in:
2026-01-11 23:46:23 +00:00
parent 9af9cedd51
commit a9f5b9c3c6
9 changed files with 245 additions and 1 deletions

63
tests/queue/test_queue.c Normal file
View File

@@ -0,0 +1,63 @@
// vim:fileencoding=utf-8:foldmethod=marker
#include "wapp.h"
#include "test_queue.h"
wapp_persist Allocator arena = {0};
wapp_persist I32Queue queue;
TestFuncResult test_queue_push_back(void) {
arena = wapp_mem_arena_allocator_init(MB(64));
b8 result = true;
queue = wapp_queue_alloc(i32, &arena, 64);
result = result && queue.items != NULL && wapp_queue_capacity(&queue) == 64 && wapp_queue_count(&queue) == 0;
i32 n1 = 1;
i32 n2 = 2;
i32 n3 = 3;
i32 n4 = 4;
i32 n5 = 5;
wapp_queue_push_back(i32, &queue, &n1);
result = result && wapp_queue_count(&queue) == 1;
wapp_queue_push_back(i32, &queue, &n2);
result = result && wapp_queue_count(&queue) == 2;
wapp_queue_push_back(i32, &queue, &n3);
result = result && wapp_queue_count(&queue) == 3;
wapp_queue_push_back(i32, &queue, &n4);
result = result && wapp_queue_count(&queue) == 4;
wapp_queue_push_back(i32, &queue, &n5);
result = result && wapp_queue_count(&queue) == 5;
return wapp_tester_result(result);
}
TestFuncResult test_queue_pop_front(void) {
b8 result = true;
i32 num;
wapp_queue_pop_front(i32, &queue, &num);
result = result && num == 1;
wapp_queue_pop_front(i32, &queue, &num);
result = result && num == 2;
wapp_queue_pop_front(i32, &queue, &num);
result = result && num == 3;
wapp_queue_pop_front(i32, &queue, &num);
result = result && num == 4;
wapp_queue_pop_front(i32, &queue, &num);
result = result && num == 5;
wapp_mem_arena_allocator_destroy(&arena);
return wapp_tester_result(result);
}