#include "vkvg.h" #include #include "unitTest.h" TEST(MatrixTest, MatixInit) { vkvg_matrix_t mat = {1, 0, 0, 1, 0, 0}; CHECK_MAT(1, 0, 0, 1, 0, 0); vkvg_matrix_init_identity(&mat); CHECK_MAT(1, 0, 0, 1, 0, 0); vkvg_matrix_init(&mat, 1.3f, 2.5f, 0.3f, 0.7f, 1.2f, 1.7f); CHECK_MAT(1.3f, 2.5f, 0.3f, 0.7f, 1.2f, 1.7f); float a, b; vkvg_matrix_init_translate(&mat, 1.3f, 2.5f); CHECK_MAT(1, 0, 0, 1, 1.3f, 2.5f); vkvg_matrix_init_scale(&mat, 2.1f, 1.5f); CHECK_MAT(2.1f, 0, 0, 1.5f, 0, 0); vkvg_matrix_get_scale(&mat, &a, &b); EXPECT_FLOAT_EQ(a, 2.1f); EXPECT_FLOAT_EQ(b, 1.5f); vkvg_matrix_init_rotate(&mat, 2.f); CHECK_MAT(cosf(2.f), sinf(2.f), -sinf(2.f), cosf(2.f), 0, 0); } TEST(MatrixTest, MatixOperation) { vkvg_matrix_t mat = {0, 0, 0, 0, 0, 0}; // TODO } TEST(MatrixTest, MatixIvert) { vkvg_matrix_t mat = {0, 0, 0, 0, 0, 0}; vkvg_status_t res = vkvg_matrix_invert(&mat); EXPECT_EQ(res, VKVG_STATUS_INVALID_MATRIX); mat = {1, 1, 0, 0, 0, 0}; res = vkvg_matrix_invert(&mat); EXPECT_EQ(res, VKVG_STATUS_INVALID_MATRIX); mat = {1, 0, 0, 1, 0, 0}; res = vkvg_matrix_invert(&mat); EXPECT_EQ(res, VKVG_STATUS_SUCCESS); CHECK_MAT(1, 0, 0, 1, 0, 0); vkvg_matrix_init_scale(&mat, 2.1f, 1.5f); res = vkvg_matrix_invert(&mat); EXPECT_EQ(res, VKVG_STATUS_SUCCESS); CHECK_MAT(1.f / 2.1f, 0, 0, 1.f / 1.5f, 0, 0); vkvg_matrix_init_translate(&mat, 2.1f, 1.5f); res = vkvg_matrix_invert(&mat); EXPECT_EQ(res, VKVG_STATUS_SUCCESS); CHECK_MAT(1, 0, 0, 1, -2.1f, -1.5f); vkvg_matrix_init_rotate(&mat, 2.f); res = vkvg_matrix_invert(&mat); EXPECT_EQ(res, VKVG_STATUS_SUCCESS); CHECK_MAT(cosf(2.f), -sinf(2.f), sinf(2.f), cosf(2.f), 0, 0); }