mtl/include/mtl/tests/vec.hpp

105 lines
3.0 KiB
C++

#pragma once
#include "mtl/test.hpp"
#include "mtl/vec.hpp"
namespace mtl {
namespace test {
class vec_suite : public suite<vec_suite> {
public:
vec_suite() {
add_test(&construction_v2, "construction");
add_test(&construction_v3, "construction");
add_test(&construction_v4, "construction");
add_test(&addition_v2, "addition_v2");
add_test(&addition_v3, "addition_v3");
add_test(&addition_v4, "addition_v4");
add_test(&subtraction_v2, "subtraction_v2");
add_test(&subtraction_v3, "subtraction_v3");
add_test(&subtraction_v4, "subtraction_v4");
add_test(&negation_v2, "negation_v2");
add_test(&negation_v3, "negation_v3");
add_test(&negation_v4, "negation_v4");
add_test(&mult_scalar_v2, "mult_scalar_v2");
add_test(&mult_scalar_v3, "mult_scalar_v3");
add_test(&mult_scalar_v4, "mult_scalar_v4");
add_test(&dot_v2, "dot_v2");
add_test(&dot_v3, "dot_v3");
add_test(&dot_v4, "dot_v4");
add_test(&division_scalar_v2, "division_scalar_v2");
add_test(&division_scalar_v3, "division_scalar_v3");
add_test(&division_scalar_v4, "division_scalar_v4");
add_test(&magnitude_sqr_v2, "magnitude_sqr_v2");
add_test(&magnitude_sqr_v3, "magnitude_sqr_v3");
add_test(&magnitude_sqr_v4, "magnitude_sqr_v4");
add_test(&transpose_v2, "transpose_v2");
add_test(&transpose_v3, "transpose_v3");
add_test(&transpose_v4, "transpose_v4");
add_test(&projection_v4, "projection_v4");
}
virtual string_view name() {
return "vec_suite";
}
static bool construction_v2() {
vec2 a(1, 2);
return a.x == 1 && a.y == 2;
}
static bool construction_v3() {
vec3 a(1, 2, 3);
return a.x == 1 && a.y == 2 && a.z == 3;
}
static bool construction_v4() {
vec4 a(1, 2, 3, 4);
return a.x == 1 && a.y == 2 && a.z == 3 && a.w == 4;
}
GBA_IWRAM ARM_MODE static bool addition_v2();
GBA_IWRAM ARM_MODE static bool addition_v3();
GBA_IWRAM ARM_MODE static bool addition_v4();
GBA_IWRAM ARM_MODE static bool subtraction_v2();
GBA_IWRAM ARM_MODE static bool subtraction_v3();
GBA_IWRAM ARM_MODE static bool subtraction_v4();
GBA_IWRAM ARM_MODE static bool negation_v2();
GBA_IWRAM ARM_MODE static bool negation_v3();
GBA_IWRAM ARM_MODE static bool negation_v4();
GBA_IWRAM ARM_MODE static bool mult_scalar_v2();
GBA_IWRAM ARM_MODE static bool mult_scalar_v3();
GBA_IWRAM ARM_MODE static bool mult_scalar_v4();
GBA_IWRAM ARM_MODE static bool dot_v2();
GBA_IWRAM ARM_MODE static bool dot_v3();
GBA_IWRAM ARM_MODE static bool dot_v4();
GBA_IWRAM ARM_MODE static bool division_scalar_v2();
GBA_IWRAM ARM_MODE static bool division_scalar_v3();
GBA_IWRAM ARM_MODE static bool division_scalar_v4();
GBA_IWRAM ARM_MODE static bool magnitude_sqr_v2();
GBA_IWRAM ARM_MODE static bool magnitude_sqr_v3();
GBA_IWRAM ARM_MODE static bool magnitude_sqr_v4();
GBA_IWRAM ARM_MODE static bool transpose_v2();
GBA_IWRAM ARM_MODE static bool transpose_v3();
GBA_IWRAM ARM_MODE static bool transpose_v4();
GBA_IWRAM ARM_MODE static bool projection_v4();
};
} // namespace test
} // namespace mtl