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