aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorbonmas14 <bonmas14@gmail.com>2025-08-02 23:20:37 +0000
committerbonmas14 <bonmas14@gmail.com>2025-08-02 23:20:37 +0000
commit1cf89852f951b59b89f2a8bd7b54a0b0b74d439c (patch)
tree884af08903beba5f0e1e8435df4a1c7015270487 /tests
downloadungrateful-1cf89852f951b59b89f2a8bd7b54a0b0b74d439c.tar.gz
ungrateful-1cf89852f951b59b89f2a8bd7b54a0b0b74d439c.zip
memory manipulation, strings, allocators list and logger.
Diffstat (limited to 'tests')
-rw-r--r--tests/allocs.c39
-rw-r--r--tests/hello_world.c7
-rw-r--r--tests/lists.c50
-rw-r--r--tests/memctl.c42
-rw-r--r--tests/strings.c103
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 %")
+ )
+ );
+}