diff --git a/untests/CMakeLists.txt b/untests/CMakeLists.txt index c5ea205..edc5959 100644 --- a/untests/CMakeLists.txt +++ b/untests/CMakeLists.txt @@ -25,7 +25,13 @@ target_compile_options(${PROJECT_NAME} $<$: /W4> PRIVATE - $<$,$,$>: - -Wall -Wextra -Wpedantic>) + $<$: + -Wall -Wextra -Wpedantic> + PRIVATE + $<$,$>: + -Weverything -Wno-unknown-warning-option + -Wconversion -Wimplicit-int-float-conversion + -Wno-c++98-compat-pedantic -Wno-ctad-maybe-unsupported + -Wno-float-equal -Wno-double-promotion -Wno-shadow-field-in-constructor>) add_test(${PROJECT_NAME} ${PROJECT_NAME}) diff --git a/untests/doctest/doctest.hpp b/untests/doctest/doctest.hpp index 129598f..2c0032e 100644 --- a/untests/doctest/doctest.hpp +++ b/untests/doctest/doctest.hpp @@ -4,8 +4,8 @@ #define STATIC_CHECK(...)\ static_assert(__VA_ARGS__, #__VA_ARGS__);\ - CHECK(__VA_ARGS__); + CHECK(__VA_ARGS__) #define STATIC_CHECK_FALSE(...)\ static_assert(!(__VA_ARGS__), "!(" #__VA_ARGS__ ")");\ - CHECK(!(__VA_ARGS__)); + CHECK(!(__VA_ARGS__)) diff --git a/untests/vmath_fix_tests.cpp b/untests/vmath_fix_tests.cpp index 7ebcb19..8e33736 100644 --- a/untests/vmath_fix_tests.cpp +++ b/untests/vmath_fix_tests.cpp @@ -122,6 +122,7 @@ namespace using namespace vmath_tests; using qfix = qua>; + using qfixi = qua>; using fix2b = vec, 2>; using fix3b = vec, 3>; @@ -285,8 +286,8 @@ namespace vmath_hpp namespace vmath_hpp { - template fix any(const fix2f&); - template fix all(const fix2f&); + template fix any(const fix2i&); + template fix all(const fix2i&); template fix2b approx(const fix2f&, const fix2f&); template fix2b approx(const fix2f&, const fix2f&, fix); template fix2b less(const fix2f&, const fix2f&); @@ -299,8 +300,8 @@ namespace vmath_hpp namespace vmath_hpp { - template fix any(const fix2x2f&); - template fix all(const fix2x2f&); + template fix any(const fix2x2i&); + template fix all(const fix2x2i&); template fix2x2b approx(const fix2x2f&, const fix2x2f&); template fix2x2b approx(const fix2x2f&, const fix2x2f&, fix); template fix2x2b less(const fix2x2f&, const fix2x2f&); @@ -313,8 +314,8 @@ namespace vmath_hpp namespace vmath_hpp { - template fix any(const qfix&); - template fix all(const qfix&); + template fix any(const qfixi&); + template fix all(const qfixi&); template fix4b approx(const qfix&, const qfix&); template fix4b approx(const qfix&, const qfix&, fix); template fix4b less(const qfix&, const qfix&); diff --git a/untests/vmath_mat_fun_tests.cpp b/untests/vmath_mat_fun_tests.cpp index 60a99cd..e41cd71 100644 --- a/untests/vmath_mat_fun_tests.cpp +++ b/untests/vmath_mat_fun_tests.cpp @@ -17,11 +17,11 @@ namespace for ( int i = 1; i <= Size; ++i ) { for ( int j = 1; j <= Size; ++j ) { if ( j < i - Size ) { - m[i - 1][j - 1] = 0; + m[unsigned(i - 1)][unsigned(j - 1)] = 0; } else if ( j == (i - 1) ) { - m[i - 1][j - 1] = Size + 1 - i; + m[unsigned(i - 1)][unsigned(j - 1)] = Size + 1 - i; } else { - m[i - 1][j - 1] = Size + 1 - j; + m[unsigned(i - 1)][unsigned(j - 1)] = Size + 1 - j; } } } @@ -138,57 +138,57 @@ TEST_CASE("vmath/mat_fun") { } SUBCASE("Operators2") { - STATIC_CHECK(int2x2{} + 0.f == float2x2{}); - STATIC_CHECK(0.f + int2x2{} == float2x2{}); - STATIC_CHECK(int2x2{} + float2x2{} == float2x2{2.f}); - STATIC_CHECK(float2x2{} + int2x2{} == float2x2{2.f}); + STATIC_CHECK(int2x2{} + 0.0 == double2x2{}); + STATIC_CHECK(0.0 + int2x2{} == double2x2{}); + STATIC_CHECK(int2x2{} + double2x2{} == double2x2{2.0}); + STATIC_CHECK(double2x2{} + int2x2{} == double2x2{2.0}); - STATIC_CHECK(int2x2{} - 0.f == float2x2{}); - STATIC_CHECK(0.f - int2x2{} == float2x2{-1.f}); - STATIC_CHECK(int2x2{} - float2x2{} == float2x2{0.f}); - STATIC_CHECK(float2x2{} - int2x2{} == float2x2{0.f}); + STATIC_CHECK(int2x2{} - 0.0 == double2x2{}); + STATIC_CHECK(0.0 - int2x2{} == double2x2{-1.0}); + STATIC_CHECK(int2x2{} - double2x2{} == double2x2{0.0}); + STATIC_CHECK(double2x2{} - int2x2{} == double2x2{0.0}); - STATIC_CHECK(int2x2{} * 1.f == float2x2{}); - STATIC_CHECK(0.f * int2x2{1} == float2x2{0.f}); - STATIC_CHECK(int2{} * float2x2{} == float2{}); - STATIC_CHECK(int2x2{} * float2x2{} == float2x2{}); - STATIC_CHECK(float2x2{} * int2x2{1} == float2x2{}); + STATIC_CHECK(int2x2{} * 1.0 == double2x2{}); + STATIC_CHECK(0.0 * int2x2{1} == double2x2{0.0}); + STATIC_CHECK(int2{} * double2x2{} == double2{}); + STATIC_CHECK(int2x2{} * double2x2{} == double2x2{}); + STATIC_CHECK(double2x2{} * int2x2{1} == double2x2{}); - STATIC_CHECK(int2x2{} / 1.f == float2x2{}); - STATIC_CHECK(0.f / int2x2{1,1,1,1} == float2x2{0.f}); + STATIC_CHECK(int2x2{} / 1.0 == double2x2{}); + STATIC_CHECK(0.0 / int2x2{1,1,1,1} == double2x2{0.0}); } SUBCASE("Conversions2") { { - STATIC_CHECK(float2x2(1.0) == float2x2(1)); - STATIC_CHECK(float2x2(int2(1,2)) == float2x2(float2(1,2))); - STATIC_CHECK(float2x2(int2(1,2),double2(3,4)) == float2x2(1,2,3,4)); + STATIC_CHECK(double2x2(1.0) == double2x2(1)); + STATIC_CHECK(double2x2(int2(1,2)) == double2x2(double2(1,2))); + STATIC_CHECK(double2x2(int2(1,2),float2(3,4)) == double2x2(1,2,3,4)); - STATIC_CHECK(float2x2(int2x2(1)) == float2x2(1)); - STATIC_CHECK(float2x2(int3x3(1)) == float2x2(1)); - STATIC_CHECK(float2x2(int4x4(1)) == float2x2(1)); + STATIC_CHECK(double2x2(int2x2(1)) == double2x2(1)); + STATIC_CHECK(double2x2(int3x3(1)) == double2x2(1)); + STATIC_CHECK(double2x2(int4x4(1)) == double2x2(1)); } { - STATIC_CHECK(float3x3(1.0) == float3x3(1)); - STATIC_CHECK(float3x3(int3(1,2,3)) == float3x3(float3(1,2,3))); - STATIC_CHECK(float3x3(int3(1,2,3),double3(2,3,4),uint3(3,4,5)) == float3x3(1,2,3,2,3,4,3,4,5)); + STATIC_CHECK(double3x3(1.0) == double3x3(1)); + STATIC_CHECK(double3x3(int3(1,2,3)) == double3x3(double3(1,2,3))); + STATIC_CHECK(double3x3(int3(1,2,3),float3(2,3,4),uint3(3,4,5)) == double3x3(1,2,3,2,3,4,3,4,5)); - STATIC_CHECK(float3x3(int2x2(1),uint2(2)) == float3x3(float2x2(1),float2(2))); + STATIC_CHECK(double3x3(int2x2(1),uint2(2)) == double3x3(double2x2(1),double2(2))); - STATIC_CHECK(float3x3(int2x2(1)) == float3x3(1)); - STATIC_CHECK(float3x3(int3x3(1)) == float3x3(1)); - STATIC_CHECK(float3x3(int4x4(1)) == float3x3(1)); + STATIC_CHECK(double3x3(int2x2(1)) == double3x3(1)); + STATIC_CHECK(double3x3(int3x3(1)) == double3x3(1)); + STATIC_CHECK(double3x3(int4x4(1)) == double3x3(1)); } { - STATIC_CHECK(float4x4(1.0) == float4x4(1)); - STATIC_CHECK(float4x4(int4(1,2,3,4)) == float4x4(float4(1,2,3,4))); - STATIC_CHECK(float4x4(int4(1,2,3,4),double4(2,3,4,5),uint4(3,4,5,6),int4(4,5,6,7)) == float4x4(1,2,3,4,2,3,4,5,3,4,5,6,4,5,6,7)); + STATIC_CHECK(double4x4(1.0) == double4x4(1)); + STATIC_CHECK(double4x4(int4(1,2,3,4)) == double4x4(double4(1,2,3,4))); + STATIC_CHECK(double4x4(int4(1,2,3,4),float4(2,3,4,5),uint4(3,4,5,6),int4(4,5,6,7)) == double4x4(1,2,3,4,2,3,4,5,3,4,5,6,4,5,6,7)); - STATIC_CHECK(float4x4(int3x3(1),uint3(2)) == float4x4(float3x3(1),float3(2))); + STATIC_CHECK(double4x4(int3x3(1),uint3(2)) == double4x4(double3x3(1),double3(2))); - STATIC_CHECK(float4x4(int2x2(1)) == float4x4(1)); - STATIC_CHECK(float4x4(int3x3(1)) == float4x4(1)); - STATIC_CHECK(float4x4(int4x4(1)) == float4x4(1)); + STATIC_CHECK(double4x4(int2x2(1)) == double4x4(1)); + STATIC_CHECK(double4x4(int3x3(1)) == double4x4(1)); + STATIC_CHECK(double4x4(int4x4(1)) == double4x4(1)); } } diff --git a/untests/vmath_qua_fun_tests.cpp b/untests/vmath_qua_fun_tests.cpp index dad95a2..0e4f9bc 100644 --- a/untests/vmath_qua_fun_tests.cpp +++ b/untests/vmath_qua_fun_tests.cpp @@ -77,13 +77,13 @@ TEST_CASE("vmath/qua_fun") { } SUBCASE("Conversions2") { - STATIC_CHECK(qfloat(1,2.f,3.0,4u) == qfloat(1,2,3,4)); - STATIC_CHECK(qfloat(int3(1,2,3),4u) == qfloat(1,2,3,4)); - STATIC_CHECK(qfloat(int4(1,2,3,4)) == qfloat(1,2,3,4)); - STATIC_CHECK(qfloat(qdouble(1,2,3,4)) == qfloat(1,2,3,4)); + STATIC_CHECK(qdouble(1,2.f,3.0,4u) == qdouble(1,2,3,4)); + STATIC_CHECK(qdouble(int3(1,2,3),4u) == qdouble(1,2,3,4)); + STATIC_CHECK(qdouble(int4(1,2,3,4)) == qdouble(1,2,3,4)); + STATIC_CHECK(qdouble(qfloat(1,2,3,4)) == qdouble(1,2,3,4)); STATIC_CHECK(float4(qfloat(1,2,3,4)) == float4(1,2,3,4)); - STATIC_CHECK(float4(qdouble(1,2,3,4)) == float4(1,2,3,4)); + STATIC_CHECK(double4(qfloat(1,2,3,4)) == double4(1,2,3,4)); } SUBCASE("Common Functions") { diff --git a/untests/vmath_qua_tests.cpp b/untests/vmath_qua_tests.cpp index f6103ac..ee4856b 100644 --- a/untests/vmath_qua_tests.cpp +++ b/untests/vmath_qua_tests.cpp @@ -104,7 +104,7 @@ TEST_CASE("vmath/qua") { SUBCASE("iter") { { - qfloat v{1,2,3,4}; + qua v{1,2,3,4}; CHECK(*v.begin() == 1); CHECK(*(v.begin() + 1) == 2); @@ -135,12 +135,12 @@ TEST_CASE("vmath/qua") { CHECK(v.crend() - 4 == v.crbegin()); *v.begin() = 3; - CHECK(v == qfloat{3,2,3,4}); + CHECK(v == qua{3,2,3,4}); *v.rbegin() = 5; - CHECK(v == qfloat{3,2,3,5}); + CHECK(v == qua{3,2,3,5}); } { - const qfloat v{1,2,3,4}; + const qua v{1,2,3,4}; CHECK(*v.begin() == 1); CHECK(*(v.begin() + 1) == 2); @@ -230,12 +230,12 @@ TEST_CASE("vmath/qua") { } SUBCASE("at") { - STATIC_CHECK(qfloat(1,2,3,4).at(0) == 1); - STATIC_CHECK(qfloat(1,2,3,4).at(1) == 2); - STATIC_CHECK(qfloat(1,2,3,4).at(2) == 3); - STATIC_CHECK(qfloat(1,2,3,4).at(3) == 4); + STATIC_CHECK(qua(1,2,3,4).at(0) == 1); + STATIC_CHECK(qua(1,2,3,4).at(1) == 2); + STATIC_CHECK(qua(1,2,3,4).at(2) == 3); + STATIC_CHECK(qua(1,2,3,4).at(3) == 4); #ifndef VMATH_HPP_NO_EXCEPTIONS - CHECK_THROWS_AS((void)qfloat(1,2,3,4).at(4), std::out_of_range); + CHECK_THROWS_AS((void)qua(1,2,3,4).at(4), std::out_of_range); #endif } diff --git a/untests/vmath_vec_fun_tests.cpp b/untests/vmath_vec_fun_tests.cpp index 4752559..9ddad99 100644 --- a/untests/vmath_vec_fun_tests.cpp +++ b/untests/vmath_vec_fun_tests.cpp @@ -104,56 +104,56 @@ TEST_CASE("vmath/vec_fun") { } SUBCASE("Operators2") { - STATIC_CHECK(int2{} + 0.f == float2{}); - STATIC_CHECK(0.f + int2{} == float2{}); - STATIC_CHECK(int2{} + float2{} == float2{}); - STATIC_CHECK(float2{} + int2{} == float2{}); + STATIC_CHECK(int2{} + 0.0 == double2{}); + STATIC_CHECK(0.0 + int2{} == double2{}); + STATIC_CHECK(int2{} + double2{} == double2{}); + STATIC_CHECK(double2{} + int2{} == double2{}); - STATIC_CHECK(int2{} - 0.f == float2{}); - STATIC_CHECK(0.f - int2{} == float2{}); - STATIC_CHECK(int2{} - float2{} == float2{}); - STATIC_CHECK(float2{} - int2{} == float2{}); + STATIC_CHECK(int2{} - 0.0 == double2{}); + STATIC_CHECK(0.0 - int2{} == double2{}); + STATIC_CHECK(int2{} - double2{} == double2{}); + STATIC_CHECK(double2{} - int2{} == double2{}); - STATIC_CHECK(int2{} * 1.f == float2{}); - STATIC_CHECK(0.f * int2{1} == float2{}); - STATIC_CHECK(int2{} * float2{1.f} == float2{}); - STATIC_CHECK(float2{} * int2{1} == float2{}); + STATIC_CHECK(int2{} * 1.0 == double2{}); + STATIC_CHECK(0.0 * int2{1} == double2{}); + STATIC_CHECK(int2{} * double2{1.0} == double2{}); + STATIC_CHECK(double2{} * int2{1} == double2{}); - STATIC_CHECK(int2{} / 1.f == float2{}); - STATIC_CHECK(0.f / int2{1} == float2{}); - STATIC_CHECK(int2{} / float2{1.f} == float2{}); - STATIC_CHECK(float2{} / int2{1} == float2{}); + STATIC_CHECK(int2{} / 1.0 == double2{}); + STATIC_CHECK(0.0 / int2{1} == double2{}); + STATIC_CHECK(int2{} / double2{1.0} == double2{}); + STATIC_CHECK(double2{} / int2{1} == double2{}); } SUBCASE("Conversions2") { { - STATIC_CHECK(float2(1) == float2(1,1)); - STATIC_CHECK(float2(1,2.0) == float2(1,2)); - STATIC_CHECK(float2(int2(1,2)) == float2(1,2)); - STATIC_CHECK(float2(int3(1,2,3)) == float2(1,2)); - STATIC_CHECK(float2(int4(1,2,3,4)) == float2(1,2)); + STATIC_CHECK(double2(1) == double2(1,1)); + STATIC_CHECK(double2(1,2.f) == double2(1,2)); + STATIC_CHECK(double2(int2(1,2)) == double2(1,2)); + STATIC_CHECK(double2(int3(1,2,3)) == double2(1,2)); + STATIC_CHECK(double2(int4(1,2,3,4)) == double2(1,2)); } { - STATIC_CHECK(float3(1) == float3(1,1,1)); - STATIC_CHECK(float3(1,2.0,3u) == float3(1,2,3)); - STATIC_CHECK(float3(int3(1,2,3)) == float3(1,2,3)); - STATIC_CHECK(float3(int4(1,2,3,4)) == float3(1,2,3)); + STATIC_CHECK(double3(1) == double3(1,1,1)); + STATIC_CHECK(double3(1,2.f,3u) == double3(1,2,3)); + STATIC_CHECK(double3(int3(1,2,3)) == double3(1,2,3)); + STATIC_CHECK(double3(int4(1,2,3,4)) == double3(1,2,3)); - STATIC_CHECK(float3(int2(1,2),3.0) == float3(1,2,3)); - STATIC_CHECK(float3(1.0,int2(2,3)) == float3(1,2,3)); + STATIC_CHECK(double3(int2(1,2),3.f) == double3(1,2,3)); + STATIC_CHECK(double3(1.f,int2(2,3)) == double3(1,2,3)); } { - STATIC_CHECK(float4(1) == float4(1,1,1,1)); - STATIC_CHECK(float4(1,2.0,3u,4) == float4(1,2,3,4)); - STATIC_CHECK(float4(int4(1,2,3,4)) == float4(1,2,3,4)); + STATIC_CHECK(double4(1) == double4(1,1,1,1)); + STATIC_CHECK(double4(1,2.f,3u,4) == double4(1,2,3,4)); + STATIC_CHECK(double4(int4(1,2,3,4)) == double4(1,2,3,4)); - STATIC_CHECK(float4(int2{1,2},3u,4.0) == float4(1,2,3,4)); - STATIC_CHECK(float4(1,int2{2,3},4.0) == float4(1,2,3,4)); - STATIC_CHECK(float4(1,2.f,int2{3,4}) == float4(1,2,3,4)); - STATIC_CHECK(float4(int2{1,2},float2{3,4}) == float4(1,2,3,4)); + STATIC_CHECK(double4(int2{1,2},3u,4.f) == double4(1,2,3,4)); + STATIC_CHECK(double4(1,int2{2,3},4.f) == double4(1,2,3,4)); + STATIC_CHECK(double4(1,2.f,int2{3,4}) == double4(1,2,3,4)); + STATIC_CHECK(double4(int2{1,2},double2{3,4}) == double4(1,2,3,4)); - STATIC_CHECK(float4(int3{1,2,3},4.0) == float4(1,2,3,4)); - STATIC_CHECK(float4(1.0,int3{2,3,4}) == float4(1,2,3,4)); + STATIC_CHECK(double4(int3{1,2,3},4.f) == double4(1,2,3,4)); + STATIC_CHECK(double4(1.f,int3{2,3,4}) == double4(1,2,3,4)); } } @@ -295,16 +295,16 @@ TEST_CASE("vmath/vec_fun") { STATIC_CHECK(distance2(float2(-5.f,0.f), float2(-10.f,0.f)) == uapprox(25.f)); STATIC_CHECK(dot(int2(1,2),int2(3,4)) == 11); - STATIC_CHECK(dot(int2(1,2),float2(3,4)) == uapprox(11.f)); - STATIC_CHECK(dot(float2(3,4),int2(1,2)) == uapprox(11.f)); + STATIC_CHECK(dot(int2(1,2),double2(3,4)) == uapprox(11.0)); + STATIC_CHECK(dot(double2(3,4),int2(1,2)) == uapprox(11.0)); STATIC_CHECK(cross(int2(1,0),int2(0,1)) == 1); - STATIC_CHECK(cross(int2(1,0),float2(0,1)) == uapprox(1.f)); - STATIC_CHECK(cross(float2(0,1),int2(1,0)) == uapprox(-1.f)); + STATIC_CHECK(cross(int2(1,0),double2(0,1)) == uapprox(1.0)); + STATIC_CHECK(cross(double2(0,1),int2(1,0)) == uapprox(-1.0)); STATIC_CHECK(cross(int3(1,0,0),int3(0,1,0)) == int3(0,0,1)); - STATIC_CHECK(cross(int3(1,0,0),float3(0,1,0)) == uapprox3(0.f,0.f,1.f)); - STATIC_CHECK(cross(float3(0,1,0),int3(1,0,0)) == uapprox3(0.f,0.f,-1.f)); + STATIC_CHECK(cross(int3(1,0,0),double3(0,1,0)) == uapprox3(0.0,0.0,1.0)); + STATIC_CHECK(cross(double3(0,1,0),int3(1,0,0)) == uapprox3(0.0,0.0,-1.0)); CHECK(normalize(float2(0.5f,0.f)).x == uapprox(1.f));