pixwerx/tests/pw_test_core.cpp

113 lines
2.5 KiB
C++
Raw Normal View History

2024-06-06 23:45:53 +02:00
#include <snitch/snitch.hpp>
#include <pw/core/matrix.hpp>
#include <pw/core/vector.hpp>
TEST_CASE("core", "[matrix]") {
2024-06-06 23:45:53 +02:00
auto mat = pw::matrix<float,2,2>{};
2024-07-11 09:22:39 +02:00
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<float,2, 2>{
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};
2024-06-06 23:45:53 +02:00
auto mat_2 = pw::matrix<float,2,2>::all(val);
2024-07-11 09:22:39 +02:00
REQUIRE(mat_2[0][0] == val);
REQUIRE(mat_2[0][1] == val);
REQUIRE(mat_2[1][0] == val);
REQUIRE(mat_2[1][1] == val);
2024-07-11 09:22:39 +02:00
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));
2024-07-11 09:22:39 +02:00
mat_2 = pw::matrix<float, 2, 2>::identity();
2024-07-11 09:22:39 +02:00
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);
2024-06-06 23:45:53 +02:00
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);
2024-06-06 23:45:53 +02:00
2024-07-11 09:22:39 +02:00
// auto m44_2 = pw::matrix2x2::make(0, 1, 2, 3);
2024-06-06 23:45:53 +02:00
2024-07-11 09:22:39 +02:00
// 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);
2024-06-06 23:45:53 +02:00
2024-07-11 09:22:39 +02:00
// pw::matrix2x2 m44_3 = {{},{1, 2, 3, 4}};
2024-06-06 23:45:53 +02:00
2024-07-11 09:22:39 +02:00
// 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);
2024-06-06 23:45:53 +02:00
2024-07-11 09:22:39 +02:00
}
TEST_CASE("core", "[vector.matrix]") {
2024-06-06 23:45:53 +02:00
auto vec4_1 = pw::vector4<float>{};
REQUIRE(vec4_1[0] == 0.0f);
REQUIRE(vec4_1[1] == 0.0f);
REQUIRE(vec4_1[2] == 0.0f);
REQUIRE(vec4_1[3] == 0.0f);
2024-07-11 09:22:39 +02:00
// auto mat4_1 = pw::matrix_<4,1,float>{};
2024-06-06 23:45:53 +02:00
2024-07-11 09:22:39 +02:00
// mat4_1 = vec4_1; // down is easy
// vec4_1 = mat4_1;
2024-06-06 23:45:53 +02:00
}
TEST_CASE("core", "[vector]") {
2024-07-11 09:22:39 +02:00
// auto vec4_1 = pw::vector4_<float>{};
// auto vec4_2 = pw::vector4::make(1, 2, 3, 4);
// pw::vector4 vec4_3 = vec4_1 + vec4_2;
2024-06-06 23:45:53 +02:00
2024-07-11 09:22:39 +02:00
// REQUIRE(vec4_3[0] == 1.0f);
// REQUIRE(vec4_3[1] == 2.0f);
// REQUIRE(vec4_3[2] == 3.0f);
// REQUIRE(vec4_3[3] == 4.0f);
2024-06-06 23:45:53 +02:00
2024-07-11 09:22:39 +02:00
// auto vec4_4 = vec4_3 * 2;
2024-06-06 23:45:53 +02:00
2024-07-11 09:22:39 +02:00
// 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);
2024-06-06 23:45:53 +02:00
}