#include #include #include TEST_CASE("core", "[matrix]") { auto mat = pw::matrix{}; REQUIRE(mat[0][0] == 0); REQUIRE(mat[0][1] == 0); REQUIRE(mat[1][0] == 0); REQUIRE(mat[1][1] == 0); auto mat_1 = pw::matrix{ pw::vector{5.f, 4}, pw::vector{3.f, 2} }; REQUIRE(mat_1[0][0] == 5); REQUIRE(mat_1[0][1] == 4); REQUIRE(mat_1[1][0] == 3); REQUIRE(mat_1[1][1] == 2); const auto val {42.42f}; auto mat_2 = pw::matrix::all(val); REQUIRE(mat_2[0][0] == val); REQUIRE(mat_2[0][1] == val); REQUIRE(mat_2[1][0] == val); REQUIRE(mat_2[1][1] == val); mat_2 *= 2; REQUIRE(mat_2[0][0] == (val * 2)); REQUIRE(mat_2[0][1] == (val * 2)); REQUIRE(mat_2[1][0] == (val * 2)); REQUIRE(mat_2[1][1] == (val * 2)); mat_2 = pw::matrix::identity(); REQUIRE(mat_2[0][0] == 1.0f); REQUIRE(mat_2[0][1] == 0.0f); REQUIRE(mat_2[1][0] == 0.0f); REQUIRE(mat_2[1][1] == 1.0f); auto mat_2_inv = mat_2.inverse(); REQUIRE(mat_2_inv[0][0] == 1.0f); REQUIRE(mat_2_inv[0][1] == 0.0f); REQUIRE(mat_2_inv[1][0] == 0.0f); REQUIRE(mat_2_inv[1][1] == 1.0f); // auto m44_2 = pw::matrix2x2::make(0, 1, 2, 3); // REQUIRE(m44_2(0, 0) == 0.0f); // REQUIRE(m44_2(1, 0) == 1.0f); // REQUIRE(m44_2(0, 1) == 2.0f); // REQUIRE(m44_2(1, 1) == 3.0f); // pw::matrix2x2 m44_3 = {{},{1, 2, 3, 4}}; // REQUIRE(m44_3(0, 0) == 1.0f); // REQUIRE(m44_3(1, 0) == 2.0f); // REQUIRE(m44_3(0, 1) == 3.0f); // REQUIRE(m44_3(1, 1) == 4.0f); } TEST_CASE("core", "[vector.matrix]") { auto vec4_1 = pw::vector4{}; REQUIRE(vec4_1[0] == 0.0f); REQUIRE(vec4_1[1] == 0.0f); REQUIRE(vec4_1[2] == 0.0f); REQUIRE(vec4_1[3] == 0.0f); // auto mat4_1 = pw::matrix_<4,1,float>{}; // mat4_1 = vec4_1; // down is easy // vec4_1 = mat4_1; } TEST_CASE("core", "[vector]") { // auto vec4_1 = pw::vector4_{}; // auto vec4_2 = pw::vector4::make(1, 2, 3, 4); // pw::vector4 vec4_3 = vec4_1 + vec4_2; // REQUIRE(vec4_3[0] == 1.0f); // REQUIRE(vec4_3[1] == 2.0f); // REQUIRE(vec4_3[2] == 3.0f); // REQUIRE(vec4_3[3] == 4.0f); // auto vec4_4 = vec4_3 * 2; // REQUIRE(vec4_4[0] == 1.0f * 2); // REQUIRE(vec4_4[1] == 2.0f * 2); // REQUIRE(vec4_4[2] == 3.0f * 2); // REQUIRE(vec4_4[3] == 4.0f * 2); }