access_v_test.cpp 952 B

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