aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorbonmas14 <bonmas14@gmail.com>2025-08-23 01:28:41 +0300
committerbonmas14 <bonmas14@gmail.com>2025-08-23 01:28:41 +0300
commit8ebdc95621bc61fdf3c98cd7ae4ddca67398df23 (patch)
tree205413ed09ac001e37267889d429a363c37008f2 /tests
parentc96c355b360f18f982459e1a866dcbf5864efdb8 (diff)
downloadungrateful-8ebdc95621bc61fdf3c98cd7ae4ddca67398df23.tar.gz
ungrateful-8ebdc95621bc61fdf3c98cd7ae4ddca67398df23.zip
Ungrateful changes, added more stuffHEADmain
Diffstat (limited to 'tests')
-rw-r--r--tests/un/allocs.c11
-rw-r--r--tests/un/lists.c20
-rw-r--r--tests/un/math.c2
-rw-r--r--tests/un/mathd.c28
-rw-r--r--tests/un/mathf.c28
-rw-r--r--tests/un/mathr.c280
-rw-r--r--tests/un/matrix.c8
-rw-r--r--tests/un/strings.c10
-rw-r--r--tests/un/win_wstr.c26
9 files changed, 118 insertions, 295 deletions
diff --git a/tests/un/allocs.c b/tests/un/allocs.c
index 608d9f4..3348e70 100644
--- a/tests/un/allocs.c
+++ b/tests/un/allocs.c
@@ -36,4 +36,15 @@ int main(void) {
un_memory_destroy(&arena);
}
+
+ { // wrapper
+ Allocator wrapper = un_allocator_create_wrapper(un_allocator_create_arena(size));
+
+ for (i = 0; i < 1000; i++) {
+ value = un_memory_alloc(8, wrapper);
+ *value = 0xAC;
+ }
+
+ un_memory_destroy(&wrapper);
+ }
}
diff --git a/tests/un/lists.c b/tests/un/lists.c
index a8627ac..bacb358 100644
--- a/tests/un/lists.c
+++ b/tests/un/lists.c
@@ -2,22 +2,21 @@
int main(void) {
u64 i, v, times, size;
- List list;
- Allocator alloc;
+ List list = { 0 };
- size = 16;
+ size = UN_LIST_STANDARD_CAPACITY;
times = 4;
{
- alloc = un_allocator_get_standard();
- list = un_list_create(size, sizeof(u64), alloc);
+ list.alloc = un_allocator_get_temporary();
+ list.element_size = sizeof(u64);
assert(un_list_get(&list, 0) == NULL);
for (i = 0; i < size; i++) {
v = i * times;
- un_list_append(&list, (void *)(&v));
+ assert(un_list_append(&list, (void *)(&v)));
}
assert(*(u64*)un_list_get(&list, size - 1) == ((size - 1) * times));
@@ -31,20 +30,23 @@ int main(void) {
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 - 1));
+ 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(un_list_append(&list, (void *)(&v)));
}
assert(list.capacity == (size * 2));
- un_list_destroy(&list);
+ un_list_destroy(&list, true);
assert(list.data == NULL);
}
+
+ return 0;
}
diff --git a/tests/un/math.c b/tests/un/math.c
index eab0dcb..8b8df67 100644
--- a/tests/un/math.c
+++ b/tests/un/math.c
@@ -14,7 +14,7 @@ int main() {
assert(fabsf(f - 1.5f) < EPSILON);
d = un_m_lerpd(1.0, 2.0, 0.5);
- assert(fabs(d - 1.5) < 0.000001);
+ assert(fabs(d - 1.5) < EPSILON);
}
// Test Bezier curve functions
diff --git a/tests/un/mathd.c b/tests/un/mathd.c
index 3381dfb..829a4a6 100644
--- a/tests/un/mathd.c
+++ b/tests/un/mathd.c
@@ -276,5 +276,33 @@ int main() {
un_memory_set((void*)v, 0, sizeof(*v) * 4);
}
+ { // Complex
+ f64 v[2], a[2] = { 1, 2 }, b[2] = { 3, 4 }, c[2] = { 1, 0 }, d[3] = { 0, 1 };
+
+ un_m_complex_addd(v, a, b);
+ assert((v[0] - 4.0) < EPSILON);
+ assert((v[1] - 6.0) < EPSILON);
+ un_memory_set((void*)v, 0, sizeof(*v) * 2);
+
+ un_m_complex_subd(v, a, b);
+ assert((v[0] + 2.0) < EPSILON);
+ assert((v[1] + 2.0) < EPSILON);
+ un_memory_set((void*)v, 0, sizeof(*v) * 2);
+
+ un_m_complex_muld(v, a, b);
+ assert((v[0] + 5.0) < EPSILON);
+ assert((v[1] - 10.0) < EPSILON);
+ un_memory_set((void*)v, 0, sizeof(*v) * 2);
+
+ un_m_complex_divd(v, c, d);
+ assert(v[0] < EPSILON);
+ assert((v[1] + 1.0) < EPSILON);
+ un_memory_set((void*)v, 0, sizeof(*v) * 2);
+
+ un_m_complex_magnituded(v, c);
+ assert((v[0] - 1.0) < EPSILON);
+ un_memory_set((void*)v, 0, sizeof(*v) * 2);
+ }
+
return 0;
}
diff --git a/tests/un/mathf.c b/tests/un/mathf.c
index cd3a24f..2f95f40 100644
--- a/tests/un/mathf.c
+++ b/tests/un/mathf.c
@@ -276,5 +276,33 @@ int main() {
un_memory_set((void*)v, 0, sizeof(*v) * 4);
}
+ { // Complex
+ f32 v[2], a[2] = { 1, 2 }, b[2] = { 3, 4 }, c[2] = { 1, 0 }, d[3] = { 0, 1 };
+
+ un_m_complex_addf(v, a, b);
+ assert((v[0] - 4.0) < EPSILON);
+ assert((v[1] - 6.0) < EPSILON);
+ un_memory_set((void*)v, 0, sizeof(*v) * 2);
+
+ un_m_complex_subf(v, a, b);
+ assert((v[0] + 2.0) < EPSILON);
+ assert((v[1] + 2.0) < EPSILON);
+ un_memory_set((void*)v, 0, sizeof(*v) * 2);
+
+ un_m_complex_mulf(v, a, b);
+ assert((v[0] + 5.0) < EPSILON);
+ assert((v[1] - 10.0) < EPSILON);
+ un_memory_set((void*)v, 0, sizeof(*v) * 2);
+
+ un_m_complex_divf(v, c, d);
+ assert(v[0] < EPSILON);
+ assert((v[1] + 1.0) < EPSILON);
+ un_memory_set((void*)v, 0, sizeof(*v) * 2);
+
+ un_m_complex_magnitudef(v, c);
+ assert((v[0] - 1.0) < EPSILON);
+ un_memory_set((void*)v, 0, sizeof(*v) * 2);
+ }
+
return 0;
}
diff --git a/tests/un/mathr.c b/tests/un/mathr.c
deleted file mode 100644
index 05653b4..0000000
--- a/tests/un/mathr.c
+++ /dev/null
@@ -1,280 +0,0 @@
-#include <ungrateful.h>
-
-int main() {
- /* 2d */
- {
- real a[2] = {1.0, 2.0};
- real b[2] = {3.0, 4.0};
- real n[2] = {0.0, 1.0};
- real v[2];
-
- un_m_add2r(v, a, b);
- assert(fabs(v[0] - 4.0) < EPSILON);
- assert(fabs(v[1] - 6.0) < EPSILON);
- un_memory_set((void*)v, 0, sizeof(*v) * 2);
-
- un_m_sub2r(v, a, b);
- assert(fabs(v[0] + 2.0) < EPSILON);
- assert(fabs(v[1] + 2.0) < EPSILON);
- un_memory_set((void*)v, 0, sizeof(*v) * 2);
-
- un_m_add_scalar2r(v, a, 1);
- assert(fabs(v[0] - 2.0) < EPSILON);
- assert(fabs(v[1] - 3.0) < EPSILON);
- un_memory_set((void*)v, 0, sizeof(*v) * 2);
-
- un_m_sub_scalar2r(v, a, 1);
- assert(fabs(v[0]) < EPSILON);
- assert(fabs(v[1] - 1.0) < EPSILON);
- un_memory_set((void*)v, 0, sizeof(*v) * 2);
-
- un_m_mul_scalar2r(v, a, 2);
- assert(fabs(v[0] - 2.0) < EPSILON);
- assert(fabs(v[1] - 4.0) < EPSILON);
- un_memory_set((void*)v, 0, sizeof(*v) * 2);
-
- un_m_div_scalar2r(v, a, 2);
- assert(fabs(v[0] - 0.5) < EPSILON);
- assert(fabs(v[1] - 1.0) < EPSILON);
- un_memory_set((void*)v, 0, sizeof(*v) * 2);
-
- un_m_dot2r(v, a, b);
- assert(fabs(v[0] - 11.0) < EPSILON);
- un_memory_set((void*)v, 0, sizeof(*v) * 2);
-
- un_m_hadamard2r(v, a, b);
- assert(fabs(v[0] - 3.0) < EPSILON);
- assert(fabs(v[1] - 8.0) < EPSILON);
- un_memory_set((void*)v, 0, sizeof(*v) * 2);
-
- un_m_project2r(v, a, b);
- assert(fabs(v[0] - 1.32) < EPSILON);
- assert(fabs(v[1] - 1.76) < EPSILON);
- un_memory_set((void*)v, 0, sizeof(*v) * 2);
-
- un_m_cross2r(v, a);
- assert(fabs(v[0] - 2.0) < EPSILON);
- assert(fabs(v[1] + 1.0) < EPSILON);
- un_memory_set((void*)v, 0, sizeof(*v) * 2);
-
- un_m_magnitude2r(v, b);
- assert(fabs(v[0] - 5.0) < EPSILON);
- un_memory_set((void*)v, 0, sizeof(*v) * 2);
-
- un_m_magnitude_sqr2r(v, b);
- assert(fabs(v[0] - 25.0) < EPSILON);
- un_memory_set((void*)v, 0, sizeof(*v) * 2);
-
- un_m_distance2r(v, a, b);
- assert(fabs(v[0] - sqrt(8.0)) < EPSILON);
- un_memory_set((void*)v, 0, sizeof(*v) * 2);
-
- un_m_distance_sqr2r(v, a, b);
- assert(fabs(v[0] - 8.0) < EPSILON);
- un_memory_set((void*)v, 0, sizeof(*v) * 2);
-
- un_m_normalize2r(v, b);
- assert(fabs(v[0] - 0.6) < EPSILON);
- assert(fabs(v[1] - 0.8) < EPSILON);
- un_memory_set((void*)v, 0, sizeof(*v) * 2);
-
- un_m_reflect2r(v, a, n);
- assert(fabs(v[0] + a[0]) < EPSILON);
- assert(fabs(v[1] - a[1]) < EPSILON);
- un_memory_set((void*)v, 0, sizeof(*v) * 2);
- }
-
- /* 3d */
- {
- real a[3] = {1.0, 2.0, 3.0};
- real b[3] = {3.0, 4.0, 5.0};
- real n[3] = {0.0, 1.0, 0.0};
- real v[3];
-
- un_m_add3r(v, a, b);
- assert(fabs(v[0] - 4.0) < EPSILON);
- assert(fabs(v[1] - 6.0) < EPSILON);
- assert(fabs(v[2] - 8.0) < EPSILON);
- un_memory_set((void*)v, 0, sizeof(*v) * 3);
-
- un_m_sub3r(v, a, b);
- assert(fabs(v[0] + 2.0) < EPSILON);
- assert(fabs(v[1] + 2.0) < EPSILON);
- assert(fabs(v[2] + 2.0) < EPSILON);
- un_memory_set((void*)v, 0, sizeof(*v) * 3);
-
- un_m_add_scalar3r(v, a, 1);
- assert(fabs(v[0] - 2.0) < EPSILON);
- assert(fabs(v[1] - 3.0) < EPSILON);
- assert(fabs(v[2] - 4.0) < EPSILON);
- un_memory_set((void*)v, 0, sizeof(*v) * 3);
-
- un_m_sub_scalar3r(v, a, 1);
- assert(fabs(v[0]) < EPSILON);
- assert(fabs(v[1] - 1.0) < EPSILON);
- assert(fabs(v[2] - 2.0) < EPSILON);
- un_memory_set((void*)v, 0, sizeof(*v) * 3);
-
- un_m_mul_scalar3r(v, a, 2);
- assert(fabs(v[0] - 2.0) < EPSILON);
- assert(fabs(v[1] - 4.0) < EPSILON);
- assert(fabs(v[2] - 6.0) < EPSILON);
- un_memory_set((void*)v, 0, sizeof(*v) * 3);
-
- un_m_div_scalar3r(v, a, 2);
- assert(fabs(v[0] - 0.5) < EPSILON);
- assert(fabs(v[1] - 1.0) < EPSILON);
- assert(fabs(v[2] - 1.5) < EPSILON);
- un_memory_set((void*)v, 0, sizeof(*v) * 3);
-
- un_m_dot3r(v, a, b);
- assert(fabs(v[0] - 26.0) < EPSILON);
- un_memory_set((void*)v, 0, sizeof(*v) * 3);
-
- un_m_hadamard3r(v, a, b);
- assert(fabs(v[0] - 3.0) < EPSILON);
- assert(fabs(v[1] - 8.0) < EPSILON);
- assert(fabs(v[2] - 15.0) < EPSILON);
- un_memory_set((void*)v, 0, sizeof(*v) * 3);
-
- un_m_project3r(v, a, b);
- assert(fabs(v[0] - 1.56) < EPSILON);
- assert(fabs(v[1] - 2.08) < EPSILON);
- assert(fabs(v[2] - 2.6) < EPSILON);
- un_memory_set((void*)v, 0, sizeof(*v) * 3);
-
- un_m_cross3r(v, a, b);
- assert(fabs(v[0] + 2.0) < EPSILON);
- assert(fabs(v[1] - 4.0) < EPSILON);
- assert(fabs(v[2] + 2.0) < EPSILON);
- un_memory_set((void*)v, 0, sizeof(*v) * 3);
-
- un_m_magnitude3r(v, b);
- assert(fabs(v[0] - sqrt(50.0)) < EPSILON);
- un_memory_set((void*)v, 0, sizeof(*v) * 3);
-
- un_m_magnitude_sqr3r(v, b);
- assert(fabs(v[0] - 50.0) < EPSILON);
- un_memory_set((void*)v, 0, sizeof(*v) * 3);
-
- un_m_distance3r(v, a, b);
- assert(fabs(v[0] - sqrt(12.0)) < EPSILON);
- un_memory_set((void*)v, 0, sizeof(*v) * 3);
-
- un_m_distance_sqr3r(v, a, b);
- assert(fabs(v[0] - 12.0) < EPSILON);
- un_memory_set((void*)v, 0, sizeof(*v) * 3);
-
- un_m_normalize3r(v, b);
- assert(fabs(v[0] - 0.424264) < EPSILON);
- assert(fabs(v[1] - 0.565685) < EPSILON);
- assert(fabs(v[2] - 0.707107) < EPSILON);
- un_memory_set((void*)v, 0, sizeof(*v) * 3);
-
- un_m_reflect3r(v, a, n);
- assert(fabs(v[0] + a[0]) < EPSILON);
- assert(fabs(v[1] - a[1]) < EPSILON);
- assert(fabs(v[2] + a[2]) < EPSILON);
- un_memory_set((void*)v, 0, sizeof(*v) * 3);
- }
-
- /* 4d */
- {
- real a[4] = {1.0, 2.0, 3.0, 4.0};
- real b[4] = {3.0, 4.0, 5.0, 6.0};
- real n[4] = {0.0, 1.0, 0.0, 0.0};
- real v[4];
-
- un_m_add4r(v, a, b);
- assert(fabs(v[0] - 4.0) < EPSILON);
- assert(fabs(v[1] - 6.0) < EPSILON);
- assert(fabs(v[2] - 8.0) < EPSILON);
- assert(fabs(v[3] - 10.0) < EPSILON);
- un_memory_set((void*)v, 0, sizeof(*v) * 4);
-
- un_m_sub4r(v, a, b);
- assert(fabs(v[0] + 2.0) < EPSILON);
- assert(fabs(v[1] + 2.0) < EPSILON);
- assert(fabs(v[2] + 2.0) < EPSILON);
- assert(fabs(v[3] + 2.0) < EPSILON);
- un_memory_set((void*)v, 0, sizeof(*v) * 4);
-
- un_m_add_scalar4r(v, a, 1);
- assert(fabs(v[0] - 2.0) < EPSILON);
- assert(fabs(v[1] - 3.0) < EPSILON);
- assert(fabs(v[2] - 4.0) < EPSILON);
- assert(fabs(v[3] - 5.0) < EPSILON);
- un_memory_set((void*)v, 0, sizeof(*v) * 4);
-
- un_m_sub_scalar4r(v, a, 1);
- assert(fabs(v[0]) < EPSILON);
- assert(fabs(v[1] - 1.0) < EPSILON);
- assert(fabs(v[2] - 2.0) < EPSILON);
- assert(fabs(v[3] - 3.0) < EPSILON);
- un_memory_set((void*)v, 0, sizeof(*v) * 4);
-
- un_m_mul_scalar4r(v, a, 2);
- assert(fabs(v[0] - 2.0) < EPSILON);
- assert(fabs(v[1] - 4.0) < EPSILON);
- assert(fabs(v[2] - 6.0) < EPSILON);
- assert(fabs(v[3] - 8.0) < EPSILON);
- un_memory_set((void*)v, 0, sizeof(*v) * 4);
-
- un_m_div_scalar4r(v, a, 2);
- assert(fabs(v[0] - 0.5) < EPSILON);
- assert(fabs(v[1] - 1.0) < EPSILON);
- assert(fabs(v[2] - 1.5) < EPSILON);
- assert(fabs(v[3] - 2.0) < EPSILON);
- un_memory_set((void*)v, 0, sizeof(*v) * 4);
-
- un_m_dot4r(v, a, b);
- assert(fabs(v[0] - 50.0) < EPSILON);
- un_memory_set((void*)v, 0, sizeof(*v) * 4);
-
- un_m_hadamard4r(v, a, b);
- assert(fabs(v[0] - 3.0) < EPSILON);
- assert(fabs(v[1] - 8.0) < EPSILON);
- assert(fabs(v[2] - 15.0) < EPSILON);
- assert(fabs(v[3] - 24.0) < EPSILON);
- un_memory_set((void*)v, 0, sizeof(*v) * 4);
-
- un_m_project4r(v, a, b);
- assert(fabs(v[0] - 1.744186) < EPSILON);
- assert(fabs(v[1] - 2.325581) < EPSILON);
- assert(fabs(v[2] - 2.906976) < EPSILON);
- assert(fabs(v[3] - 3.488372) < EPSILON);
- un_memory_set((void*)v, 0, sizeof(*v) * 4);
-
- un_m_magnitude4r(v, b);
- assert(fabs(v[0] - sqrt(86.0)) < EPSILON);
- un_memory_set((void*)v, 0, sizeof(*v) * 4);
-
- un_m_magnitude_sqr4r(v, b);
- assert(fabs(v[0] - 86.0) < EPSILON);
- un_memory_set((void*)v, 0, sizeof(*v) * 4);
-
- un_m_distance4r(v, a, b);
- assert(fabs(v[0] - 4.0) < EPSILON);
- un_memory_set((void*)v, 0, sizeof(*v) * 4);
-
- un_m_distance_sqr4r(v, a, b);
- assert(fabs(v[0] - 16.0) < EPSILON);
- un_memory_set((void*)v, 0, sizeof(*v) * 4);
-
- un_m_normalize4r(v, b);
- assert(fabs(v[0] - 0.323498) < EPSILON);
- assert(fabs(v[1] - 0.431331) < EPSILON);
- assert(fabs(v[2] - 0.539164) < EPSILON);
- assert(fabs(v[3] - 0.646997) < EPSILON);
- un_memory_set((void*)v, 0, sizeof(*v) * 4);
-
- un_m_reflect4r(v, a, n);
- assert(fabs(v[0] + a[0]) < EPSILON);
- assert(fabs(v[1] - a[1]) < EPSILON);
- assert(fabs(v[2] + a[2]) < EPSILON);
- assert(fabs(v[3] + a[3]) < EPSILON);
- un_memory_set((void*)v, 0, sizeof(*v) * 4);
- }
-
- return 0;
-}
diff --git a/tests/un/matrix.c b/tests/un/matrix.c
new file mode 100644
index 0000000..deb9e4c
--- /dev/null
+++ b/tests/un/matrix.c
@@ -0,0 +1,8 @@
+#include <ungrateful.h>
+
+int main() {
+ f32 output[UN_MATRIX_SIZE];
+ u64 i;
+
+ return 0;
+}
diff --git a/tests/un/strings.c b/tests/un/strings.c
index d49d525..87f1aed 100644
--- a/tests/un/strings.c
+++ b/tests/un/strings.c
@@ -27,7 +27,7 @@ int main(void) {
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);
+ un_list_destroy(&splits, true);
splits = un_string_split(UN_STR("Eatin||burger||wit||no||honey||mustard"), UN_STR("||"), talloc);
@@ -40,7 +40,7 @@ int main(void) {
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);
+ un_list_destroy(&splits, true);
splits = un_string_split(UN_STR("Eatin||burger||wit||no||honey||mustard||a"), UN_STR("||"), talloc);
@@ -54,7 +54,7 @@ int main(void) {
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);
+ un_list_destroy(&splits, true);
splits = un_string_split(UN_STR("a||Eatin||burger||wit||no||honey||mustard||a"), UN_STR("||"), talloc);
@@ -69,7 +69,7 @@ int main(void) {
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);
+ un_list_destroy(&splits, true);
splits = un_string_split(UN_STR("||Eatin||burger||wit||no||honey||mustard||"), UN_STR("||"), talloc);
@@ -84,7 +84,7 @@ int main(void) {
assert(!un_string_compare(un_string_join(splits, UN_STR(" "), talloc), UN_STR("Eatin burger wit no honey mustard")));
- un_list_destroy(&splits);
+ un_list_destroy(&splits, true);
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!")));
diff --git a/tests/un/win_wstr.c b/tests/un/win_wstr.c
new file mode 100644
index 0000000..55cec57
--- /dev/null
+++ b/tests/un/win_wstr.c
@@ -0,0 +1,26 @@
+#include <ungrateful.h>
+#if !defined(OS_WINDOWS)
+int main(void) {
+ return 0;
+}
+#else
+
+#include <windows.h>
+#pragma comment(lib, "User32.lib")
+
+int main(void) {
+ wchar *caption, *text;
+ Allocator talloc = un_allocator_get_temporary();
+
+
+ caption = un_wstring_from_cstring(UN_CSTR "Внимание", talloc);
+ text = un_wstring_from_cstring(UN_CSTR "Тестовое сообщение", talloc);
+
+
+ assert(caption != NULL);
+ assert(text != NULL);
+
+ // MessageBoxW(NULL, text, caption, MB_OK);
+}
+
+#endif