access_m_test.cpp 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  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/mat_access.hpp>
  5. #include "test_qvm_matrix.hpp"
  6. using namespace boost::qvm;
  7. template <int R,int C>
  8. void
  9. check_idx( test_qvm::matrix<M1,10,10> & m, float & (*f)( test_qvm::matrix<M1,10,10> & ) )
  10. {
  11. BOOST_TEST((&A<R,C>(m)==&m.a[R][C]));
  12. BOOST_TEST((&f(m)==&m.a[R][C]));
  13. }
  14. int
  15. main()
  16. {
  17. test_qvm::matrix<M1,10,10> m;
  18. #define CHECK_A(i,j) check_idx<i,j>(m,A##i##j);
  19. CHECK_A(0,0);
  20. CHECK_A(0,1);
  21. CHECK_A(0,2);
  22. CHECK_A(0,3);
  23. CHECK_A(0,4);
  24. CHECK_A(0,5);
  25. CHECK_A(0,6);
  26. CHECK_A(0,7);
  27. CHECK_A(0,8);
  28. CHECK_A(0,9);
  29. CHECK_A(1,0);
  30. CHECK_A(1,1);
  31. CHECK_A(1,2);
  32. CHECK_A(1,3);
  33. CHECK_A(1,4);
  34. CHECK_A(1,5);
  35. CHECK_A(1,6);
  36. CHECK_A(1,7);
  37. CHECK_A(1,8);
  38. CHECK_A(1,9);
  39. CHECK_A(2,0);
  40. CHECK_A(2,1);
  41. CHECK_A(2,2);
  42. CHECK_A(2,3);
  43. CHECK_A(2,4);
  44. CHECK_A(2,5);
  45. CHECK_A(2,6);
  46. CHECK_A(2,7);
  47. CHECK_A(2,8);
  48. CHECK_A(2,9);
  49. CHECK_A(3,0);
  50. CHECK_A(3,1);
  51. CHECK_A(3,2);
  52. CHECK_A(3,3);
  53. CHECK_A(3,4);
  54. CHECK_A(3,5);
  55. CHECK_A(3,6);
  56. CHECK_A(3,7);
  57. CHECK_A(3,8);
  58. CHECK_A(3,9);
  59. CHECK_A(4,0);
  60. CHECK_A(4,1);
  61. CHECK_A(4,2);
  62. CHECK_A(4,3);
  63. CHECK_A(4,4);
  64. CHECK_A(4,5);
  65. CHECK_A(4,6);
  66. CHECK_A(4,7);
  67. CHECK_A(4,8);
  68. CHECK_A(4,9);
  69. CHECK_A(5,0);
  70. CHECK_A(5,1);
  71. CHECK_A(5,2);
  72. CHECK_A(5,3);
  73. CHECK_A(5,4);
  74. CHECK_A(5,5);
  75. CHECK_A(5,6);
  76. CHECK_A(5,7);
  77. CHECK_A(5,8);
  78. CHECK_A(5,9);
  79. CHECK_A(6,0);
  80. CHECK_A(6,1);
  81. CHECK_A(6,2);
  82. CHECK_A(6,3);
  83. CHECK_A(6,4);
  84. CHECK_A(6,5);
  85. CHECK_A(6,6);
  86. CHECK_A(6,7);
  87. CHECK_A(6,8);
  88. CHECK_A(6,9);
  89. CHECK_A(7,0);
  90. CHECK_A(7,1);
  91. CHECK_A(7,2);
  92. CHECK_A(7,3);
  93. CHECK_A(7,4);
  94. CHECK_A(7,5);
  95. CHECK_A(7,6);
  96. CHECK_A(7,7);
  97. CHECK_A(7,8);
  98. CHECK_A(7,9);
  99. CHECK_A(8,0);
  100. CHECK_A(8,1);
  101. CHECK_A(8,2);
  102. CHECK_A(8,3);
  103. CHECK_A(8,4);
  104. CHECK_A(8,5);
  105. CHECK_A(8,6);
  106. CHECK_A(8,7);
  107. CHECK_A(8,8);
  108. CHECK_A(8,9);
  109. CHECK_A(9,0);
  110. CHECK_A(9,1);
  111. CHECK_A(9,2);
  112. CHECK_A(9,3);
  113. CHECK_A(9,4);
  114. CHECK_A(9,5);
  115. CHECK_A(9,6);
  116. CHECK_A(9,7);
  117. CHECK_A(9,8);
  118. CHECK_A(9,9);
  119. #undef CHECK_A
  120. return boost::report_errors();
  121. }