diff options
author | bonmas14 <bonmas14@gmail.com> | 2025-08-02 23:20:37 +0000 |
---|---|---|
committer | bonmas14 <bonmas14@gmail.com> | 2025-08-02 23:20:37 +0000 |
commit | 1cf89852f951b59b89f2a8bd7b54a0b0b74d439c (patch) | |
tree | 884af08903beba5f0e1e8435df4a1c7015270487 /tests | |
download | ungrateful-1cf89852f951b59b89f2a8bd7b54a0b0b74d439c.tar.gz ungrateful-1cf89852f951b59b89f2a8bd7b54a0b0b74d439c.zip |
memory manipulation, strings, allocators list and logger.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/allocs.c | 39 | ||||
-rw-r--r-- | tests/hello_world.c | 7 | ||||
-rw-r--r-- | tests/lists.c | 50 | ||||
-rw-r--r-- | tests/memctl.c | 42 | ||||
-rw-r--r-- | tests/strings.c | 103 |
5 files changed, 241 insertions, 0 deletions
diff --git a/tests/allocs.c b/tests/allocs.c new file mode 100644 index 0000000..608d9f4 --- /dev/null +++ b/tests/allocs.c @@ -0,0 +1,39 @@ +#include <ungrateful.h> + +int main(void) { + u64 i, size, *value; + size = UN_KB(1); + + { // std + Allocator std = un_allocator_get_standard(); + void *mem = un_memory_alloc(size, std); + + if (mem != NULL) { + un_memory_free(mem, std); + } + } + + { // temp + Allocator temp = un_allocator_get_temporary(); + + u8 *mem = (u8*) un_memory_alloc(size, temp); + assert(mem != NULL); + + for (i = 0; i < size; i++) { + mem[i] = 0xAB; + } + + un_memory_destroy(&temp); + } + + { // arena + Allocator arena = un_allocator_create_arena(size); + + for (i = 0; i < 1000; i++) { + value = un_memory_alloc(8, arena); + *value = 0xAC; + } + + un_memory_destroy(&arena); + } +} diff --git a/tests/hello_world.c b/tests/hello_world.c new file mode 100644 index 0000000..78f6c29 --- /dev/null +++ b/tests/hello_world.c @@ -0,0 +1,7 @@ +#include <ungrateful.h> + +int main(void) { + un_log_write(UN_LOG_INFO, un_string_from_cstring(UN_CSTR "Hello world!")); + + return 0; +} 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); + } +} + diff --git a/tests/memctl.c b/tests/memctl.c new file mode 100644 index 0000000..1614442 --- /dev/null +++ b/tests/memctl.c @@ -0,0 +1,42 @@ +#include <ungrateful.h> + +#define SIZE UN_KB(1) + +u8 buffer_a[SIZE]; +u8 buffer_b[SIZE]; + +int main(void) { + u64 i; + for (i = 0; i < SIZE; i++) { + buffer_a[i] += i << 2; + } + + { + un_memory_copy(buffer_b, buffer_a, SIZE); + + for (i = 0; i < SIZE; i++) { + assert(buffer_b[i] == buffer_a[i]); + } + + assert(un_memory_compare(buffer_a, buffer_b, SIZE) == 0); + + buffer_b[SIZE - 10] = 0; + assert(un_memory_compare(buffer_a, buffer_b, SIZE) == 1); + } + + { + un_memory_move(buffer_a + SIZE / 4, buffer_a, SIZE / 2); + + assert(un_memory_compare(buffer_b, buffer_a + SIZE / 4, SIZE / 2) == 0); + } + + { + un_memory_set(buffer_a, 0, SIZE); + + for (i = 0; i < SIZE; i++) { + assert(buffer_a[i] == 0); + } + } + + return 0; +} diff --git a/tests/strings.c b/tests/strings.c new file mode 100644 index 0000000..d49d525 --- /dev/null +++ b/tests/strings.c @@ -0,0 +1,103 @@ +#include <ungrateful.h> + +int main(void) { + List splits; + Allocator talloc; + String result; + + assert(un_string_get_length(UN_CSTR "Hello") == 5); + assert(un_string_get_length(UN_CSTR "") == 0); + assert(un_string_get_length(UN_CSTR "What") == 4); + + talloc = un_allocator_get_temporary(); + + result = un_string_concat(UN_STR("Hello "), UN_STR("world!"), talloc); + assert(!un_string_compare(result, UN_STR("Hello world!"))); + + assert(!un_string_compare(un_string_copy(result, talloc), result)); + + splits = un_string_split(UN_STR("Eatin burger wit no honey mustard"), UN_STR(" "), talloc); + + assert(splits.count == 6); + + assert(!un_string_compare(*(String*)un_list_get(&splits, 0), UN_STR("Eatin"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 1), UN_STR("burger"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 2), UN_STR("wit"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 3), UN_STR("no"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 4), UN_STR("honey"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 5), UN_STR("mustard"))); + + un_list_destroy(&splits); + + splits = un_string_split(UN_STR("Eatin||burger||wit||no||honey||mustard"), UN_STR("||"), talloc); + + assert(splits.count == 6); + + assert(!un_string_compare(*(String*)un_list_get(&splits, 0), UN_STR("Eatin"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 1), UN_STR("burger"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 2), UN_STR("wit"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 3), UN_STR("no"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 4), UN_STR("honey"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 5), UN_STR("mustard"))); + + un_list_destroy(&splits); + + splits = un_string_split(UN_STR("Eatin||burger||wit||no||honey||mustard||a"), UN_STR("||"), talloc); + + assert(splits.count == 7); + + assert(!un_string_compare(*(String*)un_list_get(&splits, 0), UN_STR("Eatin"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 1), UN_STR("burger"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 2), UN_STR("wit"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 3), UN_STR("no"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 4), UN_STR("honey"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 5), UN_STR("mustard"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 6), UN_STR("a"))); + + un_list_destroy(&splits); + + splits = un_string_split(UN_STR("a||Eatin||burger||wit||no||honey||mustard||a"), UN_STR("||"), talloc); + + assert(splits.count == 8); + + assert(!un_string_compare(*(String*)un_list_get(&splits, 0), UN_STR("a"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 1), UN_STR("Eatin"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 2), UN_STR("burger"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 3), UN_STR("wit"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 4), UN_STR("no"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 5), UN_STR("honey"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 6), UN_STR("mustard"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 7), UN_STR("a"))); + + un_list_destroy(&splits); + + splits = un_string_split(UN_STR("||Eatin||burger||wit||no||honey||mustard||"), UN_STR("||"), talloc); + + assert(splits.count == 6); + + assert(!un_string_compare(*(String*)un_list_get(&splits, 0), UN_STR("Eatin"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 1), UN_STR("burger"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 2), UN_STR("wit"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 3), UN_STR("no"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 4), UN_STR("honey"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 5), UN_STR("mustard"))); + + assert(!un_string_compare(un_string_join(splits, UN_STR(" "), talloc), UN_STR("Eatin burger wit no honey mustard"))); + + un_list_destroy(&splits); + + assert(!un_string_compare(un_string_substring(UN_STR("HelloWorld!"), 5, 6), UN_STR("World!"))); + assert(!un_string_compare(un_string_substring(UN_STR("HelloWorld!"), 0, 11), UN_STR("HelloWorld!"))); + assert(!un_string_compare(un_string_substring(UN_STR("HelloWorld!"), 10, 1), UN_STR("!"))); + + assert(un_string_index_of(UN_STR("CP/M"), (u8)'/', 0) == 2); + assert(un_string_index_of_last(UN_STR("https://github.com/bonmas14"), (u8)'/') == 18); + + assert(!un_string_compare(un_string_swap(UN_STR("/path/from/unix/systems/"), (u8)'/', (u8) '\\', talloc), UN_STR("\\path\\from\\unix\\systems\\"))); + + assert(!un_string_compare( + un_string_format(talloc, UN_STR("/path/%s/unix/a %d %u %%"), UN_STR("test"), (s64)-100, (u64)404), + UN_STR("/path/test/unix/a -100 404 %") + ) + ); +} |