• 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     XXX(v1) + XXX(v1);
22     -XXX(v1);
23     XXX(42.0f) + XXX(42.0f);
24     -XXX(42.0f);
25         {
26         test_qvm::vector<V2,3> v0=X00(42.0f);
27         BOOST_TEST(v0.a[0]==42);
28         BOOST_TEST(v0.a[1]==0);
29         BOOST_TEST(v0.a[2]==0);
30         test_qvm::vector<V2,3> v2=_10X(42.0f);
31         BOOST_TEST(v2.a[0]==1);
32         BOOST_TEST(v2.a[1]==0);
33         BOOST_TEST(v2.a[2]==42);
34         float s=42.0f;
35         BOOST_TEST(&X(X01(s))==&s);
36         }
37         {
38         test_qvm::vector<V2,3> r;
39         r.a[0]=v1.a[0];
40         r.a[1]=v1.a[0];
41         r.a[2]=v1.a[0];
42         test_qvm::vector<V2,3> v2=XXX(v1);
43         BOOST_QVM_TEST_EQ(v2,r);
44         }
45         {
46         test_qvm::vector<V2,3> r;
47         r.a[0]=v1.a[0];
48         r.a[1]=v1.a[0];
49         r.a[2]=v1.a[1];
50         test_qvm::vector<V2,3> v2=XXY(v1);
51         BOOST_QVM_TEST_EQ(v2,r);
52         }
53         {
54         test_qvm::vector<V2,3> r;
55         r.a[0]=v1.a[0];
56         r.a[1]=v1.a[0];
57         r.a[2]=v1.a[2];
58         test_qvm::vector<V2,3> v2=XXZ(v1);
59         BOOST_QVM_TEST_EQ(v2,r);
60         }
61         {
62         test_qvm::vector<V2,3> r;
63         r.a[0]=v1.a[0];
64         r.a[1]=v1.a[0];
65         r.a[2]=v1.a[3];
66         test_qvm::vector<V2,3> v2=XXW(v1);
67         BOOST_QVM_TEST_EQ(v2,r);
68         }
69         {
70         test_qvm::vector<V2,3> r;
71         r.a[0]=v1.a[0];
72         r.a[1]=v1.a[0];
73         r.a[2]=0;
74         test_qvm::vector<V2,3> v2=XX0(v1);
75         BOOST_QVM_TEST_EQ(v2,r);
76         }
77         {
78         test_qvm::vector<V2,3> r;
79         r.a[0]=v1.a[0];
80         r.a[1]=v1.a[0];
81         r.a[2]=1;
82         test_qvm::vector<V2,3> v2=XX1(v1);
83         BOOST_QVM_TEST_EQ(v2,r);
84         }
85         {
86         test_qvm::vector<V2,3> v2=XYZ(v1);
87         XYZ(v1) *= 2;
88         v2 *= 2;
89         test_qvm::vector<V2,3> v3=XYZ(v1);
90         BOOST_QVM_TEST_EQ(v2,v3);
91         }
92         {
93         test_qvm::vector<V2,3> v2=XYZ(v1);
94         test_qvm::vector<V3,3> v3;
95         XYZ(v3)=XYZ(v2);
96         BOOST_QVM_TEST_EQ(v2,v3);
97         }
98         {
99         test_qvm::vector<V1,3> v=_000();
100         BOOST_TEST(v.a[0]==0);
101         BOOST_TEST(v.a[1]==0);
102         BOOST_TEST(v.a[2]==0);
103         }
104         {
105         test_qvm::vector<V1,3> v=_001();
106         BOOST_TEST(v.a[0]==0);
107         BOOST_TEST(v.a[1]==0);
108         BOOST_TEST(v.a[2]==1);
109         }
110         {
111         test_qvm::vector<V1,3> v=_010();
112         BOOST_TEST(v.a[0]==0);
113         BOOST_TEST(v.a[1]==1);
114         BOOST_TEST(v.a[2]==0);
115         }
116         {
117         test_qvm::vector<V1,3> v=_011();
118         BOOST_TEST(v.a[0]==0);
119         BOOST_TEST(v.a[1]==1);
120         BOOST_TEST(v.a[2]==1);
121         }
122         {
123         test_qvm::vector<V1,3> v=_100();
124         BOOST_TEST(v.a[0]==1);
125         BOOST_TEST(v.a[1]==0);
126         BOOST_TEST(v.a[2]==0);
127         }
128         {
129         test_qvm::vector<V1,3> v=_101();
130         BOOST_TEST(v.a[0]==1);
131         BOOST_TEST(v.a[1]==0);
132         BOOST_TEST(v.a[2]==1);
133         }
134         {
135         test_qvm::vector<V1,3> v=_110();
136         BOOST_TEST(v.a[0]==1);
137         BOOST_TEST(v.a[1]==1);
138         BOOST_TEST(v.a[2]==0);
139         }
140         {
141         test_qvm::vector<V1,3> v=_111();
142         BOOST_TEST(v.a[0]==1);
143         BOOST_TEST(v.a[1]==1);
144         BOOST_TEST(v.a[2]==1);
145         }
146     return boost::report_errors();
147     }
148