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