• 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     XX(v1) + XX(v1);
22     -XX(v1);
23     XX(42.0f) + XX(42.0f);
24     -XX(42.0f);
25         {
26         test_qvm::vector<V2,2> v0=X0(42.0f);
27         BOOST_TEST(v0.a[0]==42);
28         BOOST_TEST(v0.a[1]==0);
29         test_qvm::vector<V2,2> v2=_1X(42.0f);
30         BOOST_TEST(v2.a[0]==1);
31         BOOST_TEST(v2.a[1]==42);
32         float s=42.0f;
33         BOOST_TEST(&X(X1(s))==&s);
34         }
35         {
36         test_qvm::vector<V2,2> r;
37         r.a[0]=v1.a[0];
38         r.a[1]=v1.a[0];
39         test_qvm::vector<V2,2> v2=XX(v1);
40         BOOST_QVM_TEST_EQ(v2,r);
41         }
42         {
43         test_qvm::vector<V2,2> r;
44         r.a[0]=v1.a[0];
45         r.a[1]=v1.a[1];
46         test_qvm::vector<V2,2> v2=XY(v1);
47         BOOST_QVM_TEST_EQ(v2,r);
48         }
49         {
50         test_qvm::vector<V2,2> r;
51         r.a[0]=v1.a[0];
52         r.a[1]=v1.a[2];
53         test_qvm::vector<V2,2> v2=XZ(v1);
54         BOOST_QVM_TEST_EQ(v2,r);
55         }
56         {
57         test_qvm::vector<V2,2> r;
58         r.a[0]=v1.a[0];
59         r.a[1]=v1.a[3];
60         test_qvm::vector<V2,2> v2=XW(v1);
61         BOOST_QVM_TEST_EQ(v2,r);
62         }
63         {
64         test_qvm::vector<V2,2> r;
65         r.a[0]=v1.a[0];
66         r.a[1]=0;
67         test_qvm::vector<V2,2> v2=X0(v1);
68         BOOST_QVM_TEST_EQ(v2,r);
69         }
70         {
71         test_qvm::vector<V2,2> r;
72         r.a[0]=v1.a[0];
73         r.a[1]=1;
74         test_qvm::vector<V2,2> v2=X1(v1);
75         BOOST_QVM_TEST_EQ(v2,r);
76         }
77         {
78         test_qvm::vector<V2,2> v2=XY(v1);
79         test_qvm::vector<V3,2> v3;
80         XY(v3)=XY(v2);
81         BOOST_QVM_TEST_EQ(v2,v3);
82         }
83         {
84         test_qvm::vector<V1,2> v=_00();
85         BOOST_TEST(v.a[0]==0);
86         BOOST_TEST(v.a[1]==0);
87         }
88         {
89         test_qvm::vector<V1,2> v=_01();
90         BOOST_TEST(v.a[0]==0);
91         BOOST_TEST(v.a[1]==1);
92         }
93         {
94         test_qvm::vector<V1,2> v=_10();
95         BOOST_TEST(v.a[0]==1);
96         BOOST_TEST(v.a[1]==0);
97         }
98         {
99         test_qvm::vector<V1,2> v=_11();
100         BOOST_TEST(v.a[0]==1);
101         BOOST_TEST(v.a[1]==1);
102         }
103     return boost::report_errors();
104     }
105