mirror of
https://github.com/BlackMATov/vmath.hpp.git
synced 2025-12-15 04:35:25 +07:00
return doctest instead catch
This commit is contained in:
@@ -1,2 +0,0 @@
|
||||
#define CATCH_CONFIG_MAIN
|
||||
#include "catch.hpp"
|
||||
17881
untests/catch/catch.hpp
17881
untests/catch/catch.hpp
File diff suppressed because it is too large
Load Diff
2
untests/doctest/doctest.cpp
Normal file
2
untests/doctest/doctest.cpp
Normal file
@@ -0,0 +1,2 @@
|
||||
#define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN
|
||||
#include "doctest.h"
|
||||
6260
untests/doctest/doctest.h
Normal file
6260
untests/doctest/doctest.h
Normal file
File diff suppressed because it is too large
Load Diff
11
untests/doctest/doctest.hpp
Normal file
11
untests/doctest/doctest.hpp
Normal file
@@ -0,0 +1,11 @@
|
||||
#pragma once
|
||||
|
||||
#include "doctest.h"
|
||||
|
||||
#define STATIC_REQUIRE(...)\
|
||||
static_assert(__VA_ARGS__, #__VA_ARGS__);\
|
||||
REQUIRE(__VA_ARGS__);
|
||||
|
||||
#define STATIC_REQUIRE_FALSE(...)\
|
||||
static_assert(!(__VA_ARGS__), "!(" #__VA_ARGS__ ")");\
|
||||
REQUIRE(!(__VA_ARGS__));
|
||||
@@ -5,7 +5,6 @@
|
||||
******************************************************************************/
|
||||
|
||||
#include "vmath_tests.hpp"
|
||||
#include "catch/catch.hpp"
|
||||
|
||||
#include <set>
|
||||
#include <map>
|
||||
@@ -56,7 +55,7 @@ TEST_CASE("vmath/ext/units") {
|
||||
}
|
||||
|
||||
TEST_CASE("vmath/ext/hash") {
|
||||
SECTION("vector") {
|
||||
SUBCASE("vector") {
|
||||
REQUIRE(std::hash<int2>{}({1,2}) == std::hash<int2>{}({1,2}));
|
||||
REQUIRE_FALSE(std::hash<int2>{}({1,2}) == std::hash<int2>{}({2,1}));
|
||||
|
||||
@@ -94,7 +93,7 @@ TEST_CASE("vmath/ext/hash") {
|
||||
}
|
||||
}
|
||||
|
||||
SECTION("matrix") {
|
||||
SUBCASE("matrix") {
|
||||
REQUIRE(std::hash<int2x2>{}({1,2,3,4}) == std::hash<int2x2>{}({1,2,3,4}));
|
||||
REQUIRE_FALSE(std::hash<int2x2>{}({1,2,3,4}) == std::hash<int2x2>{}({1,2,4,3}));
|
||||
|
||||
@@ -126,7 +125,7 @@ TEST_CASE("vmath/ext/hash") {
|
||||
}
|
||||
}
|
||||
|
||||
SECTION("quaternion") {
|
||||
SUBCASE("quaternion") {
|
||||
REQUIRE(std::hash<fqua>{}({1,2,3,4}) == std::hash<fqua>{}({1,2,3,4}));
|
||||
REQUIRE_FALSE(std::hash<fqua>{}({1,2,3,4}) == std::hash<fqua>{}({3,2,1,4}));
|
||||
|
||||
@@ -160,7 +159,7 @@ TEST_CASE("vmath/ext/hash") {
|
||||
}
|
||||
|
||||
TEST_CASE("vmath/ext/cast") {
|
||||
SECTION("cast_to") {
|
||||
SUBCASE("cast_to") {
|
||||
constexpr auto i = cast_to<int>(1.5f);
|
||||
STATIC_REQUIRE(i == 1);
|
||||
STATIC_REQUIRE(std::is_same_v<decltype(i), const int>);
|
||||
@@ -180,7 +179,7 @@ TEST_CASE("vmath/ext/cast") {
|
||||
}
|
||||
|
||||
TEST_CASE("vmath/ext/access") {
|
||||
SECTION("component") {
|
||||
SUBCASE("component") {
|
||||
STATIC_REQUIRE(component(int2{1,2}, 0) == 1);
|
||||
STATIC_REQUIRE(component(int2{1,2}, 1) == 2);
|
||||
|
||||
@@ -188,7 +187,7 @@ TEST_CASE("vmath/ext/access") {
|
||||
STATIC_REQUIRE(component(int2{0,0}, 1, 2) == int2{0,2});
|
||||
}
|
||||
|
||||
SECTION("row") {
|
||||
SUBCASE("row") {
|
||||
STATIC_REQUIRE(row(int2x2(1,2,3,4), 0) == int2(1,2));
|
||||
STATIC_REQUIRE(row(int2x2(1,2,3,4), 1) == int2(3,4));
|
||||
|
||||
@@ -196,7 +195,7 @@ TEST_CASE("vmath/ext/access") {
|
||||
STATIC_REQUIRE(row(int2x2(), 1, {3,4}) == int2x2(1,0,3,4));
|
||||
}
|
||||
|
||||
SECTION("column") {
|
||||
SUBCASE("column") {
|
||||
STATIC_REQUIRE(column(int2x2(1,2,3,4), 0) == int2(1,3));
|
||||
STATIC_REQUIRE(column(int2x2(1,2,3,4), 1) == int2(2,4));
|
||||
|
||||
@@ -204,19 +203,19 @@ TEST_CASE("vmath/ext/access") {
|
||||
STATIC_REQUIRE(column(int2x2(), 1, {3,4}) == int2x2(1,3,0,4));
|
||||
}
|
||||
|
||||
SECTION("real") {
|
||||
SUBCASE("real") {
|
||||
STATIC_REQUIRE(real(qua{1,2,3,4}) == 4);
|
||||
STATIC_REQUIRE(real(qua{1,2,3,4}, 5) == qua{1,2,3,5});
|
||||
}
|
||||
|
||||
SECTION("imag") {
|
||||
SUBCASE("imag") {
|
||||
STATIC_REQUIRE(imag(qua{1,2,3,4}) == vec{1,2,3});
|
||||
STATIC_REQUIRE(imag(qua{1,2,3,4}, {4,3,2}) == qua{4,3,2,4});
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE("vmath/ext/matrix_transform") {
|
||||
SECTION("translate") {
|
||||
SUBCASE("translate") {
|
||||
STATIC_REQUIRE(float3(2.f,3.f,1.f) * translate(float2{1.f,2.f}) == uapprox3(3.f,5.f,1.f));
|
||||
STATIC_REQUIRE(float3(2.f,3.f,1.f) * translate(translate(float2{1.f,2.f}), float2{1.f,2.f}) == uapprox3(4.f,7.f,1.f));
|
||||
|
||||
@@ -224,7 +223,7 @@ TEST_CASE("vmath/ext/matrix_transform") {
|
||||
STATIC_REQUIRE(float4(2.f,3.f,4.f,1.f) * translate(translate(float3{1.f,2.f,3.f}), float3{1.f,2.f,3.f}) == uapprox4(4.f,7.f,10.f,1.f));
|
||||
}
|
||||
|
||||
SECTION("rotate") {
|
||||
SUBCASE("rotate") {
|
||||
REQUIRE(float4(0.f,1.f,0.f,1.f) * rotate_x(pi_2) == uapprox4(0.f,0.f,1.f,1.f));
|
||||
REQUIRE(float4(0.f,0.f,1.f,1.f) * rotate_y(pi_2) == uapprox4(1.f,0.f,0.f,1.f));
|
||||
REQUIRE(float4(1.f,0.f,0.f,1.f) * rotate_z(pi_2) == uapprox4(0.f,1.f,0.f,1.f));
|
||||
@@ -244,7 +243,7 @@ TEST_CASE("vmath/ext/matrix_transform") {
|
||||
REQUIRE(float4(2.f,3.f,4.f,1.f) * rotate(rotate(qrotate(pi_2,float3{0.f,0.f,1.f})),qrotate(pi_2,float3{0.f,0.f,1.f})) == uapprox4(-2.f,-3.f,4.f,1.f));
|
||||
}
|
||||
|
||||
SECTION("scale") {
|
||||
SUBCASE("scale") {
|
||||
STATIC_REQUIRE(float3(2.f,3.f,1.f) * scale(float2{2.f,3.f}) == uapprox3(4.f,9.f,1.f));
|
||||
STATIC_REQUIRE(float4(2.f,3.f,4.f,1.f) * scale(float3{2.f,3.f,4.f}) == uapprox4(4.f,9.f,16.f,1.f));
|
||||
STATIC_REQUIRE(float4(2.f,3.f,4.f,1.f) * scale(float3{2.f,3.f,4.f}) == uapprox4(4.f,9.f,16.f,1.f));
|
||||
@@ -254,7 +253,7 @@ TEST_CASE("vmath/ext/matrix_transform") {
|
||||
STATIC_REQUIRE(float4(2.f,3.f,4.f,1.f) * scale(scale(float3{2.f,2.f,2.f}), float3{2.f,3.f,4.f}) == uapprox4(8.f,18.f,32.f,1.f));
|
||||
}
|
||||
|
||||
SECTION("shear") {
|
||||
SUBCASE("shear") {
|
||||
STATIC_REQUIRE(float3(2.f,3.f,1.f) * shear_x(0.f) == uapprox3(2.f,3.f,1.f));
|
||||
STATIC_REQUIRE(float3(2.f,3.f,1.f) * shear_x(1.f) == uapprox3(5.f,3.f,1.f));
|
||||
STATIC_REQUIRE(float3(2.f,3.f,1.f) * shear_x(2.f) == uapprox3(8.f,3.f,1.f));
|
||||
@@ -272,14 +271,14 @@ TEST_CASE("vmath/ext/matrix_transform") {
|
||||
STATIC_REQUIRE(float3(2.f,3.f,1.f) * shear(shear(float2(0.f,1.f)),float2(0.f,1.f)) == uapprox3(2.f,7.f,1.f));
|
||||
}
|
||||
|
||||
SECTION("matrix look_at") {
|
||||
SUBCASE("matrix look_at") {
|
||||
(void)look_at_lh(float3(1,2,3), float3(0,0,0), float3(0,2,0));
|
||||
(void)look_at_rh(float3(1,2,3), float3(0,0,0), float3(0,2,0));
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE("vmath/ext/matrix_projections") {
|
||||
SECTION("orthographic") {
|
||||
SUBCASE("orthographic") {
|
||||
REQUIRE(all(approx(
|
||||
orthographic_lh(800.f, 600.f, 5.f, 10.f),
|
||||
scale(1.f,1.f,-1.f) * orthographic_rh(800.f, 600.f, 5.f, 10.f))));
|
||||
@@ -290,7 +289,7 @@ TEST_CASE("vmath/ext/matrix_projections") {
|
||||
}
|
||||
|
||||
|
||||
SECTION("perspective") {
|
||||
SUBCASE("perspective") {
|
||||
REQUIRE(all(approx(
|
||||
perspective_lh(800.f, 600.f, 5.f, 10.f),
|
||||
scale(1.f,1.f,-1.f) * perspective_rh(800.f, 600.f, 5.f, 10.f))));
|
||||
@@ -306,7 +305,7 @@ TEST_CASE("vmath/ext/matrix_projections") {
|
||||
}
|
||||
|
||||
TEST_CASE("vmath/ext/vector_transform") {
|
||||
SECTION("angle") {
|
||||
SUBCASE("angle") {
|
||||
REQUIRE(angle(float2(2.f,0.f), float2(0.f,1.f)) == uapprox(radians(90.f)));
|
||||
REQUIRE(angle(float2(0.f,3.f), float2(1.f,0.f)) == uapprox(radians(90.f)));
|
||||
REQUIRE(angle(float2(0.5f,0.f), float2(-1.f,0.f)) == uapprox(radians(180.f)));
|
||||
@@ -315,7 +314,7 @@ TEST_CASE("vmath/ext/vector_transform") {
|
||||
REQUIRE(angle(float3(0.f,0.f,3.f), float3(0.f,1.f,0.f)) == uapprox(radians(90.f)));
|
||||
}
|
||||
|
||||
SECTION("rotate") {
|
||||
SUBCASE("rotate") {
|
||||
REQUIRE(rotate(float2(2.f,0.f), radians(90.f)) == uapprox2(0.f,2.f));
|
||||
REQUIRE(rotate(float2(1.5f,0.f), radians(-90.f)) == uapprox2(0.f,-1.5f));
|
||||
|
||||
@@ -334,19 +333,19 @@ TEST_CASE("vmath/ext/vector_transform") {
|
||||
REQUIRE(rotate(float4(1.5f,0.f,0.f,2.f), radians(90.f), float3(0,0,1)) == uapprox4(0.f,1.5f,0.f,2.f));
|
||||
}
|
||||
|
||||
SECTION("project") {
|
||||
SUBCASE("project") {
|
||||
STATIC_REQUIRE(project(float2(2.f, 2.f), float2(0.f, 1.f)) == uapprox2(0.f, 2.f));
|
||||
STATIC_REQUIRE(project(float3(2.f, 2.f, 2.f), float3(0.f, 0.f, 1.f)) == uapprox3(0.f, 0.f, 2.f));
|
||||
}
|
||||
|
||||
SECTION("perpendicular") {
|
||||
SUBCASE("perpendicular") {
|
||||
STATIC_REQUIRE(perpendicular(float2(2.f, 2.f), float2(0.f, 1.f)) == uapprox2(2.f, 0.f));
|
||||
STATIC_REQUIRE(perpendicular(float3(2.f, 2.f, 2.f), float3(0.f, 0.f, 1.f)) == uapprox3(2.f, 2.f, 0.f));
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE("vmath/ext/quaternion_transform") {
|
||||
SECTION("qrotate(m)") {
|
||||
SUBCASE("qrotate(m)") {
|
||||
REQUIRE(all(approx(
|
||||
vec{4.f,3.f,2.f,1.f} * rotate(qrotate(float3x3(rotate(0.f, vec{1.f,2.f,3.f})))),
|
||||
vec{4.f,3.f,2.f,1.f} * rotate(0.f, vec{1.f,2.f,3.f}), 0.001f)));
|
||||
@@ -358,7 +357,7 @@ TEST_CASE("vmath/ext/quaternion_transform") {
|
||||
vec{4.f,3.f,2.f,1.f} * rotate(radians(-190.5f), vec{1.f,2.f,3.f}), 0.001f)));
|
||||
}
|
||||
|
||||
SECTION("qrotate(q, m)") {
|
||||
SUBCASE("qrotate(q, m)") {
|
||||
REQUIRE(all(approx(
|
||||
vec{4.f,3.f,2.f} * qrotate(
|
||||
qrotate(float3x3(rotate(0.f, vec{1.f,2.f,3.f}))),
|
||||
@@ -368,7 +367,7 @@ TEST_CASE("vmath/ext/quaternion_transform") {
|
||||
float3x3(rotate(0.f, vec{3.f,2.f,1.f})))));
|
||||
}
|
||||
|
||||
SECTION("qrotate(from, to)") {
|
||||
SUBCASE("qrotate(from, to)") {
|
||||
REQUIRE(+unit3_x<float> * qrotate(-unit3_x<float>, +unit3_x<float>) == uapprox3(-unit3_x<float>));
|
||||
REQUIRE(-unit3_y<float> * qrotate(+unit3_y<float>, -unit3_y<float>) == uapprox3(+unit3_y<float>));
|
||||
REQUIRE(+unit3_z<float> * qrotate(-unit3_z<float>, +unit3_z<float>) == uapprox3(-unit3_z<float>));
|
||||
@@ -376,7 +375,7 @@ TEST_CASE("vmath/ext/quaternion_transform") {
|
||||
REQUIRE(vec{-2.f,1.f,3.f} * qrotate(vec{-2.f,1.f,3.f}, vec{1.f,2.f,3.f}) == uapprox3(1.f,2.f,3.f));
|
||||
}
|
||||
|
||||
SECTION("qrotate(q, from, to)") {
|
||||
SUBCASE("qrotate(q, from, to)") {
|
||||
REQUIRE(vec{1.f,2.f,3.f} *
|
||||
inverse(qrotate(float3x3(rotate(radians(12.f), {2.f,2.f,2.f})))) *
|
||||
qrotate(
|
||||
@@ -385,7 +384,7 @@ TEST_CASE("vmath/ext/quaternion_transform") {
|
||||
vec{-2.f,1.f,3.f}) == uapprox3(vec{-2.f,1.f,3.f}));
|
||||
}
|
||||
|
||||
SECTION("qrotate(angle, axis)") {
|
||||
SUBCASE("qrotate(angle, axis)") {
|
||||
REQUIRE(all(approx(
|
||||
rotate(12.3f, float3(1.f,2.f,3.f)),
|
||||
rotate(qrotate(12.3f, float3(1.f,2.f,3.f)) * 2.f))));
|
||||
@@ -402,7 +401,7 @@ TEST_CASE("vmath/ext/quaternion_transform") {
|
||||
REQUIRE(qrotate_z(12.3f) == qrotate(12.3f, unit3_z<float> * 2.f));
|
||||
}
|
||||
|
||||
SECTION("qrotate(q, angle, axis)") {
|
||||
SUBCASE("qrotate(q, angle, axis)") {
|
||||
REQUIRE(float3(0.f,1.f,0.f) * qrotate_x(qrotate_x(pi_4),pi_4) == uapprox3(0.f,0.f,1.f));
|
||||
REQUIRE(float3(0.f,0.f,1.f) * qrotate_y(qrotate_y(pi_4),pi_4) == uapprox3(1.f,0.f,0.f));
|
||||
REQUIRE(float3(1.f,0.f,0.f) * qrotate_z(qrotate_z(pi_4),pi_4) == uapprox3(0.f,1.f,0.f));
|
||||
@@ -411,7 +410,7 @@ TEST_CASE("vmath/ext/quaternion_transform") {
|
||||
REQUIRE(float3(2.f,3.f,4.f) * qrotate(qrotate(pi_2,float3{0.f,0.f,1.f}),pi_2,float3{0.f,0.f,1.f}) == uapprox3(-2.f,-3.f,4.f));
|
||||
}
|
||||
|
||||
SECTION("qlook_at") {
|
||||
SUBCASE("qlook_at") {
|
||||
REQUIRE(all(approx(
|
||||
qlook_at_lh(float3(1.f,2.f,3.f), float3(0,1,0)),
|
||||
qrotate(float3x3(look_at_lh(float3(), float3(1.f,2.f,3.f), float3(0,1,0)))))));
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
******************************************************************************/
|
||||
|
||||
#include "vmath_tests.hpp"
|
||||
#include "catch/catch.hpp"
|
||||
|
||||
namespace
|
||||
{
|
||||
@@ -14,7 +13,7 @@ namespace
|
||||
}
|
||||
|
||||
TEST_CASE("vmath/fun") {
|
||||
SECTION("Angle and Trigonometric Functions") {
|
||||
SUBCASE("Angle and Trigonometric Functions") {
|
||||
STATIC_REQUIRE(radians(degrees(12.13f)) == uapprox(12.13f));
|
||||
STATIC_REQUIRE(degrees(radians(12.13f)) == uapprox(12.13f));
|
||||
|
||||
@@ -39,7 +38,7 @@ TEST_CASE("vmath/fun") {
|
||||
}
|
||||
}
|
||||
|
||||
SECTION("Exponential Functions") {
|
||||
SUBCASE("Exponential Functions") {
|
||||
(void)pow(2.f, 3.f);
|
||||
(void)exp(2.f);
|
||||
(void)log(2.f);
|
||||
@@ -49,7 +48,7 @@ TEST_CASE("vmath/fun") {
|
||||
(void)rsqrt(2.f);
|
||||
}
|
||||
|
||||
SECTION("Common Functions") {
|
||||
SUBCASE("Common Functions") {
|
||||
STATIC_REQUIRE(vmath_hpp::abs(1) == 1);
|
||||
STATIC_REQUIRE(vmath_hpp::abs(-1) == 1);
|
||||
STATIC_REQUIRE(vmath_hpp::abs(1.f) == uapprox(1.f));
|
||||
@@ -147,7 +146,7 @@ TEST_CASE("vmath/fun") {
|
||||
REQUIRE(ldexp(0.85f, 1) == uapprox(1.7f));
|
||||
}
|
||||
|
||||
SECTION("Geometric Functions") {
|
||||
SUBCASE("Geometric Functions") {
|
||||
STATIC_REQUIRE(length(10.f) == uapprox(10.f));
|
||||
STATIC_REQUIRE(length(-10.f) == uapprox(10.f));
|
||||
|
||||
@@ -168,7 +167,7 @@ TEST_CASE("vmath/fun") {
|
||||
REQUIRE(refract(1.f, 2.f, 1.f) == uapprox(-7.f));
|
||||
}
|
||||
|
||||
SECTION("Relational Functions") {
|
||||
SUBCASE("Relational Functions") {
|
||||
STATIC_REQUIRE_FALSE(any(false));
|
||||
STATIC_REQUIRE_FALSE(any(0));
|
||||
STATIC_REQUIRE(any(true));
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
******************************************************************************/
|
||||
|
||||
#include "vmath_tests.hpp"
|
||||
#include "catch/catch.hpp"
|
||||
|
||||
namespace
|
||||
{
|
||||
@@ -31,7 +30,7 @@ namespace
|
||||
}
|
||||
|
||||
TEST_CASE("vmath/mat_fun") {
|
||||
SECTION("detail") {
|
||||
SUBCASE("detail") {
|
||||
STATIC_REQUIRE(map_join([](const int2& x){
|
||||
return x * 2;
|
||||
}, int2x2{}) == int2x2(2,0,0,2));
|
||||
@@ -57,7 +56,7 @@ TEST_CASE("vmath/mat_fun") {
|
||||
}, int2x2{}) == int2(1,1));
|
||||
}
|
||||
|
||||
SECTION("operators") {
|
||||
SUBCASE("operators") {
|
||||
STATIC_REQUIRE(+int2x2(1,-2,3,-4) == int2x2(1,-2,3,-4));
|
||||
STATIC_REQUIRE(-int2x2(1,-2,3,-4) == int2x2(-1,2,-3,4));
|
||||
STATIC_REQUIRE(~uint2x2(0xF0F0F0F0,0x0F0F0F0F,0xF0F0F0F0,0x0F0F0F0F) == uint2x2(0x0F0F0F0F,0xF0F0F0F0,0x0F0F0F0F,0xF0F0F0F0));
|
||||
@@ -164,7 +163,7 @@ TEST_CASE("vmath/mat_fun") {
|
||||
}
|
||||
}
|
||||
|
||||
SECTION("relational functions") {
|
||||
SUBCASE("relational functions") {
|
||||
STATIC_REQUIRE_FALSE(any(bool2x2(false, false, false, false)));
|
||||
STATIC_REQUIRE(any(bool2x2(true, false, true, false)));
|
||||
STATIC_REQUIRE(any(bool2x2(false, true, false, true)));
|
||||
@@ -199,7 +198,7 @@ TEST_CASE("vmath/mat_fun") {
|
||||
STATIC_REQUIRE(not_equal_to(int2x2(1,1,1,1), int2x2(0,1,2,3)) == bool2x2(true, false, true, true));
|
||||
}
|
||||
|
||||
SECTION("transpose") {
|
||||
SUBCASE("transpose") {
|
||||
STATIC_REQUIRE(transpose(int2x2(
|
||||
1, 2,
|
||||
3, 4
|
||||
@@ -231,7 +230,7 @@ TEST_CASE("vmath/mat_fun") {
|
||||
));
|
||||
}
|
||||
|
||||
SECTION("determinant") {
|
||||
SUBCASE("determinant") {
|
||||
constexpr int2x2 m2{1,2,3,4};
|
||||
constexpr int3x3 m3{1,2,3,4,5,6,7,8,9};
|
||||
constexpr int4x4 m4{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
|
||||
@@ -248,7 +247,7 @@ TEST_CASE("vmath/mat_fun") {
|
||||
STATIC_REQUIRE(determinant(transpose(generate_frank_matrix<int, 4>())) == 1);
|
||||
}
|
||||
|
||||
SECTION("inverse") {
|
||||
SUBCASE("inverse") {
|
||||
STATIC_REQUIRE(inverse(float2x2()) == float2x2());
|
||||
STATIC_REQUIRE(inverse(float3x3()) == float3x3());
|
||||
STATIC_REQUIRE(inverse(float4x4()) == float4x4());
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
******************************************************************************/
|
||||
|
||||
#include "vmath_tests.hpp"
|
||||
#include "catch/catch.hpp"
|
||||
|
||||
namespace
|
||||
{
|
||||
@@ -14,7 +13,7 @@ namespace
|
||||
}
|
||||
|
||||
TEST_CASE("vmath/mat") {
|
||||
SECTION("size/sizeof") {
|
||||
SUBCASE("size/sizeof") {
|
||||
STATIC_REQUIRE(int2x2{}.size == 2);
|
||||
STATIC_REQUIRE(int3x3{}.size == 3);
|
||||
STATIC_REQUIRE(int4x4{}.size == 4);
|
||||
@@ -24,7 +23,7 @@ TEST_CASE("vmath/mat") {
|
||||
STATIC_REQUIRE(sizeof(int4x4{}) == sizeof(int) * 4 * 4);
|
||||
}
|
||||
|
||||
SECTION("guides") {
|
||||
SUBCASE("guides") {
|
||||
STATIC_REQUIRE(mat{1,2,3,4}.size == 2);
|
||||
STATIC_REQUIRE(mat{{1,2},{3,4}}.size == 2);
|
||||
STATIC_REQUIRE(mat{vec{1,2},vec{3,4}}.size == 2);
|
||||
@@ -40,7 +39,7 @@ TEST_CASE("vmath/mat") {
|
||||
STATIC_REQUIRE(mat{mat{1,2,3,4,5,6,7,8,9},vec{5,6,7}}.size == 4);
|
||||
}
|
||||
|
||||
SECTION("ctors") {
|
||||
SUBCASE("ctors") {
|
||||
{
|
||||
STATIC_REQUIRE(int2x2()[0] == int2(1,0));
|
||||
STATIC_REQUIRE(int2x2()[1] == int2(0,1));
|
||||
@@ -93,7 +92,7 @@ TEST_CASE("vmath/mat") {
|
||||
}
|
||||
}
|
||||
|
||||
SECTION("operator=") {
|
||||
SUBCASE("operator=") {
|
||||
{
|
||||
int2x2 v(1,2,3,4);
|
||||
int2x2 v2;
|
||||
@@ -108,7 +107,7 @@ TEST_CASE("vmath/mat") {
|
||||
}
|
||||
}
|
||||
|
||||
SECTION("swap") {
|
||||
SUBCASE("swap") {
|
||||
{
|
||||
int2x2 v1(1,2,3,4);
|
||||
int2x2 v2(4,5,6,7);
|
||||
@@ -125,7 +124,7 @@ TEST_CASE("vmath/mat") {
|
||||
}
|
||||
}
|
||||
|
||||
SECTION("iter") {
|
||||
SUBCASE("iter") {
|
||||
{
|
||||
int2x2 m{1,2,3,4};
|
||||
|
||||
@@ -195,7 +194,7 @@ TEST_CASE("vmath/mat") {
|
||||
}
|
||||
}
|
||||
|
||||
SECTION("data") {
|
||||
SUBCASE("data") {
|
||||
{
|
||||
int2x2 m2;
|
||||
REQUIRE(m2.data() == &m2[0]);
|
||||
@@ -218,7 +217,7 @@ TEST_CASE("vmath/mat") {
|
||||
}
|
||||
}
|
||||
|
||||
SECTION("operator[]") {
|
||||
SUBCASE("operator[]") {
|
||||
{
|
||||
STATIC_REQUIRE(int2x2()[0] == int2(1,0));
|
||||
STATIC_REQUIRE(int2x2()[1] == int2(0,1));
|
||||
@@ -255,13 +254,13 @@ TEST_CASE("vmath/mat") {
|
||||
}
|
||||
}
|
||||
|
||||
SECTION("at") {
|
||||
SUBCASE("at") {
|
||||
STATIC_REQUIRE(int2x2(1,2,3,4).at(0) == int2(1,2));
|
||||
STATIC_REQUIRE(int2x2(1,2,3,4).at(1) == int2(3,4));
|
||||
REQUIRE_THROWS_AS((void)int2x2(1,2,3,4).at(2), std::out_of_range);
|
||||
}
|
||||
|
||||
SECTION("operator==/operator!=") {
|
||||
SUBCASE("operator==/operator!=") {
|
||||
STATIC_REQUIRE(int2x2(1,2,3,4) == int2x2(1,2,3,4));
|
||||
STATIC_REQUIRE_FALSE(int2x2(1,2,3,4) == int2x2(2,2,3,4));
|
||||
STATIC_REQUIRE_FALSE(int2x2(1,2,3,4) == int2x2(1,3,3,4));
|
||||
@@ -271,7 +270,7 @@ TEST_CASE("vmath/mat") {
|
||||
STATIC_REQUIRE(int2x2(1,2,3,4) != int2x2(1,3,3,4));
|
||||
}
|
||||
|
||||
SECTION("operator<") {
|
||||
SUBCASE("operator<") {
|
||||
STATIC_REQUIRE_FALSE(int2x2(1,2,3,4) < int2x2(1,2,3,4));
|
||||
|
||||
STATIC_REQUIRE(int2x2(1,1,3,4) < int2x2(1,2,3,4));
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
******************************************************************************/
|
||||
|
||||
#include "vmath_tests.hpp"
|
||||
#include "catch/catch.hpp"
|
||||
|
||||
namespace
|
||||
{
|
||||
@@ -14,7 +13,7 @@ namespace
|
||||
}
|
||||
|
||||
TEST_CASE("vmath/qua_fun") {
|
||||
SECTION("Operators") {
|
||||
SUBCASE("Operators") {
|
||||
STATIC_REQUIRE(+qua(1,-2,3,-4) == qua(1,-2,3,-4));
|
||||
STATIC_REQUIRE(-qua(1,-2,3,-4) == qua(-1,2,-3,4));
|
||||
|
||||
@@ -72,7 +71,7 @@ TEST_CASE("vmath/qua_fun") {
|
||||
STATIC_REQUIRE(float4{1,0,0,2} * fqua{0,0,0.7071067812f,0.7071067812f} == uapprox4(0.f,1.f,0.f,2.f));
|
||||
}
|
||||
|
||||
SECTION("Common Functions") {
|
||||
SUBCASE("Common Functions") {
|
||||
{
|
||||
REQUIRE(all(approx(
|
||||
qrotate_z(radians(5.f)),
|
||||
@@ -145,7 +144,7 @@ TEST_CASE("vmath/qua_fun") {
|
||||
}
|
||||
}
|
||||
|
||||
SECTION("Geometric Functions") {
|
||||
SUBCASE("Geometric Functions") {
|
||||
STATIC_REQUIRE(dot(qua(1,2,3,4),qua(3,4,5,6)) == 50);
|
||||
|
||||
REQUIRE(length(fqua(10.f,0.f,0.f,0.f)) == uapprox(10.f));
|
||||
@@ -164,7 +163,7 @@ TEST_CASE("vmath/qua_fun") {
|
||||
REQUIRE(normalize(fqua(0.5f,0.f,0.f,0.f)).v == uapprox3(1.f,0.f,0.f));
|
||||
}
|
||||
|
||||
SECTION("Relational Functions") {
|
||||
SUBCASE("Relational Functions") {
|
||||
STATIC_REQUIRE(approx(qua(1,1,1,1), qua(0,1,2,3)) == bool4(false, true, false, false));
|
||||
STATIC_REQUIRE(approx(qua(1,1,1,1), qua(0,1,2,3), 0) == bool4(false, true, false, false));
|
||||
STATIC_REQUIRE(approx(qua(1,1,1,1), qua(0,1,2,3), 1) == bool4(true, true, true, false));
|
||||
@@ -179,7 +178,7 @@ TEST_CASE("vmath/qua_fun") {
|
||||
STATIC_REQUIRE(not_equal_to(qua(1,1,1,1), qua(0,1,2,3)) == bool4(true, false, true, true));
|
||||
}
|
||||
|
||||
SECTION("Quaternion Functions") {
|
||||
SUBCASE("Quaternion Functions") {
|
||||
STATIC_REQUIRE(conjugate(qua(1,2,3,4)) == qua(-1,-2,-3,4));
|
||||
STATIC_REQUIRE(inverse(qua(0.f,0.f,0.7071067812f,0.7071067812f)).v == uapprox3(0.f,0.f,-0.7071067812f));
|
||||
STATIC_REQUIRE(inverse(qua(0.f,0.f,0.7071067812f,0.7071067812f)).s == uapprox(0.7071067812f));
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
******************************************************************************/
|
||||
|
||||
#include "vmath_tests.hpp"
|
||||
#include "catch/catch.hpp"
|
||||
|
||||
namespace
|
||||
{
|
||||
@@ -14,7 +13,7 @@ namespace
|
||||
}
|
||||
|
||||
TEST_CASE("vmath/qua") {
|
||||
SECTION("size/sizeof") {
|
||||
SUBCASE("size/sizeof") {
|
||||
STATIC_REQUIRE(fqua{}.size == 4);
|
||||
STATIC_REQUIRE(dqua{}.size == 4);
|
||||
|
||||
@@ -22,7 +21,7 @@ TEST_CASE("vmath/qua") {
|
||||
STATIC_REQUIRE(sizeof(dqua{}) == sizeof(double) * 4);
|
||||
}
|
||||
|
||||
SECTION("guides") {
|
||||
SUBCASE("guides") {
|
||||
STATIC_REQUIRE(qua{1,2,3,4}.size == 4);
|
||||
STATIC_REQUIRE(qua{{1,2,3},4}.size == 4);
|
||||
STATIC_REQUIRE(qua{vec{1,2,3},4}.size == 4);
|
||||
@@ -30,7 +29,7 @@ TEST_CASE("vmath/qua") {
|
||||
STATIC_REQUIRE(qua(vec{1,2,3,4}).size == 4);
|
||||
}
|
||||
|
||||
SECTION("ctors") {
|
||||
SUBCASE("ctors") {
|
||||
{
|
||||
STATIC_REQUIRE(fqua{}.v == uapprox3(0.f));
|
||||
STATIC_REQUIRE(fqua{}.s == uapprox(1.f));
|
||||
@@ -61,7 +60,7 @@ TEST_CASE("vmath/qua") {
|
||||
}
|
||||
}
|
||||
|
||||
SECTION("operator=") {
|
||||
SUBCASE("operator=") {
|
||||
{
|
||||
fqua v(1,2,3,4);
|
||||
fqua v2;
|
||||
@@ -76,7 +75,7 @@ TEST_CASE("vmath/qua") {
|
||||
}
|
||||
}
|
||||
|
||||
SECTION("swap") {
|
||||
SUBCASE("swap") {
|
||||
{
|
||||
fqua v1(1,2,3,4);
|
||||
fqua v2(4,5,6,7);
|
||||
@@ -93,7 +92,7 @@ TEST_CASE("vmath/qua") {
|
||||
}
|
||||
}
|
||||
|
||||
SECTION("iter") {
|
||||
SUBCASE("iter") {
|
||||
{
|
||||
fqua v{1,2,3,4};
|
||||
|
||||
@@ -163,7 +162,7 @@ TEST_CASE("vmath/qua") {
|
||||
}
|
||||
}
|
||||
|
||||
SECTION("data") {
|
||||
SUBCASE("data") {
|
||||
{
|
||||
fqua i2;
|
||||
REQUIRE(i2.data() == &i2[0]);
|
||||
@@ -174,7 +173,7 @@ TEST_CASE("vmath/qua") {
|
||||
}
|
||||
}
|
||||
|
||||
SECTION("operator[]") {
|
||||
SUBCASE("operator[]") {
|
||||
{
|
||||
STATIC_REQUIRE(qua(1,2,3,4).v == vec(1,2,3));
|
||||
STATIC_REQUIRE(qua(1,2,3,4).s == 4);
|
||||
@@ -193,7 +192,7 @@ TEST_CASE("vmath/qua") {
|
||||
}
|
||||
}
|
||||
|
||||
SECTION("at") {
|
||||
SUBCASE("at") {
|
||||
STATIC_REQUIRE(fqua(1,2,3,4).at(0) == 1);
|
||||
STATIC_REQUIRE(fqua(1,2,3,4).at(1) == 2);
|
||||
STATIC_REQUIRE(fqua(1,2,3,4).at(2) == 3);
|
||||
@@ -201,7 +200,7 @@ TEST_CASE("vmath/qua") {
|
||||
REQUIRE_THROWS_AS((void)fqua(1,2,3,4).at(4), std::out_of_range);
|
||||
}
|
||||
|
||||
SECTION("operator==/operator!=") {
|
||||
SUBCASE("operator==/operator!=") {
|
||||
STATIC_REQUIRE(fqua(1,2,3,4) == fqua(1,2,3,4));
|
||||
STATIC_REQUIRE_FALSE(fqua(1,2,3,4) == fqua(2,2,3,4));
|
||||
STATIC_REQUIRE_FALSE(fqua(1,2,3,4) == fqua(1,3,3,4));
|
||||
@@ -211,7 +210,7 @@ TEST_CASE("vmath/qua") {
|
||||
STATIC_REQUIRE(fqua(1,2,3,4) != fqua(1,3,3,4));
|
||||
}
|
||||
|
||||
SECTION("operator<") {
|
||||
SUBCASE("operator<") {
|
||||
STATIC_REQUIRE_FALSE(fqua(1,2,3,4) < fqua(1,2,3,4));
|
||||
|
||||
STATIC_REQUIRE(fqua(0,2,3,4) < fqua(1,2,3,4));
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
******************************************************************************/
|
||||
|
||||
#include <vmath.hpp/vmath.hpp>
|
||||
#include "doctest/doctest.hpp"
|
||||
|
||||
namespace vmath_tests
|
||||
{
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
******************************************************************************/
|
||||
|
||||
#include "vmath_tests.hpp"
|
||||
#include "catch/catch.hpp"
|
||||
|
||||
namespace
|
||||
{
|
||||
@@ -14,7 +13,7 @@ namespace
|
||||
}
|
||||
|
||||
TEST_CASE("vmath/vec_fun") {
|
||||
SECTION("Detail") {
|
||||
SUBCASE("Detail") {
|
||||
STATIC_REQUIRE(map_join([](const int& x){
|
||||
return x * 2;
|
||||
}, int2{1}) == int2{2});
|
||||
@@ -40,7 +39,7 @@ TEST_CASE("vmath/vec_fun") {
|
||||
}, int2{1}) == 2);
|
||||
}
|
||||
|
||||
SECTION("Operators") {
|
||||
SUBCASE("Operators") {
|
||||
STATIC_REQUIRE(+int2(1,-2) == int2(1,-2));
|
||||
STATIC_REQUIRE(-int2(1,-2) == int2(-1,2));
|
||||
STATIC_REQUIRE(~uint2(0xF0F0F0F0,0x0F0F0F0F) == uint2(0x0F0F0F0F,0xF0F0F0F0));
|
||||
@@ -130,7 +129,7 @@ TEST_CASE("vmath/vec_fun") {
|
||||
}
|
||||
}
|
||||
|
||||
SECTION("Angle and Trigonometric Functions") {
|
||||
SUBCASE("Angle and Trigonometric Functions") {
|
||||
STATIC_REQUIRE(radians(degrees(float2(12.13f))) == uapprox2(12.13f));
|
||||
STATIC_REQUIRE(degrees(radians(float2(12.13f))) == uapprox2(12.13f));
|
||||
|
||||
@@ -159,7 +158,7 @@ TEST_CASE("vmath/vec_fun") {
|
||||
}
|
||||
}
|
||||
|
||||
SECTION("Exponential Functions") {
|
||||
SUBCASE("Exponential Functions") {
|
||||
(void)pow(float2(1.f), float2(2.f));
|
||||
(void)exp(float2(1.f));
|
||||
(void)log(float2(1.f));
|
||||
@@ -169,7 +168,7 @@ TEST_CASE("vmath/vec_fun") {
|
||||
(void)rsqrt(float2(1.f));
|
||||
}
|
||||
|
||||
SECTION("Common Functions") {
|
||||
SUBCASE("Common Functions") {
|
||||
STATIC_REQUIRE(abs(float2(1.f, -1.f)) == uapprox2(1.f,1.f));
|
||||
STATIC_REQUIRE(sign(float3(1.f, -1.f, 0.f)) == uapprox3(1.f,-1.f,0.f));
|
||||
STATIC_REQUIRE(rcp(float2(2.f, 4.f)) == uapprox2(0.5f,0.25f));
|
||||
@@ -241,7 +240,7 @@ TEST_CASE("vmath/vec_fun") {
|
||||
REQUIRE(ldexp(float2(0.85f), int2(1)).x == uapprox(1.7f));
|
||||
}
|
||||
|
||||
SECTION("Geometric Functions") {
|
||||
SUBCASE("Geometric Functions") {
|
||||
REQUIRE(length(float2(10.f,0.f)) == uapprox(10.f));
|
||||
REQUIRE(length(float2(-10.f,0.f)) == uapprox(10.f));
|
||||
|
||||
@@ -264,7 +263,7 @@ TEST_CASE("vmath/vec_fun") {
|
||||
REQUIRE(refract(float2(1.f), float2(2.f), 1.f).x == uapprox(-15.f));
|
||||
}
|
||||
|
||||
SECTION("Relational Functions") {
|
||||
SUBCASE("Relational Functions") {
|
||||
STATIC_REQUIRE_FALSE(any(bool2(false, false)));
|
||||
STATIC_REQUIRE(any(bool2(true, false)));
|
||||
STATIC_REQUIRE(any(bool2(false, true)));
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
******************************************************************************/
|
||||
|
||||
#include "vmath_tests.hpp"
|
||||
#include "catch/catch.hpp"
|
||||
|
||||
namespace
|
||||
{
|
||||
@@ -14,7 +13,7 @@ namespace
|
||||
}
|
||||
|
||||
TEST_CASE("vmath/vec") {
|
||||
SECTION("size/sizeof") {
|
||||
SUBCASE("size/sizeof") {
|
||||
STATIC_REQUIRE(int2{}.size == 2);
|
||||
STATIC_REQUIRE(int3{}.size == 3);
|
||||
STATIC_REQUIRE(int4{}.size == 4);
|
||||
@@ -24,7 +23,7 @@ TEST_CASE("vmath/vec") {
|
||||
STATIC_REQUIRE(sizeof(int4{}) == sizeof(int) * 4);
|
||||
}
|
||||
|
||||
SECTION("guides") {
|
||||
SUBCASE("guides") {
|
||||
STATIC_REQUIRE(vec{1,2}.size == 2);
|
||||
|
||||
STATIC_REQUIRE(vec{1,2,3}.size == 3);
|
||||
@@ -40,7 +39,7 @@ TEST_CASE("vmath/vec") {
|
||||
STATIC_REQUIRE(vec{1,vec{2,3,4}}.size == 4);
|
||||
}
|
||||
|
||||
SECTION("ctors") {
|
||||
SUBCASE("ctors") {
|
||||
{
|
||||
STATIC_REQUIRE(int2().x == 0);
|
||||
STATIC_REQUIRE(int2().y == 0);
|
||||
@@ -86,7 +85,7 @@ TEST_CASE("vmath/vec") {
|
||||
}
|
||||
}
|
||||
|
||||
SECTION("operator=") {
|
||||
SUBCASE("operator=") {
|
||||
{
|
||||
int2 v(1,2);
|
||||
int2 v2;
|
||||
@@ -101,7 +100,7 @@ TEST_CASE("vmath/vec") {
|
||||
}
|
||||
}
|
||||
|
||||
SECTION("swap") {
|
||||
SUBCASE("swap") {
|
||||
{
|
||||
int2 v1(1,2);
|
||||
int2 v2(4,5);
|
||||
@@ -118,7 +117,7 @@ TEST_CASE("vmath/vec") {
|
||||
}
|
||||
}
|
||||
|
||||
SECTION("iter") {
|
||||
SUBCASE("iter") {
|
||||
{
|
||||
int2 v{1,2};
|
||||
|
||||
@@ -188,7 +187,7 @@ TEST_CASE("vmath/vec") {
|
||||
}
|
||||
}
|
||||
|
||||
SECTION("data") {
|
||||
SUBCASE("data") {
|
||||
{
|
||||
int2 i2;
|
||||
REQUIRE(i2.data() == &i2[0]);
|
||||
@@ -211,7 +210,7 @@ TEST_CASE("vmath/vec") {
|
||||
}
|
||||
}
|
||||
|
||||
SECTION("operator[]") {
|
||||
SUBCASE("operator[]") {
|
||||
{
|
||||
STATIC_REQUIRE(int2(1,2).x == 1);
|
||||
STATIC_REQUIRE(int2(1,2).y == 2);
|
||||
@@ -252,13 +251,13 @@ TEST_CASE("vmath/vec") {
|
||||
}
|
||||
}
|
||||
|
||||
SECTION("at") {
|
||||
SUBCASE("at") {
|
||||
STATIC_REQUIRE(int2(1,2).at(0) == 1);
|
||||
STATIC_REQUIRE(int2(1,2).at(1) == 2);
|
||||
REQUIRE_THROWS_AS((void)int2(1,2).at(2), std::out_of_range);
|
||||
}
|
||||
|
||||
SECTION("operator==/operator!=") {
|
||||
SUBCASE("operator==/operator!=") {
|
||||
STATIC_REQUIRE(int2(1,2) == int2(1,2));
|
||||
STATIC_REQUIRE_FALSE(int2(1,2) == int2(2,2));
|
||||
STATIC_REQUIRE_FALSE(int2(1,2) == int2(1,3));
|
||||
@@ -268,7 +267,7 @@ TEST_CASE("vmath/vec") {
|
||||
STATIC_REQUIRE(int2(1,2) != int2(1,3));
|
||||
}
|
||||
|
||||
SECTION("operator<") {
|
||||
SUBCASE("operator<") {
|
||||
STATIC_REQUIRE_FALSE(int2(1,2) < int2(1,2));
|
||||
|
||||
STATIC_REQUIRE(int2(1,1) < int2(1,2));
|
||||
|
||||
Reference in New Issue
Block a user