1#ifndef LIBSBX_MATH_TESTS_MATRIX4X4_TESTS_HPP_
2#define LIBSBX_MATH_TESTS_MATRIX4X4_TESTS_HPP_
4#include <gtest/gtest.h>
6#include <libsbx/math/matrix4x4.hpp>
8TEST(libsbx_math_matrix4x4, identity) {
9 auto matrix = sbx::math::matrix4x4::identity;
11 EXPECT_FLOAT_EQ(matrix[0][0], 1.0f);
12 EXPECT_FLOAT_EQ(matrix[0][1], 0.0f);
13 EXPECT_FLOAT_EQ(matrix[0][2], 0.0f);
14 EXPECT_FLOAT_EQ(matrix[0][3], 0.0f);
16 EXPECT_FLOAT_EQ(matrix[1][0], 0.0f);
17 EXPECT_FLOAT_EQ(matrix[1][1], 1.0f);
18 EXPECT_FLOAT_EQ(matrix[1][2], 0.0f);
19 EXPECT_FLOAT_EQ(matrix[1][3], 0.0f);
21 EXPECT_FLOAT_EQ(matrix[2][0], 0.0f);
22 EXPECT_FLOAT_EQ(matrix[2][1], 0.0f);
23 EXPECT_FLOAT_EQ(matrix[2][2], 1.0f);
24 EXPECT_FLOAT_EQ(matrix[2][3], 0.0f);
26 EXPECT_FLOAT_EQ(matrix[3][0], 0.0f);
27 EXPECT_FLOAT_EQ(matrix[3][1], 0.0f);
28 EXPECT_FLOAT_EQ(matrix[3][2], 0.0f);
29 EXPECT_FLOAT_EQ(matrix[3][3], 1.0f);
32TEST(libsbx_math_matrix4x4, zero) {
33 auto matrix = sbx::math::matrix4x4::zero;
35 EXPECT_FLOAT_EQ(matrix[0][0], 0.0f);
36 EXPECT_FLOAT_EQ(matrix[0][1], 0.0f);
37 EXPECT_FLOAT_EQ(matrix[0][2], 0.0f);
38 EXPECT_FLOAT_EQ(matrix[0][3], 0.0f);
40 EXPECT_FLOAT_EQ(matrix[1][0], 0.0f);
41 EXPECT_FLOAT_EQ(matrix[1][1], 0.0f);
42 EXPECT_FLOAT_EQ(matrix[1][2], 0.0f);
43 EXPECT_FLOAT_EQ(matrix[1][3], 0.0f);
45 EXPECT_FLOAT_EQ(matrix[2][0], 0.0f);
46 EXPECT_FLOAT_EQ(matrix[2][1], 0.0f);
47 EXPECT_FLOAT_EQ(matrix[2][2], 0.0f);
48 EXPECT_FLOAT_EQ(matrix[2][3], 0.0f);
50 EXPECT_FLOAT_EQ(matrix[3][0], 0.0f);
51 EXPECT_FLOAT_EQ(matrix[3][1], 0.0f);
52 EXPECT_FLOAT_EQ(matrix[3][2], 0.0f);
53 EXPECT_FLOAT_EQ(matrix[3][3], 0.0f);
56TEST(libsbx_math_matrix4x4, default_constructor) {
59 EXPECT_FLOAT_EQ(matrix[0][0], 0.0f);
60 EXPECT_FLOAT_EQ(matrix[0][1], 0.0f);
61 EXPECT_FLOAT_EQ(matrix[0][2], 0.0f);
62 EXPECT_FLOAT_EQ(matrix[0][3], 0.0f);
64 EXPECT_FLOAT_EQ(matrix[1][0], 0.0f);
65 EXPECT_FLOAT_EQ(matrix[1][1], 0.0f);
66 EXPECT_FLOAT_EQ(matrix[1][2], 0.0f);
67 EXPECT_FLOAT_EQ(matrix[1][3], 0.0f);
69 EXPECT_FLOAT_EQ(matrix[2][0], 0.0f);
70 EXPECT_FLOAT_EQ(matrix[2][1], 0.0f);
71 EXPECT_FLOAT_EQ(matrix[2][2], 0.0f);
72 EXPECT_FLOAT_EQ(matrix[2][3], 0.0f);
74 EXPECT_FLOAT_EQ(matrix[3][0], 0.0f);
75 EXPECT_FLOAT_EQ(matrix[3][1], 0.0f);
76 EXPECT_FLOAT_EQ(matrix[3][2], 0.0f);
77 EXPECT_FLOAT_EQ(matrix[3][3], 0.0f);
80TEST(libsbx_math_matrix4x4, copy_constructor) {
90 EXPECT_FLOAT_EQ(copy[0][0], 1.0f);
91 EXPECT_FLOAT_EQ(copy[0][1], 2.0f);
92 EXPECT_FLOAT_EQ(copy[0][2], 3.0f);
93 EXPECT_FLOAT_EQ(copy[0][3], 4.0f);
95 EXPECT_FLOAT_EQ(copy[1][0], 5.0f);
96 EXPECT_FLOAT_EQ(copy[1][1], 6.0f);
97 EXPECT_FLOAT_EQ(copy[1][2], 7.0f);
98 EXPECT_FLOAT_EQ(copy[1][3], 8.0f);
100 EXPECT_FLOAT_EQ(copy[2][0], 9.0f);
101 EXPECT_FLOAT_EQ(copy[2][1], 10.0f);
102 EXPECT_FLOAT_EQ(copy[2][2], 11.0f);
103 EXPECT_FLOAT_EQ(copy[2][3], 12.0f);
105 EXPECT_FLOAT_EQ(copy[3][0], 13.0f);
106 EXPECT_FLOAT_EQ(copy[3][1], 14.0f);
107 EXPECT_FLOAT_EQ(copy[3][2], 15.0f);
108 EXPECT_FLOAT_EQ(copy[3][3], 16.0f);
111TEST(libsbx_math_matrix4x4, move_constructor) {
121 EXPECT_FLOAT_EQ(move[0][0], 1.0f);
122 EXPECT_FLOAT_EQ(move[0][1], 2.0f);
123 EXPECT_FLOAT_EQ(move[0][2], 3.0f);
124 EXPECT_FLOAT_EQ(move[0][3], 4.0f);
126 EXPECT_FLOAT_EQ(move[1][0], 5.0f);
127 EXPECT_FLOAT_EQ(move[1][1], 6.0f);
128 EXPECT_FLOAT_EQ(move[1][2], 7.0f);
129 EXPECT_FLOAT_EQ(move[1][3], 8.0f);
131 EXPECT_FLOAT_EQ(move[2][0], 9.0f);
132 EXPECT_FLOAT_EQ(move[2][1], 10.0f);
133 EXPECT_FLOAT_EQ(move[2][2], 11.0f);
134 EXPECT_FLOAT_EQ(move[2][3], 12.0f);
136 EXPECT_FLOAT_EQ(move[3][0], 13.0f);
137 EXPECT_FLOAT_EQ(move[3][1], 14.0f);
138 EXPECT_FLOAT_EQ(move[3][2], 15.0f);
139 EXPECT_FLOAT_EQ(move[3][3], 16.0f);
142TEST(libsbx_math_matrix4x4, scalar_constructor) {
145 EXPECT_FLOAT_EQ(matrix[0][0], 1.0f);
146 EXPECT_FLOAT_EQ(matrix[0][1], 1.0f);
147 EXPECT_FLOAT_EQ(matrix[0][2], 1.0f);
148 EXPECT_FLOAT_EQ(matrix[0][3], 1.0f);
150 EXPECT_FLOAT_EQ(matrix[1][0], 1.0f);
151 EXPECT_FLOAT_EQ(matrix[1][1], 1.0f);
152 EXPECT_FLOAT_EQ(matrix[1][2], 1.0f);
153 EXPECT_FLOAT_EQ(matrix[1][3], 1.0f);
155 EXPECT_FLOAT_EQ(matrix[2][0], 1.0f);
156 EXPECT_FLOAT_EQ(matrix[2][1], 1.0f);
157 EXPECT_FLOAT_EQ(matrix[2][2], 1.0f);
158 EXPECT_FLOAT_EQ(matrix[2][3], 1.0f);
160 EXPECT_FLOAT_EQ(matrix[3][0], 1.0f);
161 EXPECT_FLOAT_EQ(matrix[3][1], 1.0f);
162 EXPECT_FLOAT_EQ(matrix[3][2], 1.0f);
163 EXPECT_FLOAT_EQ(matrix[3][3], 1.0f);
166TEST(libsbx_math_matrix4x4, copy_assignment) {
176 EXPECT_FLOAT_EQ(copy[0][0], 1.0f);
177 EXPECT_FLOAT_EQ(copy[0][1], 2.0f);
178 EXPECT_FLOAT_EQ(copy[0][2], 3.0f);
179 EXPECT_FLOAT_EQ(copy[0][3], 4.0f);
181 EXPECT_FLOAT_EQ(copy[1][0], 5.0f);
182 EXPECT_FLOAT_EQ(copy[1][1], 6.0f);
183 EXPECT_FLOAT_EQ(copy[1][2], 7.0f);
184 EXPECT_FLOAT_EQ(copy[1][3], 8.0f);
186 EXPECT_FLOAT_EQ(copy[2][0], 9.0f);
187 EXPECT_FLOAT_EQ(copy[2][1], 10.0f);
188 EXPECT_FLOAT_EQ(copy[2][2], 11.0f);
189 EXPECT_FLOAT_EQ(copy[2][3], 12.0f);
191 EXPECT_FLOAT_EQ(copy[3][0], 13.0f);
192 EXPECT_FLOAT_EQ(copy[3][1], 14.0f);
193 EXPECT_FLOAT_EQ(copy[3][2], 15.0f);
194 EXPECT_FLOAT_EQ(copy[3][3], 16.0f);
197TEST(libsbx_math_matrix4x4, move_assignment) {
205 auto move = std::move(matrix);
207 EXPECT_FLOAT_EQ(move[0][0], 1.0f);
208 EXPECT_FLOAT_EQ(move[0][1], 2.0f);
209 EXPECT_FLOAT_EQ(move[0][2], 3.0f);
210 EXPECT_FLOAT_EQ(move[0][3], 4.0f);
212 EXPECT_FLOAT_EQ(move[1][0], 5.0f);
213 EXPECT_FLOAT_EQ(move[1][1], 6.0f);
214 EXPECT_FLOAT_EQ(move[1][2], 7.0f);
215 EXPECT_FLOAT_EQ(move[1][3], 8.0f);
217 EXPECT_FLOAT_EQ(move[2][0], 9.0f);
218 EXPECT_FLOAT_EQ(move[2][1], 10.0f);
219 EXPECT_FLOAT_EQ(move[2][2], 11.0f);
220 EXPECT_FLOAT_EQ(move[2][3], 12.0f);
222 EXPECT_FLOAT_EQ(move[3][0], 13.0f);
223 EXPECT_FLOAT_EQ(move[3][1], 14.0f);
224 EXPECT_FLOAT_EQ(move[3][2], 15.0f);
225 EXPECT_FLOAT_EQ(move[3][3], 16.0f);
228TEST(libsbx_math_matrix4x4, transposed) {
236 auto result = sbx::math::matrix4x4::transposed(matrix);
238 EXPECT_FLOAT_EQ(result[0][0], 1.0f);
239 EXPECT_FLOAT_EQ(result[0][1], 5.0f);
240 EXPECT_FLOAT_EQ(result[0][2], 9.0f);
241 EXPECT_FLOAT_EQ(result[0][3], 13.0f);
243 EXPECT_FLOAT_EQ(result[1][0], 2.0f);
244 EXPECT_FLOAT_EQ(result[1][1], 6.0f);
245 EXPECT_FLOAT_EQ(result[1][2], 10.0f);
246 EXPECT_FLOAT_EQ(result[1][3], 14.0f);
248 EXPECT_FLOAT_EQ(result[2][0], 3.0f);
249 EXPECT_FLOAT_EQ(result[2][1], 7.0f);
250 EXPECT_FLOAT_EQ(result[2][2], 11.0f);
251 EXPECT_FLOAT_EQ(result[2][3], 15.0f);
253 EXPECT_FLOAT_EQ(result[3][0], 4.0f);
254 EXPECT_FLOAT_EQ(result[3][1], 8.0f);
255 EXPECT_FLOAT_EQ(result[3][2], 12.0f);
256 EXPECT_FLOAT_EQ(result[3][3], 16.0f);
259TEST(libsbx_math_matrix4x4, translated) {
267 auto result = sbx::math::matrix4x4::translated(matrix,
sbx::math::vector3{1.0f, 2.0f, 3.0f});
269 EXPECT_FLOAT_EQ(result[0][0], 1.0f);
270 EXPECT_FLOAT_EQ(result[0][1], 2.0f);
271 EXPECT_FLOAT_EQ(result[0][2], 3.0f);
272 EXPECT_FLOAT_EQ(result[0][3], 4.0f);
274 EXPECT_FLOAT_EQ(result[1][0], 5.0f);
275 EXPECT_FLOAT_EQ(result[1][1], 6.0f);
276 EXPECT_FLOAT_EQ(result[1][2], 7.0f);
277 EXPECT_FLOAT_EQ(result[1][3], 8.0f);
279 EXPECT_FLOAT_EQ(result[2][0], 9.0f);
280 EXPECT_FLOAT_EQ(result[2][1], 10.0f);
281 EXPECT_FLOAT_EQ(result[2][2], 11.0f);
282 EXPECT_FLOAT_EQ(result[2][3], 12.0f);
284 EXPECT_FLOAT_EQ(result[3][0], 51.0f);
285 EXPECT_FLOAT_EQ(result[3][1], 58.0f);
286 EXPECT_FLOAT_EQ(result[3][2], 65.0f);
287 EXPECT_FLOAT_EQ(result[3][3], 72.0f);
Definition: matrix4x4.hpp:24
Definition: vector3.hpp:22