1 //Copyright (c) 2008-2016 Emil Dotchevski and Reverge Studios, Inc. 2 3 //Distributed under the Boost Software License, Version 1.0. (See accompanying 4 //file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 5 6 #include <boost/qvm/vec_access.hpp> 7 #include "test_qvm_vector.hpp" 8 9 using namespace boost::qvm; 10 11 template <int I> 12 void 13 check_idx( test_qvm::vector<V1,10> & v, float & (*f)( test_qvm::vector<V1,10> & ) ) 14 { 15 BOOST_TEST((&A<I>(v)==&v.a[I])); 16 BOOST_TEST((&f(v)==&v.a[I])); 17 } 18 19 int main()20main() 21 { 22 test_qvm::vector<V1,10> v; 23 #define CHECK_A(i) check_idx<i>(v,A##i); 24 CHECK_A(0); 25 CHECK_A(1); 26 CHECK_A(2); 27 CHECK_A(3); 28 CHECK_A(4); 29 CHECK_A(5); 30 CHECK_A(6); 31 CHECK_A(7); 32 CHECK_A(8); 33 CHECK_A(9); 34 #undef CHECK_A 35 BOOST_TEST(&A<0>(v)==&X(v)); 36 BOOST_TEST(&A<1>(v)==&Y(v)); 37 BOOST_TEST(&A<2>(v)==&Z(v)); 38 BOOST_TEST(&A<3>(v)==&W(v)); 39 return boost::report_errors(); 40 } 41