2#ifndef LIBSBX_MATH_TESTS_MATRIX4X4_TESTS_HPP_
3#define LIBSBX_MATH_TESTS_MATRIX4X4_TESTS_HPP_
5#include <gtest/gtest.h>
7#include <libsbx/math/matrix4x4.hpp>
9TEST(libsbx_math_matrix4x4, identity) {
10 auto matrix = sbx::math::matrix4x4::identity;
12 EXPECT_FLOAT_EQ(matrix[0][0], 1.0f);
13 EXPECT_FLOAT_EQ(matrix[0][1], 0.0f);
14 EXPECT_FLOAT_EQ(matrix[0][2], 0.0f);
15 EXPECT_FLOAT_EQ(matrix[0][3], 0.0f);
17 EXPECT_FLOAT_EQ(matrix[1][0], 0.0f);
18 EXPECT_FLOAT_EQ(matrix[1][1], 1.0f);
19 EXPECT_FLOAT_EQ(matrix[1][2], 0.0f);
20 EXPECT_FLOAT_EQ(matrix[1][3], 0.0f);
22 EXPECT_FLOAT_EQ(matrix[2][0], 0.0f);
23 EXPECT_FLOAT_EQ(matrix[2][1], 0.0f);
24 EXPECT_FLOAT_EQ(matrix[2][2], 1.0f);
25 EXPECT_FLOAT_EQ(matrix[2][3], 0.0f);
27 EXPECT_FLOAT_EQ(matrix[3][0], 0.0f);
28 EXPECT_FLOAT_EQ(matrix[3][1], 0.0f);
29 EXPECT_FLOAT_EQ(matrix[3][2], 0.0f);
30 EXPECT_FLOAT_EQ(matrix[3][3], 1.0f);
33TEST(libsbx_math_matrix4x4, zero) {
34 auto matrix = sbx::math::matrix4x4::zero;
36 EXPECT_FLOAT_EQ(matrix[0][0], 0.0f);
37 EXPECT_FLOAT_EQ(matrix[0][1], 0.0f);
38 EXPECT_FLOAT_EQ(matrix[0][2], 0.0f);
39 EXPECT_FLOAT_EQ(matrix[0][3], 0.0f);
41 EXPECT_FLOAT_EQ(matrix[1][0], 0.0f);
42 EXPECT_FLOAT_EQ(matrix[1][1], 0.0f);
43 EXPECT_FLOAT_EQ(matrix[1][2], 0.0f);
44 EXPECT_FLOAT_EQ(matrix[1][3], 0.0f);
46 EXPECT_FLOAT_EQ(matrix[2][0], 0.0f);
47 EXPECT_FLOAT_EQ(matrix[2][1], 0.0f);
48 EXPECT_FLOAT_EQ(matrix[2][2], 0.0f);
49 EXPECT_FLOAT_EQ(matrix[2][3], 0.0f);
51 EXPECT_FLOAT_EQ(matrix[3][0], 0.0f);
52 EXPECT_FLOAT_EQ(matrix[3][1], 0.0f);
53 EXPECT_FLOAT_EQ(matrix[3][2], 0.0f);
54 EXPECT_FLOAT_EQ(matrix[3][3], 0.0f);
57TEST(libsbx_math_matrix4x4, default_constructor) {
60 EXPECT_FLOAT_EQ(matrix[0][0], 0.0f);
61 EXPECT_FLOAT_EQ(matrix[0][1], 0.0f);
62 EXPECT_FLOAT_EQ(matrix[0][2], 0.0f);
63 EXPECT_FLOAT_EQ(matrix[0][3], 0.0f);
65 EXPECT_FLOAT_EQ(matrix[1][0], 0.0f);
66 EXPECT_FLOAT_EQ(matrix[1][1], 0.0f);
67 EXPECT_FLOAT_EQ(matrix[1][2], 0.0f);
68 EXPECT_FLOAT_EQ(matrix[1][3], 0.0f);
70 EXPECT_FLOAT_EQ(matrix[2][0], 0.0f);
71 EXPECT_FLOAT_EQ(matrix[2][1], 0.0f);
72 EXPECT_FLOAT_EQ(matrix[2][2], 0.0f);
73 EXPECT_FLOAT_EQ(matrix[2][3], 0.0f);
75 EXPECT_FLOAT_EQ(matrix[3][0], 0.0f);
76 EXPECT_FLOAT_EQ(matrix[3][1], 0.0f);
77 EXPECT_FLOAT_EQ(matrix[3][2], 0.0f);
78 EXPECT_FLOAT_EQ(matrix[3][3], 0.0f);
81TEST(libsbx_math_matrix4x4, copy_constructor) {
91 EXPECT_FLOAT_EQ(copy[0][0], 1.0f);
92 EXPECT_FLOAT_EQ(copy[0][1], 2.0f);
93 EXPECT_FLOAT_EQ(copy[0][2], 3.0f);
94 EXPECT_FLOAT_EQ(copy[0][3], 4.0f);
96 EXPECT_FLOAT_EQ(copy[1][0], 5.0f);
97 EXPECT_FLOAT_EQ(copy[1][1], 6.0f);
98 EXPECT_FLOAT_EQ(copy[1][2], 7.0f);
99 EXPECT_FLOAT_EQ(copy[1][3], 8.0f);
101 EXPECT_FLOAT_EQ(copy[2][0], 9.0f);
102 EXPECT_FLOAT_EQ(copy[2][1], 10.0f);
103 EXPECT_FLOAT_EQ(copy[2][2], 11.0f);
104 EXPECT_FLOAT_EQ(copy[2][3], 12.0f);
106 EXPECT_FLOAT_EQ(copy[3][0], 13.0f);
107 EXPECT_FLOAT_EQ(copy[3][1], 14.0f);
108 EXPECT_FLOAT_EQ(copy[3][2], 15.0f);
109 EXPECT_FLOAT_EQ(copy[3][3], 16.0f);
112TEST(libsbx_math_matrix4x4, move_constructor) {
122 EXPECT_FLOAT_EQ(move[0][0], 1.0f);
123 EXPECT_FLOAT_EQ(move[0][1], 2.0f);
124 EXPECT_FLOAT_EQ(move[0][2], 3.0f);
125 EXPECT_FLOAT_EQ(move[0][3], 4.0f);
127 EXPECT_FLOAT_EQ(move[1][0], 5.0f);
128 EXPECT_FLOAT_EQ(move[1][1], 6.0f);
129 EXPECT_FLOAT_EQ(move[1][2], 7.0f);
130 EXPECT_FLOAT_EQ(move[1][3], 8.0f);
132 EXPECT_FLOAT_EQ(move[2][0], 9.0f);
133 EXPECT_FLOAT_EQ(move[2][1], 10.0f);
134 EXPECT_FLOAT_EQ(move[2][2], 11.0f);
135 EXPECT_FLOAT_EQ(move[2][3], 12.0f);
137 EXPECT_FLOAT_EQ(move[3][0], 13.0f);
138 EXPECT_FLOAT_EQ(move[3][1], 14.0f);
139 EXPECT_FLOAT_EQ(move[3][2], 15.0f);
140 EXPECT_FLOAT_EQ(move[3][3], 16.0f);
143TEST(libsbx_math_matrix4x4, scalar_constructor) {
146 EXPECT_FLOAT_EQ(matrix[0][0], 1.0f);
147 EXPECT_FLOAT_EQ(matrix[0][1], 1.0f);
148 EXPECT_FLOAT_EQ(matrix[0][2], 1.0f);
149 EXPECT_FLOAT_EQ(matrix[0][3], 1.0f);
151 EXPECT_FLOAT_EQ(matrix[1][0], 1.0f);
152 EXPECT_FLOAT_EQ(matrix[1][1], 1.0f);
153 EXPECT_FLOAT_EQ(matrix[1][2], 1.0f);
154 EXPECT_FLOAT_EQ(matrix[1][3], 1.0f);
156 EXPECT_FLOAT_EQ(matrix[2][0], 1.0f);
157 EXPECT_FLOAT_EQ(matrix[2][1], 1.0f);
158 EXPECT_FLOAT_EQ(matrix[2][2], 1.0f);
159 EXPECT_FLOAT_EQ(matrix[2][3], 1.0f);
161 EXPECT_FLOAT_EQ(matrix[3][0], 1.0f);
162 EXPECT_FLOAT_EQ(matrix[3][1], 1.0f);
163 EXPECT_FLOAT_EQ(matrix[3][2], 1.0f);
164 EXPECT_FLOAT_EQ(matrix[3][3], 1.0f);
167TEST(libsbx_math_matrix4x4, copy_assignment) {
177 EXPECT_FLOAT_EQ(copy[0][0], 1.0f);
178 EXPECT_FLOAT_EQ(copy[0][1], 2.0f);
179 EXPECT_FLOAT_EQ(copy[0][2], 3.0f);
180 EXPECT_FLOAT_EQ(copy[0][3], 4.0f);
182 EXPECT_FLOAT_EQ(copy[1][0], 5.0f);
183 EXPECT_FLOAT_EQ(copy[1][1], 6.0f);
184 EXPECT_FLOAT_EQ(copy[1][2], 7.0f);
185 EXPECT_FLOAT_EQ(copy[1][3], 8.0f);
187 EXPECT_FLOAT_EQ(copy[2][0], 9.0f);
188 EXPECT_FLOAT_EQ(copy[2][1], 10.0f);
189 EXPECT_FLOAT_EQ(copy[2][2], 11.0f);
190 EXPECT_FLOAT_EQ(copy[2][3], 12.0f);
192 EXPECT_FLOAT_EQ(copy[3][0], 13.0f);
193 EXPECT_FLOAT_EQ(copy[3][1], 14.0f);
194 EXPECT_FLOAT_EQ(copy[3][2], 15.0f);
195 EXPECT_FLOAT_EQ(copy[3][3], 16.0f);
198TEST(libsbx_math_matrix4x4, move_assignment) {
206 auto move = std::move(matrix);
208 EXPECT_FLOAT_EQ(move[0][0], 1.0f);
209 EXPECT_FLOAT_EQ(move[0][1], 2.0f);
210 EXPECT_FLOAT_EQ(move[0][2], 3.0f);
211 EXPECT_FLOAT_EQ(move[0][3], 4.0f);
213 EXPECT_FLOAT_EQ(move[1][0], 5.0f);
214 EXPECT_FLOAT_EQ(move[1][1], 6.0f);
215 EXPECT_FLOAT_EQ(move[1][2], 7.0f);
216 EXPECT_FLOAT_EQ(move[1][3], 8.0f);
218 EXPECT_FLOAT_EQ(move[2][0], 9.0f);
219 EXPECT_FLOAT_EQ(move[2][1], 10.0f);
220 EXPECT_FLOAT_EQ(move[2][2], 11.0f);
221 EXPECT_FLOAT_EQ(move[2][3], 12.0f);
223 EXPECT_FLOAT_EQ(move[3][0], 13.0f);
224 EXPECT_FLOAT_EQ(move[3][1], 14.0f);
225 EXPECT_FLOAT_EQ(move[3][2], 15.0f);
226 EXPECT_FLOAT_EQ(move[3][3], 16.0f);
229TEST(libsbx_math_matrix4x4, transposed) {
237 auto result = sbx::math::matrix4x4::transposed(matrix);
239 EXPECT_FLOAT_EQ(result[0][0], 1.0f);
240 EXPECT_FLOAT_EQ(result[0][1], 5.0f);
241 EXPECT_FLOAT_EQ(result[0][2], 9.0f);
242 EXPECT_FLOAT_EQ(result[0][3], 13.0f);
244 EXPECT_FLOAT_EQ(result[1][0], 2.0f);
245 EXPECT_FLOAT_EQ(result[1][1], 6.0f);
246 EXPECT_FLOAT_EQ(result[1][2], 10.0f);
247 EXPECT_FLOAT_EQ(result[1][3], 14.0f);
249 EXPECT_FLOAT_EQ(result[2][0], 3.0f);
250 EXPECT_FLOAT_EQ(result[2][1], 7.0f);
251 EXPECT_FLOAT_EQ(result[2][2], 11.0f);
252 EXPECT_FLOAT_EQ(result[2][3], 15.0f);
254 EXPECT_FLOAT_EQ(result[3][0], 4.0f);
255 EXPECT_FLOAT_EQ(result[3][1], 8.0f);
256 EXPECT_FLOAT_EQ(result[3][2], 12.0f);
257 EXPECT_FLOAT_EQ(result[3][3], 16.0f);
260TEST(libsbx_math_matrix4x4, translated) {
268 auto result = sbx::math::matrix4x4::translated(matrix,
sbx::math::vector3{1.0f, 2.0f, 3.0f});
270 EXPECT_FLOAT_EQ(result[0][0], 1.0f);
271 EXPECT_FLOAT_EQ(result[0][1], 2.0f);
272 EXPECT_FLOAT_EQ(result[0][2], 3.0f);
273 EXPECT_FLOAT_EQ(result[0][3], 4.0f);
275 EXPECT_FLOAT_EQ(result[1][0], 5.0f);
276 EXPECT_FLOAT_EQ(result[1][1], 6.0f);
277 EXPECT_FLOAT_EQ(result[1][2], 7.0f);
278 EXPECT_FLOAT_EQ(result[1][3], 8.0f);
280 EXPECT_FLOAT_EQ(result[2][0], 9.0f);
281 EXPECT_FLOAT_EQ(result[2][1], 10.0f);
282 EXPECT_FLOAT_EQ(result[2][2], 11.0f);
283 EXPECT_FLOAT_EQ(result[2][3], 12.0f);
285 EXPECT_FLOAT_EQ(result[3][0], 51.0f);
286 EXPECT_FLOAT_EQ(result[3][1], 58.0f);
287 EXPECT_FLOAT_EQ(result[3][2], 65.0f);
288 EXPECT_FLOAT_EQ(result[3][3], 72.0f);
Definition: matrix4x4.hpp:26
Definition: vector3.hpp:23