Skip to content

Commit 57e7fe9

Browse files
committed
Added tests for Vector basetype conversion
1 parent b153186 commit 57e7fe9

File tree

4 files changed

+285
-1
lines changed

4 files changed

+285
-1
lines changed

test/modm/math/geometry/vector4_test.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -356,7 +356,7 @@ Vector4Test::testOperators()
356356
TEST_ASSERT_EQUALS(a.x, 1-4);
357357
TEST_ASSERT_EQUALS(a.y, 2-5);
358358
TEST_ASSERT_EQUALS(a.z, 3-6);
359-
TEST_ASSERT_EQUALS(a.z, 4-7);
359+
TEST_ASSERT_EQUALS(a.w, 4-7);
360360
a -= b;
361361
TEST_ASSERT_EQUALS(a.x, 1);
362362
TEST_ASSERT_EQUALS(a.y, 2);
Lines changed: 223 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,223 @@
1+
/*
2+
* Copyright (c) 2011, Fabian Greif
3+
* Copyright (c) 2011-2012, Niklas Hauser
4+
*
5+
* This file is part of the modm project.
6+
*
7+
* This Source Code Form is subject to the terms of the Mozilla Public
8+
* License, v. 2.0. If a copy of the MPL was not distributed with this
9+
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
10+
*/
11+
// ----------------------------------------------------------------------------
12+
13+
#include <modm/math/geometry/vector.hpp>
14+
#include "vector5_test.hpp"
15+
16+
void
17+
Vector5Test::testConstructor()
18+
{
19+
int16_t array[5] = {1, 2, 3, 4, 5};
20+
21+
modm::Vector<int16_t, 5> a;
22+
TEST_ASSERT_EQUALS(a[0], 0);
23+
TEST_ASSERT_EQUALS(a[1], 0);
24+
TEST_ASSERT_EQUALS(a[2], 0);
25+
TEST_ASSERT_EQUALS(a[3], 0);
26+
TEST_ASSERT_EQUALS(a[4], 0);
27+
28+
modm::Vector<int16_t, 5> b(array);
29+
TEST_ASSERT_EQUALS(b[0], 1);
30+
TEST_ASSERT_EQUALS(b[1], 2);
31+
TEST_ASSERT_EQUALS(b[2], 3);
32+
TEST_ASSERT_EQUALS(b[3], 4);
33+
TEST_ASSERT_EQUALS(b[4], 5);
34+
35+
modm::Vector<int16_t, 5> c(7);
36+
TEST_ASSERT_EQUALS(c[0], 7);
37+
TEST_ASSERT_EQUALS(c[1], 7);
38+
TEST_ASSERT_EQUALS(c[2], 7);
39+
TEST_ASSERT_EQUALS(c[3], 7);
40+
TEST_ASSERT_EQUALS(c[4], 7);
41+
42+
modm::Vector<int16_t, 5> d(3.6);
43+
TEST_ASSERT_EQUALS(d[0], 4);
44+
TEST_ASSERT_EQUALS(d[1], 4);
45+
TEST_ASSERT_EQUALS(d[2], 4);
46+
TEST_ASSERT_EQUALS(d[3], 4);
47+
TEST_ASSERT_EQUALS(d[4], 4);
48+
}
49+
50+
// void
51+
// Vector5Test::testAssign()
52+
// {
53+
// modm::Vector4i a(1,2,3,4);
54+
55+
// int16_t array[4] = {5,6,7,8};
56+
// modm::Matrix<int16_t, 4, 1> m(array);
57+
58+
// modm::Vector4i b;
59+
60+
// b = a;
61+
// TEST_ASSERT_EQUALS(b.x, 1);
62+
// TEST_ASSERT_EQUALS(b.y, 2);
63+
// TEST_ASSERT_EQUALS(b.z, 3);
64+
// TEST_ASSERT_EQUALS(b.w, 4);
65+
66+
// b = m;
67+
// TEST_ASSERT_EQUALS(b.x, 5);
68+
// TEST_ASSERT_EQUALS(b.y, 6);
69+
// TEST_ASSERT_EQUALS(b.z, 7);
70+
// TEST_ASSERT_EQUALS(b.w, 8);
71+
// }
72+
73+
// void
74+
// Vector5Test::testCompare()
75+
// {
76+
// modm::Vector4i a(4,5,2,1);
77+
// modm::Vector4i b(4,5,2,3);
78+
// modm::Vector4i c(4,5,2,3);
79+
// // ==
80+
// TEST_ASSERT_TRUE(b == c);
81+
// TEST_ASSERT_FALSE(a == c);
82+
// // !=
83+
// TEST_ASSERT_TRUE(a != c);
84+
// TEST_ASSERT_FALSE(b != c);
85+
// // <
86+
// TEST_ASSERT_TRUE(a < c);
87+
// TEST_ASSERT_FALSE(b < c);
88+
// TEST_ASSERT_FALSE(c < a);
89+
// // <=
90+
// TEST_ASSERT_TRUE(a <= c);
91+
// TEST_ASSERT_TRUE(b <= c);
92+
// TEST_ASSERT_FALSE(c <= a);
93+
// // >
94+
// TEST_ASSERT_TRUE(c > a);
95+
// TEST_ASSERT_FALSE(b > c);
96+
// TEST_ASSERT_FALSE(a > c);
97+
// // >=
98+
// TEST_ASSERT_TRUE(c >= a);
99+
// TEST_ASSERT_TRUE(b >= c);
100+
// TEST_ASSERT_FALSE(a >= c);
101+
// }
102+
103+
// void
104+
// Vector5Test::testRawDataAccess()
105+
// {
106+
// modm::Vector4i a(0,1,2,3);
107+
// int16_t *pointer = a.ptr();
108+
109+
// TEST_ASSERT_EQUALS(a[0], 0);
110+
// TEST_ASSERT_EQUALS(a[1], 1);
111+
// TEST_ASSERT_EQUALS(a[2], 2);
112+
// TEST_ASSERT_EQUALS(a[3], 3);
113+
// TEST_ASSERT_EQUALS(pointer[0], 0);
114+
// TEST_ASSERT_EQUALS(pointer[1], 1);
115+
// TEST_ASSERT_EQUALS(pointer[2], 2);
116+
// TEST_ASSERT_EQUALS(pointer[3], 3);
117+
// }
118+
119+
void
120+
Vector5Test::testOperators()
121+
{
122+
modm::Vector<int16_t, 5> a({1, 2, 3, 4, 5});
123+
modm::Vector<int16_t, 5> b({4, 5, 6, 7, 8});
124+
125+
TEST_ASSERT_EQUALS((a + b)[0], 1+4);
126+
TEST_ASSERT_EQUALS((a + b)[1], 2+5);
127+
TEST_ASSERT_EQUALS((a + b)[2], 3+6);
128+
TEST_ASSERT_EQUALS((a + b)[3], 4+7);
129+
TEST_ASSERT_EQUALS((a + b)[4], 5+8);
130+
131+
TEST_ASSERT_EQUALS((a - b)[0], 1-4);
132+
TEST_ASSERT_EQUALS((a - b)[1], 2-5);
133+
TEST_ASSERT_EQUALS((a - b)[2], 3-6);
134+
TEST_ASSERT_EQUALS((a - b)[3], 4-7);
135+
TEST_ASSERT_EQUALS((a - b)[4], 5-8);
136+
137+
TEST_ASSERT_EQUALS((a * b), 1*4+2*5+3*6+4*7+5*8);
138+
139+
TEST_ASSERT_EQUALS((a * 3)[0], 1*3);
140+
TEST_ASSERT_EQUALS((a * 3)[1], 2*3);
141+
TEST_ASSERT_EQUALS((a * 3)[2], 3*3);
142+
TEST_ASSERT_EQUALS((a * 3)[3], 4*3);
143+
TEST_ASSERT_EQUALS((a * 3)[4], 5*3);
144+
145+
// TODO
146+
// TEST_ASSERT_EQUALS((3 * a)[0], 3*1);
147+
// TEST_ASSERT_EQUALS((3 * a)[1], 3*2);
148+
// TEST_ASSERT_EQUALS((3 * a)[2], 3*3);
149+
// TEST_ASSERT_EQUALS((3 * a)[3], 3*4);
150+
// TEST_ASSERT_EQUALS((3 * a)[4], 3*5);
151+
152+
TEST_ASSERT_EQUALS((b / 2)[0], 4/2);
153+
TEST_ASSERT_EQUALS((b / 2)[1], 5/2);
154+
TEST_ASSERT_EQUALS((b / 2)[2], 6/2);
155+
TEST_ASSERT_EQUALS((b / 2)[3], 7/2);
156+
TEST_ASSERT_EQUALS((b / 2)[4], 8/2);
157+
158+
-b;
159+
TEST_ASSERT_EQUALS(b[0], 4);
160+
TEST_ASSERT_EQUALS(b[1], 5);
161+
TEST_ASSERT_EQUALS(b[2], 6);
162+
TEST_ASSERT_EQUALS(b[3], 7);
163+
TEST_ASSERT_EQUALS(b[4], 8);
164+
b = -b;
165+
TEST_ASSERT_EQUALS(b[0], -4);
166+
TEST_ASSERT_EQUALS(b[1], -5);
167+
TEST_ASSERT_EQUALS(b[2], -6);
168+
TEST_ASSERT_EQUALS(b[3], -7);
169+
TEST_ASSERT_EQUALS(b[4], -8);
170+
a += b;
171+
TEST_ASSERT_EQUALS(a[0], 1-4);
172+
TEST_ASSERT_EQUALS(a[1], 2-5);
173+
TEST_ASSERT_EQUALS(a[2], 3-6);
174+
TEST_ASSERT_EQUALS(a[3], 4-7);
175+
TEST_ASSERT_EQUALS(a[4], 5-8);
176+
a -= b;
177+
TEST_ASSERT_EQUALS(a[0], 1);
178+
TEST_ASSERT_EQUALS(a[1], 2);
179+
TEST_ASSERT_EQUALS(a[2], 3);
180+
TEST_ASSERT_EQUALS(a[3], 4);
181+
TEST_ASSERT_EQUALS(a[4], 5);
182+
a *= 2;
183+
TEST_ASSERT_EQUALS(a[0], 1*2);
184+
TEST_ASSERT_EQUALS(a[1], 2*2);
185+
TEST_ASSERT_EQUALS(a[2], 3*2);
186+
TEST_ASSERT_EQUALS(a[3], 4*2);
187+
TEST_ASSERT_EQUALS(a[4], 5*2);
188+
b /= 2;
189+
TEST_ASSERT_EQUALS(b[0], -4/2);
190+
TEST_ASSERT_EQUALS(b[1], -5/2);
191+
TEST_ASSERT_EQUALS(b[2], -6/2);
192+
TEST_ASSERT_EQUALS(b[3], -7/2);
193+
TEST_ASSERT_EQUALS(b[4], -8/2);
194+
}
195+
196+
void
197+
Vector5Test::testLength()
198+
{
199+
modm::Vector<float, 5> a({1.f,2.f,3.f,4.f,5.f});
200+
201+
TEST_ASSERT_EQUALS_FLOAT(a.getLengthSquared(), 1.f*1.f+2.f*2.f+3.f*3.f+4.f*4.f+5.f*5.f);
202+
// TEST_ASSERT_EQUALS_FLOAT(a.getLength(), 5.477225575);
203+
204+
// TEST_ASSERT_EQUALS_FLOAT(a.scaled(2.f).x, 0.3651483717);
205+
// TEST_ASSERT_EQUALS_FLOAT(a.scaled(2.f).y, 0.7302967433);
206+
// TEST_ASSERT_EQUALS_FLOAT(a.scaled(2.f).z, 1.095445115);
207+
// TEST_ASSERT_EQUALS_FLOAT(a.scaled(2.f).w, 1.4605934867);
208+
// a.scale(2.f);
209+
// TEST_ASSERT_EQUALS_FLOAT(a.x, 0.3651483717);
210+
// TEST_ASSERT_EQUALS_FLOAT(a.y, 0.7302967433);
211+
// TEST_ASSERT_EQUALS_FLOAT(a.z, 1.095445115);
212+
// TEST_ASSERT_EQUALS_FLOAT(a.w, 1.4605934867);
213+
214+
// TEST_ASSERT_EQUALS_FLOAT(a.normalized().x, 0.1825741858);
215+
// TEST_ASSERT_EQUALS_FLOAT(a.normalized().y, 0.3651483717);
216+
// TEST_ASSERT_EQUALS_FLOAT(a.normalized().z, 0.5477225575);
217+
// TEST_ASSERT_EQUALS_FLOAT(a.normalized().w, 0.7302967433);
218+
// a.normalize();
219+
// TEST_ASSERT_EQUALS_FLOAT(a.x, 0.1825741858);
220+
// TEST_ASSERT_EQUALS_FLOAT(a.y, 0.3651483717);
221+
// TEST_ASSERT_EQUALS_FLOAT(a.z, 0.5477225575);
222+
// TEST_ASSERT_EQUALS_FLOAT(a.w, 0.7302967433);
223+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/*
2+
* Copyright (c) 2022, Thomas Sommer
3+
*
4+
* This file is part of the modm project.
5+
*
6+
* This Source Code Form is subject to the terms of the Mozilla Public
7+
* License, v. 2.0. If a copy of the MPL was not distributed with this
8+
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
9+
*/
10+
// ----------------------------------------------------------------------------
11+
12+
#include <unittest/testsuite.hpp>
13+
14+
/// @ingroup modm_test_test_math
15+
class Vector5Test : public unittest::TestSuite
16+
{
17+
public:
18+
void
19+
testConstructor();
20+
21+
// void
22+
// testAssign();
23+
24+
// void
25+
// testCompare();
26+
27+
// void
28+
// testRawDataAccess();
29+
30+
void
31+
testOperators();
32+
33+
void
34+
testLength();
35+
};

test/modm/math/geometry/vector_test.cpp

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,3 +193,29 @@ VectorTest::testLength()
193193
TEST_ASSERT_EQUALS_FLOAT(a.getLengthSquared(), 1.f*1.f + 2.f*2.f + 3.f*3.f + 4.f*4.f);
194194
TEST_ASSERT_EQUALS_FLOAT(a.getLength(), 5.477225575);
195195
}
196+
197+
void VectorTest::testConvert()
198+
{
199+
modm::Vector<float, 2> f(1.3, 2.7);
200+
modm::Vector<double, 2> d(1.3, 2.7);
201+
202+
modm::Vector<uint8_t, 2> u8(1.3, 2.7);
203+
TEST_ASSERT_EQUALS(u8.x, 1);
204+
TEST_ASSERT_EQUALS(u8.y, 3);
205+
206+
modm::Vector<int8_t, 2> i8(1.3, 2.7);
207+
TEST_ASSERT_EQUALS(i8.x, 1);
208+
TEST_ASSERT_EQUALS(i8.y, 3);
209+
210+
modm::Vector<uint16_t, 2> u16(1.3, 2.7);
211+
TEST_ASSERT_EQUALS(u16.x, 1);
212+
TEST_ASSERT_EQUALS(u16.y, 3);
213+
214+
modm::Vector<int16_t, 2> i16(1.3, 2.7);
215+
TEST_ASSERT_EQUALS(i16.x, 1);
216+
TEST_ASSERT_EQUALS(i16.y, 3);
217+
218+
modm::Vector<double, 2> d2 = f.convert<double>();
219+
220+
modm::Vector<float, 2> f2 = f.convert<float>();
221+
}

0 commit comments

Comments
 (0)