]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
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_operations.hpp> | |
7 | #include <boost/qvm/vec.hpp> | |
8 | #include <boost/qvm/swizzle.hpp> | |
9 | #include "test_qvm_vector.hpp" | |
10 | ||
11 | int | |
12 | main() | |
13 | { | |
14 | using namespace boost::qvm; | |
15 | test_qvm::vector<V1,4> v1; | |
16 | v1.a[0]=42.0f; | |
17 | v1.a[1]=43.0f; | |
18 | v1.a[2]=44.0f; | |
19 | v1.a[3]=45.0f; | |
20 | XXXX(v1) + XXXX(v1); | |
21 | -XXXX(v1); | |
22 | { | |
23 | test_qvm::vector<V2,4> r; | |
24 | r.a[0]=v1.a[0]; | |
25 | r.a[1]=v1.a[0]; | |
26 | r.a[2]=v1.a[0]; | |
27 | r.a[3]=v1.a[0]; | |
28 | test_qvm::vector<V2,4> v2=XXXX(v1); | |
29 | BOOST_QVM_TEST_EQ(v2,r); | |
30 | } | |
31 | { | |
32 | test_qvm::vector<V2,4> r; | |
33 | r.a[0]=v1.a[0]; | |
34 | r.a[1]=v1.a[0]; | |
35 | r.a[2]=v1.a[0]; | |
36 | r.a[3]=v1.a[1]; | |
37 | test_qvm::vector<V2,4> v2=XXXY(v1); | |
38 | BOOST_QVM_TEST_EQ(v2,r); | |
39 | } | |
40 | { | |
41 | test_qvm::vector<V2,4> r; | |
42 | r.a[0]=v1.a[0]; | |
43 | r.a[1]=v1.a[0]; | |
44 | r.a[2]=v1.a[0]; | |
45 | r.a[3]=v1.a[2]; | |
46 | test_qvm::vector<V2,4> v2=XXXZ(v1); | |
47 | BOOST_QVM_TEST_EQ(v2,r); | |
48 | } | |
49 | { | |
50 | test_qvm::vector<V2,4> r; | |
51 | r.a[0]=v1.a[0]; | |
52 | r.a[1]=v1.a[0]; | |
53 | r.a[2]=v1.a[0]; | |
54 | r.a[3]=v1.a[3]; | |
55 | test_qvm::vector<V2,4> v2=XXXW(v1); | |
56 | BOOST_QVM_TEST_EQ(v2,r); | |
57 | } | |
58 | { | |
59 | test_qvm::vector<V2,4> r; | |
60 | r.a[0]=v1.a[0]; | |
61 | r.a[1]=v1.a[0]; | |
62 | r.a[2]=v1.a[0]; | |
63 | r.a[3]=0; | |
64 | test_qvm::vector<V2,4> v2=XXX0(v1); | |
65 | BOOST_QVM_TEST_EQ(v2,r); | |
66 | } | |
67 | { | |
68 | test_qvm::vector<V2,4> r; | |
69 | r.a[0]=v1.a[0]; | |
70 | r.a[1]=v1.a[0]; | |
71 | r.a[2]=v1.a[0]; | |
72 | r.a[3]=1; | |
73 | test_qvm::vector<V2,4> v2=XXX1(v1); | |
74 | BOOST_QVM_TEST_EQ(v2,r); | |
75 | } | |
76 | { | |
77 | test_qvm::vector<V2,4> v2=XYZW(v1); | |
78 | XYZW(v1) *= 2; | |
79 | v2 *= 2; | |
80 | test_qvm::vector<V2,4> v3=XYZW(v1); | |
81 | BOOST_QVM_TEST_EQ(v2,v3); | |
82 | } | |
83 | { | |
84 | test_qvm::vector<V2,4> v2=XYZW(v1); | |
85 | test_qvm::vector<V3,4> v3; | |
86 | XYZW(v3)=XYZW(v2); | |
87 | BOOST_QVM_TEST_EQ(v2,v3); | |
88 | } | |
89 | { | |
90 | test_qvm::vector<V1,4> v=_0000(); | |
91 | BOOST_TEST(v.a[0]==0); | |
92 | BOOST_TEST(v.a[1]==0); | |
93 | BOOST_TEST(v.a[2]==0); | |
94 | BOOST_TEST(v.a[3]==0); | |
95 | } | |
96 | { | |
97 | test_qvm::vector<V1,4> v=_0001(); | |
98 | BOOST_TEST(v.a[0]==0); | |
99 | BOOST_TEST(v.a[1]==0); | |
100 | BOOST_TEST(v.a[2]==0); | |
101 | BOOST_TEST(v.a[3]==1); | |
102 | } | |
103 | { | |
104 | test_qvm::vector<V1,4> v=_0010(); | |
105 | BOOST_TEST(v.a[0]==0); | |
106 | BOOST_TEST(v.a[1]==0); | |
107 | BOOST_TEST(v.a[2]==1); | |
108 | BOOST_TEST(v.a[3]==0); | |
109 | } | |
110 | { | |
111 | test_qvm::vector<V1,4> v=_0011(); | |
112 | BOOST_TEST(v.a[0]==0); | |
113 | BOOST_TEST(v.a[1]==0); | |
114 | BOOST_TEST(v.a[2]==1); | |
115 | BOOST_TEST(v.a[3]==1); | |
116 | } | |
117 | { | |
118 | test_qvm::vector<V1,4> v=_0100(); | |
119 | BOOST_TEST(v.a[0]==0); | |
120 | BOOST_TEST(v.a[1]==1); | |
121 | BOOST_TEST(v.a[2]==0); | |
122 | BOOST_TEST(v.a[3]==0); | |
123 | } | |
124 | { | |
125 | test_qvm::vector<V1,4> v=_0101(); | |
126 | BOOST_TEST(v.a[0]==0); | |
127 | BOOST_TEST(v.a[1]==1); | |
128 | BOOST_TEST(v.a[2]==0); | |
129 | BOOST_TEST(v.a[3]==1); | |
130 | } | |
131 | { | |
132 | test_qvm::vector<V1,4> v=_0110(); | |
133 | BOOST_TEST(v.a[0]==0); | |
134 | BOOST_TEST(v.a[1]==1); | |
135 | BOOST_TEST(v.a[2]==1); | |
136 | BOOST_TEST(v.a[3]==0); | |
137 | } | |
138 | { | |
139 | test_qvm::vector<V1,4> v=_0111(); | |
140 | BOOST_TEST(v.a[0]==0); | |
141 | BOOST_TEST(v.a[1]==1); | |
142 | BOOST_TEST(v.a[2]==1); | |
143 | BOOST_TEST(v.a[3]==1); | |
144 | } | |
145 | { | |
146 | test_qvm::vector<V1,4> v=_1000(); | |
147 | BOOST_TEST(v.a[0]==1); | |
148 | BOOST_TEST(v.a[1]==0); | |
149 | BOOST_TEST(v.a[2]==0); | |
150 | BOOST_TEST(v.a[3]==0); | |
151 | } | |
152 | { | |
153 | test_qvm::vector<V1,4> v=_1001(); | |
154 | BOOST_TEST(v.a[0]==1); | |
155 | BOOST_TEST(v.a[1]==0); | |
156 | BOOST_TEST(v.a[2]==0); | |
157 | BOOST_TEST(v.a[3]==1); | |
158 | } | |
159 | { | |
160 | test_qvm::vector<V1,4> v=_1010(); | |
161 | BOOST_TEST(v.a[0]==1); | |
162 | BOOST_TEST(v.a[1]==0); | |
163 | BOOST_TEST(v.a[2]==1); | |
164 | BOOST_TEST(v.a[3]==0); | |
165 | } | |
166 | { | |
167 | test_qvm::vector<V1,4> v=_1011(); | |
168 | BOOST_TEST(v.a[0]==1); | |
169 | BOOST_TEST(v.a[1]==0); | |
170 | BOOST_TEST(v.a[2]==1); | |
171 | BOOST_TEST(v.a[3]==1); | |
172 | } | |
173 | { | |
174 | test_qvm::vector<V1,4> v=_1100(); | |
175 | BOOST_TEST(v.a[0]==1); | |
176 | BOOST_TEST(v.a[1]==1); | |
177 | BOOST_TEST(v.a[2]==0); | |
178 | BOOST_TEST(v.a[3]==0); | |
179 | } | |
180 | { | |
181 | test_qvm::vector<V1,4> v=_1101(); | |
182 | BOOST_TEST(v.a[0]==1); | |
183 | BOOST_TEST(v.a[1]==1); | |
184 | BOOST_TEST(v.a[2]==0); | |
185 | BOOST_TEST(v.a[3]==1); | |
186 | } | |
187 | { | |
188 | test_qvm::vector<V1,4> v=_1110(); | |
189 | BOOST_TEST(v.a[0]==1); | |
190 | BOOST_TEST(v.a[1]==1); | |
191 | BOOST_TEST(v.a[2]==1); | |
192 | BOOST_TEST(v.a[3]==0); | |
193 | } | |
194 | { | |
195 | test_qvm::vector<V1,4> v=_1111(); | |
196 | BOOST_TEST(v.a[0]==1); | |
197 | BOOST_TEST(v.a[1]==1); | |
198 | BOOST_TEST(v.a[2]==1); | |
199 | BOOST_TEST(v.a[3]==1); | |
200 | } | |
201 | return boost::report_errors(); | |
202 | } |