diff --git a/src/containers/wapp_containers.c b/src/containers/wapp_containers.c index 3a6d76f..b9f25a8 100644 --- a/src/containers/wapp_containers.c +++ b/src/containers/wapp_containers.c @@ -2,6 +2,7 @@ #define WAPP_CONTAINERS_C #include "wapp_containers.h" +#include "array/array.c" #include "dbl_list/dbl_list.c" #endif // !WAPP_CONTAINERS_C diff --git a/tests/array/test_i32_array.c b/tests/array/test_i32_array.c new file mode 100644 index 0000000..8d56e53 --- /dev/null +++ b/tests/array/test_i32_array.c @@ -0,0 +1,124 @@ +#include "test_i32_array.h" +#include "wapp.h" +#include + +TestFuncResult test_i32_array(void) { + bool result; + + I32Array array = wapp_i32_array(1, 2, 3, 4, 5, 6, 7); + result = array.count == 7 && array.capacity == 16; + + i32 *item; + u64 count = array.count; + for (u64 i = 0; i < count; ++i) { + item = wapp_i32_array_get(&array, i); + result = result && item && (*item == (i32)(i + 1)); + } + + return wapp_tester_result(result); +} + +TestFuncResult test_i32_array_with_capacity(void) { + bool result; + + I32Array array = wapp_i32_array_with_capacity(64); + result = array.count == 0 && array.capacity == 64; + + return wapp_tester_result(result); +} + +TestFuncResult test_i32_array_get(void) { + bool result = true; + + I32Array array = wapp_i32_array(0, 1, 2, 3, 4, 5, 6, 7, 8); + + i32 *item; + u64 count = array.count; + for (u64 i = 0; i < count; ++i) { + item = wapp_i32_array_get(&array, i); + result = result && item && (*item == (i32)i); + } + + return wapp_tester_result(result); +} + +TestFuncResult test_i32_array_set(void) { + bool result = true; + + I32Array array = wapp_i32_array(0, 1, 2, 3, 4, 5, 6, 7, 8); + + i32 *item; + u64 count = array.count; + for (u64 i = 0; i < count; ++i) { + wapp_i32_array_set(&array, i, (i32)(i * 2)); + item = wapp_i32_array_get(&array, i); + result = result && item && (*item == (i32)(i * 2)); + } + + return wapp_tester_result(result); +} + +TestFuncResult test_i32_array_append_capped(void) { + bool result; + + I32Array array = wapp_i32_array_with_capacity(64); + wapp_i32_array_append_capped(&array, 10); + + result = array.count == 1; + i32 *item = wapp_i32_array_get(&array, 0); + result = result && item && *item == 10; + + array = wapp_i32_array(1); + wapp_i32_array_append_capped(&array, 10); + wapp_i32_array_append_capped(&array, 20); + + result = result && array.count == 2; + + return wapp_tester_result(result); +} + +TestFuncResult test_i32_array_extend_capped(void) { + bool result; + + I32Array array1 = wapp_i32_array(1, 2, 3, 4); + I32Array array2 = wapp_i32_array(10, 20); + + result = array1.count == 4 && array2.count == 2; + + wapp_i32_array_extend_capped(&array1, &array2); + + result = result && array1.count == 6; + + wapp_i32_array_extend_capped(&array1, &array1); + + result = result && array1.count == 6; + + return wapp_tester_result(result); +} + +TestFuncResult test_i32_array_clear(void) { + bool result; + + I32Array array = wapp_i32_array(0, 1, 2, 3, 4, 5, 6, 7, 8); + result = array.count == 9; + + wapp_i32_array_clear(&array); + + result = result && array.count == 0; + + return wapp_tester_result(result); +} + +TestFuncResult test_i32_array_pop(void) { + bool result; + + I32Array array1 = wapp_i32_array(0, 1, 2, 3, 4, 5, 6, 7, 8); + I32Array array2 = wapp_i32_array_with_capacity(32); + + i32 item1 = wapp_i32_array_pop(&array1); + i32 item2 = wapp_i32_array_pop(&array2); + + result = item1 == 8 && item2 == 0; + + return wapp_tester_result(result); +} diff --git a/tests/array/test_i32_array.h b/tests/array/test_i32_array.h new file mode 100644 index 0000000..09b0039 --- /dev/null +++ b/tests/array/test_i32_array.h @@ -0,0 +1,23 @@ +#ifndef TEST_INT_ARRAY_H +#define TEST_INT_ARRAY_H + +#include "wapp.h" + +#ifdef WAPP_PLATFORM_CPP +BEGIN_C_LINKAGE +#endif // WAPP_PLATFORM_CPP + +TestFuncResult test_i32_array(void); +TestFuncResult test_i32_array_with_capacity(void); +TestFuncResult test_i32_array_get(void); +TestFuncResult test_i32_array_set(void); +TestFuncResult test_i32_array_append_capped(void); +TestFuncResult test_i32_array_extend_capped(void); +TestFuncResult test_i32_array_clear(void); +TestFuncResult test_i32_array_pop(void); + +#ifdef WAPP_PLATFORM_CPP +END_C_LINKAGE +#endif // WAPP_PLATFORM_CPP + +#endif // !TEST_INT_ARRAY_H diff --git a/tests/wapptest.c b/tests/wapptest.c index cfd6a59..63a224f 100644 --- a/tests/wapptest.c +++ b/tests/wapptest.c @@ -2,6 +2,7 @@ #include "test_str8_list.h" #include "test_allocator.h" #include "test_arena.h" +#include "test_i32_array.h" #include "test_cpath.h" #include "test_shell_commander.h" #include "wapp.h" @@ -17,6 +18,14 @@ int main(void) { test_arena_realloc_smaller_size, test_arena_clear, test_arena_destroy, + test_i32_array, + test_i32_array_with_capacity, + test_i32_array_get, + test_i32_array_set, + test_i32_array_append_capped, + test_i32_array_extend_capped, + test_i32_array_clear, + test_i32_array_pop, test_str8_lit, test_str8_lit_ro, test_str8_buf,