//Copyright (c) 2008-2016 Emil Dotchevski and Reverge Studios, Inc. //Copyright (c) 2019 agate-pris //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) #include #ifdef BOOST_QVM_TEST_SINGLE_HEADER # include BOOST_QVM_TEST_SINGLE_HEADER #else # include # include #endif #include #include "test_qvm_vector.hpp" #include "gold.hpp" #include namespace { template void test() { using namespace boost::qvm::sfinae; test_qvm::vector const x(42,1); for( int i=0; i!=Dim; ++i ) { { test_qvm::vector y(x); BOOST_TEST(cmp(x,y,std::equal_to())); y.a[i]=0; BOOST_TEST(!cmp(x,y,std::equal_to())); } } } template struct test_scalar { T value_; test_scalar( T value ): value_(value) {} }; //No operator== struct equal_to { template bool operator()( T const & a, U const & b ) { return a.value_==b.value_; } }; template void test2() { typedef test_scalar scalar_a; typedef test_scalar scalar_b; typedef boost::qvm::vec vec_a; typedef boost::qvm::vec vec_b; vec_a const a = { { 42, 94, 96, 72, 95 } }; vec_b const b = { { 42, 94, 96, 72, 95 } }; vec_a const c = { { 21, 47, 48, 36, 47 } }; vec_b const d = { { 21, 47, 48, 36, 47 } }; BOOST_TEST(cmp(a,a,equal_to())); BOOST_TEST(cmp(a,b,equal_to())); BOOST_TEST(cmp(b,a,equal_to())); BOOST_TEST(cmp(b,b,equal_to())); BOOST_TEST(cmp(c,c,equal_to())); BOOST_TEST(cmp(c,d,equal_to())); BOOST_TEST(cmp(d,c,equal_to())); BOOST_TEST(cmp(d,d,equal_to())); BOOST_TEST(!cmp(a,c,equal_to())); BOOST_TEST(!cmp(c,a,equal_to())); BOOST_TEST(!cmp(a,d,equal_to())); BOOST_TEST(!cmp(d,a,equal_to())); BOOST_TEST(!cmp(b,c,equal_to())); BOOST_TEST(!cmp(c,b,equal_to())); BOOST_TEST(!cmp(b,d,equal_to())); BOOST_TEST(!cmp(d,b,equal_to())); } } int main() { test<2>(); test<3>(); test<4>(); test<5>(); test2(); test2(); test2(); test2(); return boost::report_errors(); }