diff options
Diffstat (limited to 'src/transform.test.c')
-rw-r--r-- | src/transform.test.c | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/src/transform.test.c b/src/transform.test.c index ba663bb..4b1e329 100644 --- a/src/transform.test.c +++ b/src/transform.test.c @@ -3,6 +3,8 @@ #include "test/test.h" #include "transform.h" +void create_identity(); +void multiply(); void parse_matrix_fail_nonmatrix(); void parse_identity(); @@ -19,6 +21,8 @@ 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); @@ -32,6 +36,75 @@ void suite_transform() /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ +/* ======== 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() { |