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