diff --git a/README.md b/README.md index 98311ec..fb84a16 100644 --- a/README.md +++ b/README.md @@ -88,8 +88,10 @@ public: T x, y; vec_base(); - explicit vec_base(uninit_t); - explicit vec_base(zero_init_t); + + vec_base(uninit_t); + vec_base(zero_init_t); + vec_base(unit_init_t); explicit vec_base(T v); vec_base(T x, T y); @@ -101,11 +103,14 @@ public: T x, y, z; vec_base(); - explicit vec_base(uninit_t); - explicit vec_base(zero_init_t); + + vec_base(uninit_t); + vec_base(zero_init_t); + vec_base(unit_init_t); explicit vec_base(T v); vec_base(T x, T y, T z); + vec_base(const vec_base& xy, T z); vec_base(T x, const vec_base& yz); @@ -118,15 +123,20 @@ public: T x, y, z, w; vec_base(); - explicit vec_base(uninit_t); - explicit vec_base(zero_init_t); + + vec_base(uninit_t); + vec_base(zero_init_t); + vec_base(unit_init_t); explicit vec_base(T v); vec_base(T x, T y, T z, T w); + vec_base(const vec_base& xy, T z, T w); vec_base(T x, const vec_base& yz, T w); + vec_base(T x, T y, const vec_base& zw); vec_base(const vec_base& xy, const vec_base& zw); + vec_base(const vec_base& xyz, T w); vec_base(T x, const vec_base& yzw); @@ -223,9 +233,11 @@ public: row_type rows[2]; mat_base(); - explicit mat_base(uninit_t); - explicit mat_base(zero_init_t); - explicit mat_base(identity_init_t); + + mat_base(uninit_t); + mat_base(zero_init_t); + mat_base(unit_init_t); + mat_base(identity_init_t); explicit mat_base(T d); explicit mat_base(const row_type& d); @@ -246,9 +258,11 @@ public: row_type rows[3]; mat_base(); - explicit mat_base(uninit_t); - explicit mat_base(zero_init_t); - explicit mat_base(identity_init_t); + + mat_base(uninit_t); + mat_base(zero_init_t); + mat_base(unit_init_t); + mat_base(identity_init_t); explicit mat_base(T d); explicit mat_base(const row_type& d); @@ -279,9 +293,11 @@ public: row_type rows[4]; mat_base(); - explicit mat_base(uninit_t); - explicit mat_base(zero_init_t); - explicit mat_base(identity_init_t); + + mat_base(uninit_t); + mat_base(zero_init_t); + mat_base(unit_init_t); + mat_base(identity_init_t); explicit mat_base(T d); explicit mat_base(const row_type& d); @@ -397,9 +413,10 @@ public: T s; qua_base(); - explicit qua_base(uninit_t); - explicit qua_base(zero_init_t); - explicit qua_base(identity_init_t); + + qua_base(uninit_t); + qua_base(zero_init_t); + qua_base(identity_init_t); qua_base(T vx, T vy, T vz, T s); qua_base(const vec& v, T s); @@ -1695,6 +1712,7 @@ template < typename T > inline mat identity2x2; template < typename T > inline mat identity3x3; template < typename T > inline mat identity4x4; +template < typename T > inline qua qzero; template < typename T > inline qua qidentity; ``` diff --git a/headers/vmath.hpp/vmath_ext.hpp b/headers/vmath.hpp/vmath_ext.hpp index 6762382..0e66998 100644 --- a/headers/vmath.hpp/vmath_ext.hpp +++ b/headers/vmath.hpp/vmath_ext.hpp @@ -19,13 +19,13 @@ namespace vmath_hpp { - template < typename T > inline constexpr vec zero2{T{0}, T{0}}; - template < typename T > inline constexpr vec zero3{T{0}, T{0}, T{0}}; - template < typename T > inline constexpr vec zero4{T{0}, T{0}, T{0}, T{0}}; + template < typename T > inline constexpr vec zero2{zero_init}; + template < typename T > inline constexpr vec zero3{zero_init}; + template < typename T > inline constexpr vec zero4{zero_init}; - template < typename T > inline constexpr vec unit2{T{1}, T{1}}; - template < typename T > inline constexpr vec unit3{T{1}, T{1}, T{1}}; - template < typename T > inline constexpr vec unit4{T{1}, T{1}, T{1}, T{1}}; + template < typename T > inline constexpr vec unit2{unit_init}; + template < typename T > inline constexpr vec unit3{unit_init}; + template < typename T > inline constexpr vec unit4{unit_init}; template < typename T > inline constexpr vec unit2_x{T{1}, T{0}}; template < typename T > inline constexpr vec unit2_y{T{0}, T{1}}; @@ -39,52 +39,20 @@ namespace vmath_hpp template < typename T > inline constexpr vec unit4_z{T{0}, T{0}, T{1}, T{0}}; template < typename T > inline constexpr vec unit4_w{T{0}, T{0}, T{0}, T{1}}; - template < typename T > inline constexpr mat zero2x2{ - T{0}, T{0}, - T{0}, T{0}}; + template < typename T > inline constexpr mat zero2x2{zero_init}; + template < typename T > inline constexpr mat zero3x3{zero_init}; + template < typename T > inline constexpr mat zero4x4{zero_init}; - template < typename T > inline constexpr mat zero3x3{ - T{0}, T{0}, T{0}, - T{0}, T{0}, T{0}, - T{0}, T{0}, T{0}}; + template < typename T > inline constexpr mat unit2x2{unit_init}; + template < typename T > inline constexpr mat unit3x3{unit_init}; + template < typename T > inline constexpr mat unit4x4{unit_init}; - template < typename T > inline constexpr mat zero4x4{ - T{0}, T{0}, T{0}, T{0}, - T{0}, T{0}, T{0}, T{0}, - T{0}, T{0}, T{0}, T{0}, - T{0}, T{0}, T{0}, T{0}}; + template < typename T > inline constexpr mat identity2x2{identity_init}; + template < typename T > inline constexpr mat identity3x3{identity_init}; + template < typename T > inline constexpr mat identity4x4{identity_init}; - template < typename T > inline constexpr mat unit2x2{ - T{1}, T{1}, - T{1}, T{1}}; - - template < typename T > inline constexpr mat unit3x3{ - T{1}, T{1}, T{1}, - T{1}, T{1}, T{1}, - T{1}, T{1}, T{1}}; - - template < typename T > inline constexpr mat unit4x4{ - T{1}, T{1}, T{1}, T{1}, - T{1}, T{1}, T{1}, T{1}, - T{1}, T{1}, T{1}, T{1}, - T{1}, T{1}, T{1}, T{1}}; - - template < typename T > inline constexpr mat identity2x2{ - T{1}, T{0}, - T{0}, T{1}}; - - template < typename T > inline constexpr mat identity3x3{ - T{1}, T{0}, T{0}, - T{0}, T{1}, T{0}, - T{0}, T{0}, T{1}}; - - template < typename T > inline constexpr mat identity4x4{ - T{1}, T{0}, T{0}, T{0}, - T{0}, T{1}, T{0}, T{0}, - T{0}, T{0}, T{1}, T{0}, - T{0}, T{0}, T{0}, T{1}}; - - template < typename T > inline constexpr qua qidentity{T{0}, T{0}, T{0}, T{1}}; + template < typename T > inline constexpr qua qzero{zero_init}; + template < typename T > inline constexpr qua qidentity{identity_init}; } // diff --git a/headers/vmath.hpp/vmath_fwd.hpp b/headers/vmath.hpp/vmath_fwd.hpp index 6e80b56..6cde45b 100644 --- a/headers/vmath.hpp/vmath_fwd.hpp +++ b/headers/vmath.hpp/vmath_fwd.hpp @@ -46,6 +46,9 @@ namespace vmath_hpp struct zero_init_t { explicit zero_init_t() = default; }; inline constexpr zero_init_t zero_init{}; + struct unit_init_t { explicit unit_init_t() = default; }; + inline constexpr unit_init_t unit_init{}; + struct identity_init_t { explicit identity_init_t() = default; }; inline constexpr identity_init_t identity_init{}; } diff --git a/headers/vmath.hpp/vmath_mat.hpp b/headers/vmath.hpp/vmath_mat.hpp index 0d8a0b4..c1a008f 100644 --- a/headers/vmath.hpp/vmath_mat.hpp +++ b/headers/vmath.hpp/vmath_mat.hpp @@ -25,17 +25,10 @@ namespace vmath_hpp::detail constexpr mat_base() : mat_base(identity_init) {} - constexpr explicit mat_base(uninit_t) {} - - constexpr explicit mat_base(zero_init_t) - : rows{ - {T{0}, T{0}}, - {T{0}, T{0}}} {} - - constexpr explicit mat_base(identity_init_t) - : rows{ - {T{1}, T{0}}, - {T{0}, T{1}}} {} + constexpr mat_base(uninit_t) {} + constexpr mat_base(zero_init_t) : mat_base{zero_init, zero_init} {} + constexpr mat_base(unit_init_t) : mat_base{unit_init, unit_init} {} + constexpr mat_base(identity_init_t) : mat_base{T{1}} {} constexpr explicit mat_base(T d) : rows{ @@ -69,19 +62,10 @@ namespace vmath_hpp::detail constexpr mat_base() : mat_base(identity_init) {} - constexpr explicit mat_base(uninit_t) {} - - constexpr explicit mat_base(zero_init_t) - : rows{ - {T{0}, T{0}, T{0}}, - {T{0}, T{0}, T{0}}, - {T{0}, T{0}, T{0}}} {} - - constexpr explicit mat_base(identity_init_t) - : rows{ - {T{1}, T{0}, T{0}}, - {T{0}, T{1}, T{0}}, - {T{0}, T{0}, T{1}}} {} + constexpr mat_base(uninit_t) {} + constexpr mat_base(zero_init_t) : mat_base{zero_init, zero_init, zero_init} {} + constexpr mat_base(unit_init_t) : mat_base{unit_init, unit_init, unit_init} {} + constexpr mat_base(identity_init_t) : mat_base{T{1}} {} constexpr explicit mat_base(T d) : rows{ @@ -141,21 +125,10 @@ namespace vmath_hpp::detail constexpr mat_base() : mat_base(identity_init) {} - constexpr explicit mat_base(uninit_t) {} - - constexpr explicit mat_base(zero_init_t) - : rows{ - {T{0}, T{0}, T{0}, T{0}}, - {T{0}, T{0}, T{0}, T{0}}, - {T{0}, T{0}, T{0}, T{0}}, - {T{0}, T{0}, T{0}, T{0}}} {} - - constexpr explicit mat_base(identity_init_t) - : rows{ - {T{1}, T{0}, T{0}, T{0}}, - {T{0}, T{1}, T{0}, T{0}}, - {T{0}, T{0}, T{1}, T{0}}, - {T{0}, T{0}, T{0}, T{1}}} {} + constexpr mat_base(uninit_t) {} + constexpr mat_base(zero_init_t) : mat_base{zero_init, zero_init, zero_init, zero_init} {} + constexpr mat_base(unit_init_t) : mat_base{unit_init, unit_init, unit_init, unit_init} {} + constexpr mat_base(identity_init_t) : mat_base{T{1}} {} constexpr explicit mat_base(T d) : rows{ diff --git a/headers/vmath.hpp/vmath_qua.hpp b/headers/vmath.hpp/vmath_qua.hpp index e74a493..b4e7c7c 100644 --- a/headers/vmath.hpp/vmath_qua.hpp +++ b/headers/vmath.hpp/vmath_qua.hpp @@ -22,13 +22,9 @@ namespace vmath_hpp::detail constexpr qua_base() : qua_base(identity_init) {} - constexpr explicit qua_base(uninit_t) {} - - constexpr explicit qua_base(zero_init_t) - : v{T{0}}, s{0} {} - - constexpr explicit qua_base(identity_init_t) - : v{T{0}}, s{1} {} + constexpr qua_base(uninit_t) {} + constexpr qua_base(zero_init_t) : qua_base{zero_init, T{0}} {} + constexpr qua_base(identity_init_t) : qua_base{zero_init, T{1}} {} constexpr qua_base(T vx, T vy, T vz, T s) : v{vx, vy, vz}, s{s} {} diff --git a/headers/vmath.hpp/vmath_vec.hpp b/headers/vmath.hpp/vmath_vec.hpp index f353a40..1829c66 100644 --- a/headers/vmath.hpp/vmath_vec.hpp +++ b/headers/vmath.hpp/vmath_vec.hpp @@ -19,12 +19,11 @@ namespace vmath_hpp::detail T x, y; public: constexpr vec_base() - : vec_base(zero_init) {} + : vec_base{zero_init} {} - constexpr explicit vec_base(uninit_t) {} - - constexpr explicit vec_base(zero_init_t) - : x{0}, y{0} {} + constexpr vec_base(uninit_t) {} + constexpr vec_base(zero_init_t) : vec_base{T{0}} {} + constexpr vec_base(unit_init_t) : vec_base{T{1}} {} constexpr explicit vec_base(T v) : x{v}, y{v} {} @@ -55,12 +54,11 @@ namespace vmath_hpp::detail T x, y, z; public: constexpr vec_base() - : vec_base(zero_init) {} + : vec_base{zero_init} {} - constexpr explicit vec_base(uninit_t) {} - - constexpr explicit vec_base(zero_init_t) - : x{0}, y{0}, z{0} {} + constexpr vec_base(uninit_t) {} + constexpr vec_base(zero_init_t) : vec_base{T{0}} {} + constexpr vec_base(unit_init_t) : vec_base{T{1}} {} constexpr explicit vec_base(T v) : x{v}, y{v}, z{v} {} @@ -103,12 +101,11 @@ namespace vmath_hpp::detail T x, y, z, w; public: constexpr vec_base() - : vec_base(zero_init) {} + : vec_base{zero_init} {} - constexpr explicit vec_base(uninit_t) {} - - constexpr explicit vec_base(zero_init_t) - : x{0}, y{0}, z{0}, w{0} {} + constexpr vec_base(uninit_t) {} + constexpr vec_base(zero_init_t) : vec_base{T{0}} {} + constexpr vec_base(unit_init_t) : vec_base{T{1}} {} constexpr explicit vec_base(T v) : x{v}, y{v}, z{v}, w{v} {} diff --git a/untests/vmath_ext_tests.cpp b/untests/vmath_ext_tests.cpp index 55b2f58..7a4fcf7 100644 --- a/untests/vmath_ext_tests.cpp +++ b/untests/vmath_ext_tests.cpp @@ -53,7 +53,8 @@ TEST_CASE("vmath/ext/units") { STATIC_CHECK(identity3x3 == int3x3()); STATIC_CHECK(identity4x4 == int4x4()); - STATIC_CHECK(qidentity == qfloat()); + STATIC_CHECK(qzero == qfloat(zero_init)); + STATIC_CHECK(qidentity == qfloat(identity_init)); } TEST_CASE("vmath/ext/hash") { diff --git a/untests/vmath_fix_tests.cpp b/untests/vmath_fix_tests.cpp index 1af899d..7ebcb19 100644 --- a/untests/vmath_fix_tests.cpp +++ b/untests/vmath_fix_tests.cpp @@ -519,12 +519,16 @@ TEST_CASE("vmath/fix_vec") { constexpr fix2i v2{fix(1), fix(2)}; constexpr fix2i v3{fix3i{fix(1), fix(2), fix(3)}}; constexpr fix2i v4{fix4i{fix(1), fix(2), fix(3), fix(4)}}; + constexpr fix2i v5{zero_init}; + constexpr fix2i v6{unit_init}; STATIC_CHECK((v0[0] == fix(0))); STATIC_CHECK((v1[0] == fix(1) && v1[1] == fix(1))); STATIC_CHECK((v2[0] == fix(1) && v2[1] == fix(2))); STATIC_CHECK((v3[0] == fix(1) && v3[1] == fix(2))); STATIC_CHECK((v4[0] == fix(1) && v4[1] == fix(2))); + STATIC_CHECK((v5[0] == fix(0))); + STATIC_CHECK((v6[0] == fix(1))); } SUBCASE("fix3 ctors") { @@ -534,6 +538,8 @@ TEST_CASE("vmath/fix_vec") { constexpr fix3i v3{fix2i{fix(1), fix(2)}, fix(3)}; constexpr fix3i v4{fix(1), fix2i{fix(2), fix(3)}}; constexpr fix3i v5{fix4i{fix(1), fix(2), fix(3), fix(4)}}; + constexpr fix3i v6{zero_init}; + constexpr fix3i v7{unit_init}; STATIC_CHECK((v0[0] == fix(0))); STATIC_CHECK((v1[0] == fix(1) && v1[1] == fix(1) && v1[2] == fix(1))); @@ -541,6 +547,8 @@ TEST_CASE("vmath/fix_vec") { STATIC_CHECK((v3[0] == fix(1) && v3[1] == fix(2) && v3[2] == fix(3))); STATIC_CHECK((v4[0] == fix(1) && v4[1] == fix(2) && v4[2] == fix(3))); STATIC_CHECK((v5[0] == fix(1) && v5[1] == fix(2) && v5[2] == fix(3))); + STATIC_CHECK((v6[0] == fix(0))); + STATIC_CHECK((v7[0] == fix(1))); } SUBCASE("fix4 ctors") { @@ -553,6 +561,8 @@ TEST_CASE("vmath/fix_vec") { constexpr fix4i v6{fix2i{fix(1), fix(2)}, fix2i{fix(3), fix(4)}}; constexpr fix4i v7{fix3i{fix(1), fix(2), fix(3)}, fix(4)}; constexpr fix4i v8{fix(1), fix3i{fix(2), fix(3), fix(4)}}; + constexpr fix3i v9{zero_init}; + constexpr fix3i v10{unit_init}; STATIC_CHECK((v0.at(0) == fix(0))); STATIC_CHECK((v1.at(0) == fix(1) && v1.at(1) == fix(1) && v1.at(2) == fix(1) && v1.at(3) == fix(1))); @@ -563,6 +573,8 @@ TEST_CASE("vmath/fix_vec") { STATIC_CHECK((v6.at(0) == fix(1) && v6.at(1) == fix(2) && v6.at(2) == fix(3) && v6.at(3) == fix(4))); STATIC_CHECK((v7.at(0) == fix(1) && v7.at(1) == fix(2) && v7.at(2) == fix(3) && v7.at(3) == fix(4))); STATIC_CHECK((v8.at(0) == fix(1) && v8.at(1) == fix(2) && v8.at(2) == fix(3) && v8.at(3) == fix(4))); + STATIC_CHECK((v9[0] == fix(0))); + STATIC_CHECK((v10[0] == fix(1))); } SUBCASE("swap") { @@ -673,6 +685,9 @@ TEST_CASE("vmath/fix_mat") { constexpr fix2x2i v4{{fix(1), fix(2)}, {fix(3), fix(4)}}; constexpr fix2x2i v5{fix3x3i{fix(1)}}; constexpr fix2x2i v6{fix4x4i{fix(1)}}; + constexpr fix2x2i v7{zero_init}; + constexpr fix2x2i v8{unit_init}; + constexpr fix2x2i v9{identity_init}; STATIC_CHECK((v0[0] == fix2i(fix(1),fix(0)) && v0[1] == fix2i(fix(0),fix(1)))); STATIC_CHECK((v1[0] == fix2i(fix(2),fix(0)) && v1[1] == fix2i(fix(0),fix(2)))); @@ -681,6 +696,9 @@ TEST_CASE("vmath/fix_mat") { STATIC_CHECK((v4[0] == fix2i(fix(1),fix(2)) && v4[1] == fix2i(fix(3),fix(4)))); STATIC_CHECK((v5[0] == fix2i(fix(1),fix(0)) && v5[1] == fix2i(fix(0),fix(1)))); STATIC_CHECK((v6[0] == fix2i(fix(1),fix(0)) && v6[1] == fix2i(fix(0),fix(1)))); + STATIC_CHECK((v7[0] == fix2i(fix(0),fix(0)) && v7[1] == fix2i(fix(0),fix(0)))); + STATIC_CHECK((v8[0] == fix2i(fix(1),fix(1)) && v8[1] == fix2i(fix(1),fix(1)))); + STATIC_CHECK((v9[0] == fix2i(fix(1),fix(0)) && v9[1] == fix2i(fix(0),fix(1)))); } SUBCASE("fix3x3 ctors") { @@ -692,6 +710,9 @@ TEST_CASE("vmath/fix_mat") { constexpr fix3x3i v5{fix2x2i{fix(1)},fix2i{fix(0)}}; constexpr fix3x3i v6{fix2x2i{fix(1)}}; constexpr fix3x3i v7{fix4x4i{fix(1)}}; + constexpr fix3x3i v8{zero_init}; + constexpr fix3x3i v9{unit_init}; + constexpr fix3x3i v10{identity_init}; STATIC_CHECK((v0[0] == fix3i(fix(1),fix(0),fix(0)) && v0[1] == fix3i(fix(0),fix(1),fix(0)) && v0[2] == fix3i(fix(0),fix(0),fix(1)))); STATIC_CHECK((v1[0] == fix3i(fix(2),fix(0),fix(0)) && v1[1] == fix3i(fix(0),fix(2),fix(0)) && v1[2] == fix3i(fix(0),fix(0),fix(2)))); @@ -701,6 +722,9 @@ TEST_CASE("vmath/fix_mat") { STATIC_CHECK((v5[0] == fix3i(fix(1),fix(0),fix(0)) && v5[1] == fix3i(fix(0),fix(1),fix(0)) && v5[2] == fix3i(fix(0),fix(0),fix(1)))); STATIC_CHECK((v6[0] == fix3i(fix(1),fix(0),fix(0)) && v6[1] == fix3i(fix(0),fix(1),fix(0)) && v6[2] == fix3i(fix(0),fix(0),fix(1)))); STATIC_CHECK((v7[0] == fix3i(fix(1),fix(0),fix(0)) && v7[1] == fix3i(fix(0),fix(1),fix(0)) && v7[2] == fix3i(fix(0),fix(0),fix(1)))); + STATIC_CHECK((v8[0] == fix3i(fix(0),fix(0),fix(0)) && v8[1] == fix3i(fix(0),fix(0),fix(0)) && v8[2] == fix3i(fix(0),fix(0),fix(0)))); + STATIC_CHECK((v9[0] == fix3i(fix(1),fix(1),fix(1)) && v9[1] == fix3i(fix(1),fix(1),fix(1)) && v9[2] == fix3i(fix(1),fix(1),fix(1)))); + STATIC_CHECK((v10[0] == fix3i(fix(1),fix(0),fix(0)) && v10[1] == fix3i(fix(0),fix(1),fix(0)) && v10[2] == fix3i(fix(0),fix(0),fix(1)))); } SUBCASE("fix4x4 ctors") { @@ -712,6 +736,9 @@ TEST_CASE("vmath/fix_mat") { constexpr fix4x4i v5{fix3x3i{fix(1)},fix3i{fix(0)}}; constexpr fix4x4i v6{fix2x2i{fix(1)}}; constexpr fix4x4i v7{fix3x3i{fix(1)}}; + constexpr fix4x4i v8{zero_init}; + constexpr fix4x4i v9{unit_init}; + constexpr fix4x4i v10{identity_init}; STATIC_CHECK((v0[0] == fix4i(fix(1),fix(0),fix(0),fix(0)) && v0[1] == fix4i(fix(0),fix(1),fix(0),fix(0)) && v0[2] == fix4i(fix(0),fix(0),fix(1),fix(0)) && v0[3] == fix4i(fix(0),fix(0),fix(0),fix(1)))); STATIC_CHECK((v1[0] == fix4i(fix(2),fix(0),fix(0),fix(0)) && v1[1] == fix4i(fix(0),fix(2),fix(0),fix(0)) && v1[2] == fix4i(fix(0),fix(0),fix(2),fix(0)) && v1[3] == fix4i(fix(0),fix(0),fix(0),fix(2)))); @@ -721,6 +748,9 @@ TEST_CASE("vmath/fix_mat") { STATIC_CHECK((v5[0] == fix4i(fix(1),fix(0),fix(0),fix(0)) && v5[1] == fix4i(fix(0),fix(1),fix(0),fix(0)) && v5[2] == fix4i(fix(0),fix(0),fix(1),fix(0)) && v5[3] == fix4i(fix(0),fix(0),fix(0),fix(1)))); STATIC_CHECK((v6[0] == fix4i(fix(1),fix(0),fix(0),fix(0)) && v6[1] == fix4i(fix(0),fix(1),fix(0),fix(0)) && v6[2] == fix4i(fix(0),fix(0),fix(1),fix(0)) && v6[3] == fix4i(fix(0),fix(0),fix(0),fix(1)))); STATIC_CHECK((v7[0] == fix4i(fix(1),fix(0),fix(0),fix(0)) && v7[1] == fix4i(fix(0),fix(1),fix(0),fix(0)) && v7[2] == fix4i(fix(0),fix(0),fix(1),fix(0)) && v7[3] == fix4i(fix(0),fix(0),fix(0),fix(1)))); + STATIC_CHECK((v8[0] == fix4i(fix(0),fix(0),fix(0),fix(0)) && v8[1] == fix4i(fix(0),fix(0),fix(0),fix(0)) && v8[2] == fix4i(fix(0),fix(0),fix(0),fix(0)) && v8[3] == fix4i(fix(0),fix(0),fix(0),fix(0)))); + STATIC_CHECK((v9[0] == fix4i(fix(1),fix(1),fix(1),fix(1)) && v9[1] == fix4i(fix(1),fix(1),fix(1),fix(1)) && v9[2] == fix4i(fix(1),fix(1),fix(1),fix(1)) && v9[3] == fix4i(fix(1),fix(1),fix(1),fix(1)))); + STATIC_CHECK((v10[0] == fix4i(fix(1),fix(0),fix(0),fix(0)) && v10[1] == fix4i(fix(0),fix(1),fix(0),fix(0)) && v10[2] == fix4i(fix(0),fix(0),fix(1),fix(0)) && v10[3] == fix4i(fix(0),fix(0),fix(0),fix(1)))); } SUBCASE("swap") { @@ -831,11 +861,15 @@ TEST_CASE("vmath/fix_qua") { constexpr qfix v1{fix(1.f), fix(2.f), fix(3.f), fix(4.f)}; constexpr qfix v2{fix3f{fix(1.f), fix(2.f), fix(3.f)}, fix(4.f)}; constexpr qfix v3{fix4f{fix(1.f), fix(2.f), fix(3.f), fix(4.f)}}; + constexpr qfix v4{zero_init}; + constexpr qfix v5{identity_init}; STATIC_CHECK((v0.at(0) == fix(0.f))); STATIC_CHECK((v1.at(0) == fix(1.f) && v1.at(1) == fix(2.f) && v1.at(2) == fix(3.f) && v1.at(3) == fix(4.f))); STATIC_CHECK((v2.at(0) == fix(1.f) && v2.at(1) == fix(2.f) && v2.at(2) == fix(3.f) && v2.at(3) == fix(4.f))); STATIC_CHECK((v3.at(0) == fix(1.f) && v3.at(1) == fix(2.f) && v3.at(2) == fix(3.f) && v3.at(3) == fix(4.f))); + STATIC_CHECK((v4.at(0) == fix(0.f) && v4.at(1) == fix(0.f) && v4.at(2) == fix(0.f) && v4.at(3) == fix(0.f))); + STATIC_CHECK((v5.at(0) == fix(0.f) && v5.at(1) == fix(0.f) && v5.at(2) == fix(0.f) && v5.at(3) == fix(1.f))); } SUBCASE("swap") { diff --git a/untests/vmath_mat_tests.cpp b/untests/vmath_mat_tests.cpp index a40fd59..d522741 100644 --- a/untests/vmath_mat_tests.cpp +++ b/untests/vmath_mat_tests.cpp @@ -68,6 +68,10 @@ TEST_CASE("vmath/mat") { STATIC_CHECK(int3x3(zero_init) == int3x3({0,0,0},{0,0,0},{0,0,0})); STATIC_CHECK(int4x4(zero_init) == int4x4({0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0})); + STATIC_CHECK(int2x2(unit_init) == int2x2({1,1},{1,1})); + STATIC_CHECK(int3x3(unit_init) == int3x3({1,1,1},{1,1,1},{1,1,1})); + STATIC_CHECK(int4x4(unit_init) == int4x4({1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1})); + STATIC_CHECK(int2x2(identity_init) == int2x2({1,0},{0,1})); STATIC_CHECK(int3x3(identity_init) == int3x3({1,0,0},{0,1,0},{0,0,1})); STATIC_CHECK(int4x4(identity_init) == int4x4({1,0,0,0},{0,1,0,0},{0,0,1,0},{0,0,0,1})); diff --git a/untests/vmath_vec_tests.cpp b/untests/vmath_vec_tests.cpp index 4f41421..47c8647 100644 --- a/untests/vmath_vec_tests.cpp +++ b/untests/vmath_vec_tests.cpp @@ -67,6 +67,10 @@ TEST_CASE("vmath/vec") { STATIC_CHECK(int2(zero_init) == int2(0,0)); STATIC_CHECK(int3(zero_init) == int3(0,0,0)); STATIC_CHECK(int4(zero_init) == int4(0,0,0,0)); + + STATIC_CHECK(int2(unit_init) == int2(1,1)); + STATIC_CHECK(int3(unit_init) == int3(1,1,1)); + STATIC_CHECK(int4(unit_init) == int4(1,1,1,1)); } { STATIC_CHECK(int2().x == 0);