diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/un/allocs.c | 11 | ||||
-rw-r--r-- | tests/un/lists.c | 20 | ||||
-rw-r--r-- | tests/un/math.c | 2 | ||||
-rw-r--r-- | tests/un/mathd.c | 28 | ||||
-rw-r--r-- | tests/un/mathf.c | 28 | ||||
-rw-r--r-- | tests/un/mathr.c | 280 | ||||
-rw-r--r-- | tests/un/matrix.c | 8 | ||||
-rw-r--r-- | tests/un/strings.c | 10 | ||||
-rw-r--r-- | tests/un/win_wstr.c | 26 |
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 |