1 //Copyright (c) 2008-2016 Emil Dotchevski and Reverge Studios, Inc.
\r
3 //Distributed under the Boost Software License, Version 1.0. (See accompanying
\r
4 //file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
\r
6 #include <boost/qvm/vec_operations.hpp>
\r
7 #include <boost/qvm/vec_access.hpp>
\r
8 #include <boost/qvm/vec.hpp>
\r
9 #include <boost/qvm/swizzle.hpp>
\r
10 #include "test_qvm_vector.hpp"
\r
15 using namespace boost::qvm;
\r
16 test_qvm::vector<V1,4> v1;
\r
21 XXXX(v1) + XXXX(v1);
\r
23 XXXX(42.0f) + XXXX(42.0f);
\r
26 test_qvm::vector<V2,4> v0=X001(42.0f);
\r
27 BOOST_TEST(v0.a[0]==42);
\r
28 BOOST_TEST(v0.a[1]==0);
\r
29 BOOST_TEST(v0.a[2]==0);
\r
30 BOOST_TEST(v0.a[3]==1);
\r
31 test_qvm::vector<V2,4> v2=_100X(42.0f);
\r
32 BOOST_TEST(v2.a[0]==1);
\r
33 BOOST_TEST(v2.a[1]==0);
\r
34 BOOST_TEST(v2.a[2]==0);
\r
35 BOOST_TEST(v2.a[3]==42);
\r
37 BOOST_TEST(&X(X101(s))==&s);
\r
40 test_qvm::vector<V2,4> r;
\r
45 test_qvm::vector<V2,4> v2=XXXX(v1);
\r
46 BOOST_QVM_TEST_EQ(v2,r);
\r
49 test_qvm::vector<V2,4> r;
\r
54 test_qvm::vector<V2,4> v2=XXXY(v1);
\r
55 BOOST_QVM_TEST_EQ(v2,r);
\r
58 test_qvm::vector<V2,4> r;
\r
63 test_qvm::vector<V2,4> v2=XXXZ(v1);
\r
64 BOOST_QVM_TEST_EQ(v2,r);
\r
67 test_qvm::vector<V2,4> r;
\r
72 test_qvm::vector<V2,4> v2=XXXW(v1);
\r
73 BOOST_QVM_TEST_EQ(v2,r);
\r
76 test_qvm::vector<V2,4> r;
\r
81 test_qvm::vector<V2,4> v2=XXX0(v1);
\r
82 BOOST_QVM_TEST_EQ(v2,r);
\r
85 test_qvm::vector<V2,4> r;
\r
90 test_qvm::vector<V2,4> v2=XXX1(v1);
\r
91 BOOST_QVM_TEST_EQ(v2,r);
\r
94 test_qvm::vector<V2,4> v2=XYZW(v1);
\r
97 test_qvm::vector<V2,4> v3=XYZW(v1);
\r
98 BOOST_QVM_TEST_EQ(v2,v3);
\r
101 test_qvm::vector<V2,4> v2=XYZW(v1);
\r
102 test_qvm::vector<V3,4> v3;
\r
104 BOOST_QVM_TEST_EQ(v2,v3);
\r
107 test_qvm::vector<V1,4> v=_0000();
\r
108 BOOST_TEST(v.a[0]==0);
\r
109 BOOST_TEST(v.a[1]==0);
\r
110 BOOST_TEST(v.a[2]==0);
\r
111 BOOST_TEST(v.a[3]==0);
\r
114 test_qvm::vector<V1,4> v=_0001();
\r
115 BOOST_TEST(v.a[0]==0);
\r
116 BOOST_TEST(v.a[1]==0);
\r
117 BOOST_TEST(v.a[2]==0);
\r
118 BOOST_TEST(v.a[3]==1);
\r
121 test_qvm::vector<V1,4> v=_0010();
\r
122 BOOST_TEST(v.a[0]==0);
\r
123 BOOST_TEST(v.a[1]==0);
\r
124 BOOST_TEST(v.a[2]==1);
\r
125 BOOST_TEST(v.a[3]==0);
\r
128 test_qvm::vector<V1,4> v=_0011();
\r
129 BOOST_TEST(v.a[0]==0);
\r
130 BOOST_TEST(v.a[1]==0);
\r
131 BOOST_TEST(v.a[2]==1);
\r
132 BOOST_TEST(v.a[3]==1);
\r
135 test_qvm::vector<V1,4> v=_0100();
\r
136 BOOST_TEST(v.a[0]==0);
\r
137 BOOST_TEST(v.a[1]==1);
\r
138 BOOST_TEST(v.a[2]==0);
\r
139 BOOST_TEST(v.a[3]==0);
\r
142 test_qvm::vector<V1,4> v=_0101();
\r
143 BOOST_TEST(v.a[0]==0);
\r
144 BOOST_TEST(v.a[1]==1);
\r
145 BOOST_TEST(v.a[2]==0);
\r
146 BOOST_TEST(v.a[3]==1);
\r
149 test_qvm::vector<V1,4> v=_0110();
\r
150 BOOST_TEST(v.a[0]==0);
\r
151 BOOST_TEST(v.a[1]==1);
\r
152 BOOST_TEST(v.a[2]==1);
\r
153 BOOST_TEST(v.a[3]==0);
\r
156 test_qvm::vector<V1,4> v=_0111();
\r
157 BOOST_TEST(v.a[0]==0);
\r
158 BOOST_TEST(v.a[1]==1);
\r
159 BOOST_TEST(v.a[2]==1);
\r
160 BOOST_TEST(v.a[3]==1);
\r
163 test_qvm::vector<V1,4> v=_1000();
\r
164 BOOST_TEST(v.a[0]==1);
\r
165 BOOST_TEST(v.a[1]==0);
\r
166 BOOST_TEST(v.a[2]==0);
\r
167 BOOST_TEST(v.a[3]==0);
\r
170 test_qvm::vector<V1,4> v=_1001();
\r
171 BOOST_TEST(v.a[0]==1);
\r
172 BOOST_TEST(v.a[1]==0);
\r
173 BOOST_TEST(v.a[2]==0);
\r
174 BOOST_TEST(v.a[3]==1);
\r
177 test_qvm::vector<V1,4> v=_1010();
\r
178 BOOST_TEST(v.a[0]==1);
\r
179 BOOST_TEST(v.a[1]==0);
\r
180 BOOST_TEST(v.a[2]==1);
\r
181 BOOST_TEST(v.a[3]==0);
\r
184 test_qvm::vector<V1,4> v=_1011();
\r
185 BOOST_TEST(v.a[0]==1);
\r
186 BOOST_TEST(v.a[1]==0);
\r
187 BOOST_TEST(v.a[2]==1);
\r
188 BOOST_TEST(v.a[3]==1);
\r
191 test_qvm::vector<V1,4> v=_1100();
\r
192 BOOST_TEST(v.a[0]==1);
\r
193 BOOST_TEST(v.a[1]==1);
\r
194 BOOST_TEST(v.a[2]==0);
\r
195 BOOST_TEST(v.a[3]==0);
\r
198 test_qvm::vector<V1,4> v=_1101();
\r
199 BOOST_TEST(v.a[0]==1);
\r
200 BOOST_TEST(v.a[1]==1);
\r
201 BOOST_TEST(v.a[2]==0);
\r
202 BOOST_TEST(v.a[3]==1);
\r
205 test_qvm::vector<V1,4> v=_1110();
\r
206 BOOST_TEST(v.a[0]==1);
\r
207 BOOST_TEST(v.a[1]==1);
\r
208 BOOST_TEST(v.a[2]==1);
\r
209 BOOST_TEST(v.a[3]==0);
\r
212 test_qvm::vector<V1,4> v=_1111();
\r
213 BOOST_TEST(v.a[0]==1);
\r
214 BOOST_TEST(v.a[1]==1);
\r
215 BOOST_TEST(v.a[2]==1);
\r
216 BOOST_TEST(v.a[3]==1);
\r
218 return boost::report_errors();
\r