#include #include #include #include #include #include #include #include #include #include #include static bool test_operators() { glm::mat3x4 l(1.0f); glm::mat3x4 m(1.0f); glm::vec3 u(1.0f); glm::vec4 v(1.0f); float x = 1.0f; glm::vec4 a = m * u; glm::vec3 b = v * m; glm::mat3x4 n = x / m; glm::mat3x4 o = m / x; glm::mat3x4 p = x * m; glm::mat3x4 q = m * x; bool R = m != q; bool S = m == l; return (S && !R) ? 0 : 1; } int test_ctr() { int Error(0); #if(GLM_HAS_INITIALIZER_LISTS) glm::mat3x4 m0( glm::vec4(0, 1, 2, 3), glm::vec4(4, 5, 6, 7), glm::vec4(8, 9, 10, 11)); glm::mat3x4 m1{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}; glm::mat3x4 m2{ {0, 1, 2, 3}, {4, 5, 6, 7}, {8, 9, 10, 11}}; for(glm::length_t i = 0; i < m0.length(); ++i) Error += glm::all(glm::equal(m0[i], m2[i])) ? 0 : 1; for(glm::length_t i = 0; i < m1.length(); ++i) Error += glm::all(glm::equal(m1[i], m2[i])) ? 0 : 1; std::vector v1{ {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11} }; std::vector v2{ { { 0, 1, 2, 3}, { 4, 5, 6, 7}, { 8, 9, 10, 11} }, { { 0, 1, 2, 3}, { 4, 5, 6, 7}, { 8, 9, 10, 11} } }; #endif//GLM_HAS_INITIALIZER_LISTS return Error; } namespace cast { template int entry() { int Error = 0; genType A(1.0f); glm::mat3x4 B(A); glm::mat3x4 Identity(1.0f); for(glm::length_t i = 0, length = B.length(); i < length; ++i) Error += glm::all(glm::equal(B[i], Identity[i])) ? 0 : 1; return Error; } int test() { int Error = 0; Error += entry(); Error += entry(); Error += entry(); Error += entry(); Error += entry(); Error += entry(); Error += entry(); Error += entry(); Error += entry(); return Error; } }//namespace cast int main() { int Error = 0; Error += cast::test(); Error += test_ctr(); Error += test_operators(); return Error; }