diff options
| author | sanine <sanine.not@pm.me> | 2022-12-10 19:12:31 -0600 | 
|---|---|---|
| committer | sanine <sanine.not@pm.me> | 2022-12-10 19:12:31 -0600 | 
| commit | 7c47f23ee92afa07c748700f1de22fd8b8ccf967 (patch) | |
| tree | 4387add23b932b74c237128c579c4c2c9005262a /src/transform/transform.test.c | |
| parent | 8bc49efb970ac44f17f6076bb16f1d0e712bd750 (diff) | |
refactor: remove node.* and util.* and move 3rdparty libs into separate directory
Diffstat (limited to 'src/transform/transform.test.c')
| -rw-r--r-- | src/transform/transform.test.c | 316 | 
1 files changed, 316 insertions, 0 deletions
diff --git a/src/transform/transform.test.c b/src/transform/transform.test.c new file mode 100644 index 0000000..4b1e329 --- /dev/null +++ b/src/transform/transform.test.c @@ -0,0 +1,316 @@ +#include <string.h> +#include <kalmia.h> +#include "test/test.h" +#include "transform.h" + +void create_identity(); +void multiply(); + +void parse_matrix_fail_nonmatrix(); +void parse_identity(); + +void parse_rotate_fail(); +void parse_rotate(); + +void parse_scale_fail(); +void parse_scale(); + +void parse_translate_fail(); +void parse_translate(); + + +void suite_transform() +{ +	lily_run_test(create_identity); +	lily_run_test(multiply); +	lily_run_test(parse_matrix_fail_nonmatrix); +	lily_run_test(parse_identity); +	lily_run_test(parse_rotate_fail); +	lily_run_test(parse_rotate); +	lily_run_test(parse_scale_fail); +	lily_run_test(parse_scale); +	lily_run_test(parse_translate_fail); +	lily_run_test(parse_translate); +} + + +/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ + +/* ======== basic ======== */ + +void create_identity() +{ +	ka_matrix_t mat; +	mat[0] = 100; +	int rc = kai_identity(&mat); +	lily_assert_true(rc == 0); + +	lily_assert_float_equal(mat[0], 1.0f, 1e-3); +	lily_assert_float_equal(mat[1], 0.0f, 1e-3); +	lily_assert_float_equal(mat[2], 0.0f, 1e-3); +	lily_assert_float_equal(mat[3], 0.0f, 1e-3); +	lily_assert_float_equal(mat[4], 0.0f, 1e-3); +	lily_assert_float_equal(mat[5], 1.0f, 1e-3); +	lily_assert_float_equal(mat[6], 0.0f, 1e-3); +	lily_assert_float_equal(mat[7], 0.0f, 1e-3); +	lily_assert_float_equal(mat[8], 0.0f, 1e-3); +	lily_assert_float_equal(mat[9], 0.0f, 1e-3); +	lily_assert_float_equal(mat[10], 1.0f, 1e-3); +	lily_assert_float_equal(mat[11], 0.0f, 1e-3); +	lily_assert_float_equal(mat[12], 0.0f, 1e-3); +	lily_assert_float_equal(mat[13], 0.0f, 1e-3); +	lily_assert_float_equal(mat[14], 0.0f, 1e-3); +	lily_assert_float_equal(mat[15], 1.0f, 1e-3); +} + + +void multiply() +{ +	ka_matrix_t A = { +		2.0f,  0.0f,  1.0f,  0.0f, +		0.0f,  3.0f,  0.0f,  0.0f, +		0.0f,  0.0f,  1.0f,  0.0f, +		0.0f,  0.0f,  0.0f,  1.0f, +	}; + +	ka_matrix_t B = { +		0.0f,  3.0f,  0.0f,  0.0f, +		1.0f,  0.0f,  1.0f,  0.0f, +		0.0f,  2.0f,  2.0f,  0.0f, +		0.0f,  0.0f,  0.0f,  1.0f, +	}; + +	int rc = kai_multiply(&A, A, B); +	lily_assert_true(rc == 0); + +	lily_assert_float_equal(A[0],  0.0f, 1e-3); +	lily_assert_float_equal(A[1],  8.0f, 1e-3); +	lily_assert_float_equal(A[2],  2.0f, 1e-3); +	lily_assert_float_equal(A[3],  0.0f, 1e-3); + +	lily_assert_float_equal(A[4],  3.0f, 1e-3); +	lily_assert_float_equal(A[5],  0.0f, 1e-3); +	lily_assert_float_equal(A[6],  3.0f, 1e-3); +	lily_assert_float_equal(A[7],  0.0f, 1e-3); + +	lily_assert_float_equal(A[8],  0.0f, 1e-3); +	lily_assert_float_equal(A[9],  2.0f, 1e-3); +	lily_assert_float_equal(A[10], 2.0f, 1e-3); +	lily_assert_float_equal(A[11], 0.0f, 1e-3); + +	lily_assert_float_equal(A[12], 0.0f, 1e-3); +	lily_assert_float_equal(A[13], 0.0f, 1e-3); +	lily_assert_float_equal(A[14], 0.0f, 1e-3); +	lily_assert_float_equal(A[15], 1.0f, 1e-3); +} + + +/* ======== matrix ======== */ +void parse_matrix_fail_nonmatrix() +{ +	char str[128]; +	strncpy(str, "<nonmatrix></nonmatrix>", 128); +	ezxml_t tag = ezxml_parse_str(str, strlen(str)); + +	ka_matrix_t mat; +	int rc = kai_parse_matrix(&mat, tag); +	lily_assert_true(rc != 0); + +	ezxml_free(tag); +} + + +void parse_identity() +{ +	char str[512]; +	strncpy( +		str,  +		"<matrix>\n" +		"	1 0 0 0\n" +		"	0 1 0 0\n" +		"	0 0 1 0\n" +		"	0 0 0 1\n" +		"</matrix>", +		512 +	); +	ezxml_t tag = ezxml_parse_str(str, strlen(str)); + +	ka_matrix_t mat; +	mat[0] = 100; +	int rc = kai_parse_matrix(&mat, tag); +	lily_assert_true(rc == 0); +	ezxml_free(tag); + +	lily_assert_float_equal(mat[0], 1.0f, 1e-3); +	lily_assert_float_equal(mat[1], 0.0f, 1e-3); +	lily_assert_float_equal(mat[2], 0.0f, 1e-3); +	lily_assert_float_equal(mat[3], 0.0f, 1e-3); +	lily_assert_float_equal(mat[4], 0.0f, 1e-3); +	lily_assert_float_equal(mat[5], 1.0f, 1e-3); +	lily_assert_float_equal(mat[6], 0.0f, 1e-3); +	lily_assert_float_equal(mat[7], 0.0f, 1e-3); +	lily_assert_float_equal(mat[8], 0.0f, 1e-3); +	lily_assert_float_equal(mat[9], 0.0f, 1e-3); +	lily_assert_float_equal(mat[10], 1.0f, 1e-3); +	lily_assert_float_equal(mat[11], 0.0f, 1e-3); +	lily_assert_float_equal(mat[12], 0.0f, 1e-3); +	lily_assert_float_equal(mat[13], 0.0f, 1e-3); +	lily_assert_float_equal(mat[14], 0.0f, 1e-3); +	lily_assert_float_equal(mat[15], 1.0f, 1e-3); +} + + +/* ======== rotate ======== */ +void parse_rotate_fail() +{ +	char str[128]; +	strncpy(str, "<non></non>", 128); +	ezxml_t tag = ezxml_parse_str(str, strlen(str)); + +	ka_matrix_t mat; +	int rc = kai_parse_rotate(&mat, tag); +	lily_assert_true(rc != 0); + +	ezxml_free(tag); +} + + +void parse_rotate() +{ +	char str[512]; +	strncpy( +		str,  +		"<rotate>\n" +		"	0 1 0 90.0\n" +		"</rotate>", +		512 +	); +	ezxml_t tag = ezxml_parse_str(str, strlen(str)); + +	ka_matrix_t mat; +	mat[0] = 100; +	int rc = kai_parse_rotate(&mat, tag); +	lily_assert_true(rc == 0); +	ezxml_free(tag); + +	lily_assert_float_equal(mat[0],  0.0f, 1e-3); +	lily_assert_float_equal(mat[1],  0.0f, 1e-3); +	lily_assert_float_equal(mat[2],  1.0f, 1e-3); +	lily_assert_float_equal(mat[3],  0.0f, 1e-3); +	lily_assert_float_equal(mat[4],  0.0f, 1e-3); +	lily_assert_float_equal(mat[5],  1.0f, 1e-3); +	lily_assert_float_equal(mat[6],  0.0f, 1e-3); +	lily_assert_float_equal(mat[7],  0.0f, 1e-3); +	lily_assert_float_equal(mat[8], -1.0f, 1e-3); +	lily_assert_float_equal(mat[9],  0.0f, 1e-3); +	lily_assert_float_equal(mat[10], 0.0f, 1e-3); +	lily_assert_float_equal(mat[11], 0.0f, 1e-3); +	lily_assert_float_equal(mat[12], 0.0f, 1e-3); +	lily_assert_float_equal(mat[13], 0.0f, 1e-3); +	lily_assert_float_equal(mat[14], 0.0f, 1e-3); +	lily_assert_float_equal(mat[15], 1.0f, 1e-3); +} + + +/* ======== scale ======== */ +void parse_scale_fail() +{ +	char str[128]; +	strncpy(str, "<non></non>", 128); +	ezxml_t tag = ezxml_parse_str(str, strlen(str)); + +	ka_matrix_t mat; +	int rc = kai_parse_scale(&mat, tag); +	lily_assert_true(rc != 0); + +	ezxml_free(tag); +} + + +void parse_scale() +{ +	char str[512]; +	strncpy( +		str,  +		"<scale>\n" +		"	10 5 -1\n" +		"</scale>", +		512 +	); +	ezxml_t tag = ezxml_parse_str(str, strlen(str)); + +	ka_matrix_t mat; +	mat[0] = 100; +	int rc = kai_parse_scale(&mat, tag); +	lily_assert_true(rc == 0); +	ezxml_free(tag); + +	lily_assert_float_equal(mat[0], 10.0f, 1e-3); +	lily_assert_float_equal(mat[1],  0.0f, 1e-3); +	lily_assert_float_equal(mat[2],  0.0f, 1e-3); +	lily_assert_float_equal(mat[3],  0.0f, 1e-3); +	lily_assert_float_equal(mat[4],  0.0f, 1e-3); +	lily_assert_float_equal(mat[5],  5.0f, 1e-3); +	lily_assert_float_equal(mat[6],  0.0f, 1e-3); +	lily_assert_float_equal(mat[7],  0.0f, 1e-3); +	lily_assert_float_equal(mat[8],  0.0f, 1e-3); +	lily_assert_float_equal(mat[9],  0.0f, 1e-3); +	lily_assert_float_equal(mat[10],-1.0f, 1e-3); +	lily_assert_float_equal(mat[11], 0.0f, 1e-3); +	lily_assert_float_equal(mat[12], 0.0f, 1e-3); +	lily_assert_float_equal(mat[13], 0.0f, 1e-3); +	lily_assert_float_equal(mat[14], 0.0f, 1e-3); +	lily_assert_float_equal(mat[15], 1.0f, 1e-3); +} + + +/* ======== translate ======== */ +void parse_translate_fail() +{ +	char str[128]; +	strncpy(str, "<non></non>", 128); +	ezxml_t tag = ezxml_parse_str(str, strlen(str)); + +	ka_matrix_t mat; +	int rc = kai_parse_translate(&mat, tag); +	lily_assert_true(rc != 0); + +	ezxml_free(tag); +} + + +void parse_translate() +{ +	char str[512]; +	strncpy( +		str,  +		"<translate>\n" +		"	10 5 -1\n" +		"</translate>", +		512 +	); +	ezxml_t tag = ezxml_parse_str(str, strlen(str)); + +	ka_matrix_t mat; +	mat[0] = 100; +	int rc = kai_parse_translate(&mat, tag); +	lily_assert_true(rc == 0); +	ezxml_free(tag); + +	lily_assert_float_equal(mat[0],  1.0f, 1e-3); +	lily_assert_float_equal(mat[1],  0.0f, 1e-3); +	lily_assert_float_equal(mat[2],  0.0f, 1e-3); +	lily_assert_float_equal(mat[3], 10.0f, 1e-3); +	lily_assert_float_equal(mat[4],  0.0f, 1e-3); +	lily_assert_float_equal(mat[5],  1.0f, 1e-3); +	lily_assert_float_equal(mat[6],  0.0f, 1e-3); +	lily_assert_float_equal(mat[7],  5.0f, 1e-3); +	lily_assert_float_equal(mat[8],  0.0f, 1e-3); +	lily_assert_float_equal(mat[9],  0.0f, 1e-3); +	lily_assert_float_equal(mat[10], 1.0f, 1e-3); +	lily_assert_float_equal(mat[11],-1.0f, 1e-3); +	lily_assert_float_equal(mat[12], 0.0f, 1e-3); +	lily_assert_float_equal(mat[13], 0.0f, 1e-3); +	lily_assert_float_equal(mat[14], 0.0f, 1e-3); +	lily_assert_float_equal(mat[15], 1.0f, 1e-3); +}  | 
