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