// Copyright 2008-2024 Emil Dotchevski and Reverge Studios, Inc. // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) #ifdef BOOST_QVM_TEST_SINGLE_HEADER # include BOOST_QVM_TEST_SINGLE_HEADER # ifdef BOOST_QVM_TEST_SINGLE_HEADER_SWIZZLE # include BOOST_QVM_TEST_SINGLE_HEADER_SWIZZLE # endif #else # include # include # include # include # include # include #endif #include "test_qvm_vector.hpp" #include "test_qvm_matrix.hpp" int main() { using namespace boost::qvm; test_qvm::vector v1; v1.a[0]=42.0f; v1.a[1]=43.0f; v1.a[2]=44.0f; v1.a[3]=45.0f; XX(v1) + XX(v1); -XX(v1); XX(42.0f) + XX(42.0f); -XX(42.0f); { test_qvm::vector v0=X0(42.0f); BOOST_TEST_EQ(v0.a[0], 42); BOOST_TEST_EQ(v0.a[1], 0); test_qvm::vector v2=_1X(42.0f); BOOST_TEST_EQ(v2.a[0], 1); BOOST_TEST_EQ(v2.a[1], 42); float s=42.0f; BOOST_TEST_EQ(X(X1(s)), s); } { test_qvm::vector r; r.a[0]=v1.a[0]; r.a[1]=v1.a[0]; test_qvm::vector v2=XX(v1); BOOST_QVM_TEST_EQ(v2,r); } { test_qvm::vector r; r.a[0]=v1.a[0]; r.a[1]=v1.a[1]; test_qvm::vector v2=XY(v1); BOOST_QVM_TEST_EQ(v2,r); } { test_qvm::vector r; r.a[0]=v1.a[0]; r.a[1]=v1.a[2]; test_qvm::vector v2=XZ(v1); BOOST_QVM_TEST_EQ(v2,r); } { test_qvm::vector r; r.a[0]=v1.a[0]; r.a[1]=v1.a[3]; test_qvm::vector v2=XW(v1); BOOST_QVM_TEST_EQ(v2,r); } { test_qvm::vector r; r.a[0]=v1.a[0]; r.a[1]=0; test_qvm::vector v2=X0(v1); BOOST_QVM_TEST_EQ(v2,r); } { test_qvm::vector r; r.a[0]=v1.a[0]; r.a[1]=1; test_qvm::vector v2=X1(v1); BOOST_QVM_TEST_EQ(v2,r); } { test_qvm::vector v2=XY(v1); test_qvm::vector v3; XY(v3)=XY(v2); BOOST_QVM_TEST_EQ(v2,v3); } { test_qvm::vector v=_00(); BOOST_TEST_EQ(v.a[0], 0); BOOST_TEST_EQ(v.a[1], 0); } { test_qvm::vector v=_01(); BOOST_TEST_EQ(v.a[0], 0); BOOST_TEST_EQ(v.a[1], 1); } { test_qvm::vector v=_10(); BOOST_TEST_EQ(v.a[0], 1); BOOST_TEST_EQ(v.a[1], 0); } { test_qvm::vector v=_11(); BOOST_TEST_EQ(v.a[0], 1); BOOST_TEST_EQ(v.a[1], 1); } { test_qvm::matrix v = diag_mat(_0X(1)); BOOST_TEST_EQ(v.a[0][0], 0); BOOST_TEST_EQ(v.a[1][1], 1); } { test_qvm::matrix v = diag_mat(X0(1)); BOOST_TEST_EQ(v.a[0][0], 1); BOOST_TEST_EQ(v.a[1][1], 0); } return boost::report_errors(); }