# | Line 55 | Line 55 | void RectMatrixTestCase::setUp(){ | |
---|---|---|
55 | b(2, 0) = 0.0; | |
56 | b(2, 1) = 0.0; | |
57 | ||
58 | < | |
58 | > | c(0, 0) = 1.0; |
59 | > | c(0, 1) = 0.0; |
60 | > | c(1, 0) = 0.0; |
61 | > | c(1, 1) = 1.0; |
62 | > | |
63 | > | d(0, 0) = 1.0; |
64 | > | d(0, 1) = 0.0; |
65 | > | d(0, 2) = 0.0; |
66 | > | d(1, 0) = 0.0; |
67 | > | d(1, 1) = 0.0; |
68 | > | d(1, 2) = 1.0; |
69 | > | d(2, 0) = 0.0; |
70 | > | d(2, 1) = 1.0; |
71 | > | d(2, 2) = 0.0; |
72 | > | |
73 | > | e(0, 0) = 2.0; |
74 | > | e(0, 1) = 4.0; |
75 | > | e(0, 2) = 1.0; |
76 | > | e(1, 0) = 0.0; |
77 | > | e(1, 1) = 0.0; |
78 | > | e(1, 2) = 3.0; |
79 | > | e(2, 0) = 0.0; |
80 | > | e(2, 1) = 6.0; |
81 | > | e(2, 2) = 5.0; |
82 | > | |
83 | > | f(0, 0) = 2.0; |
84 | > | f(0, 1) = 4.0; |
85 | > | f(0, 2) = 1.0; |
86 | > | f(1, 0) = 0.0; |
87 | > | f(1, 1) = 6.0; |
88 | > | f(1, 2) = 5.0; |
89 | > | f(2, 0) = 0.0; |
90 | > | f(2, 1) = 0.0; |
91 | > | f(2, 2) = 3.0; |
92 | > | |
93 | > | f(0, 0) = 2.0; |
94 | > | f(0, 1) = 4.0; |
95 | > | f(0, 2) = 1.0; |
96 | > | f(1, 0) = 0.0; |
97 | > | f(1, 1) = 6.0; |
98 | > | f(1, 2) = 5.0; |
99 | > | f(2, 0) = 0.0; |
100 | > | f(2, 1) = 0.0; |
101 | > | f(2, 2) = 3.0; |
102 | > | |
103 | > | g(0, 0) = 1.0; |
104 | > | g(0, 1) = 0.0; |
105 | > | g(0, 2) = 0.0; |
106 | > | g(1, 0) = -2.0; |
107 | > | g(1, 1) = 1.0; |
108 | > | g(1, 2) = 0.0; |
109 | > | g(2, 0) = 0.0; |
110 | > | g(2, 1) = 0.0; |
111 | > | g(2, 2) = 1.0; |
112 | > | |
113 | > | h(0, 0) = 2.0; |
114 | > | h(0, 1) = 4.0; |
115 | > | h(0, 2) = -2.0; |
116 | > | h(0, 3) = 2.0; |
117 | > | h(1, 0) = 4.0; |
118 | > | h(1, 1) = 9.0; |
119 | > | h(1, 2) = -3.0; |
120 | > | h(1, 3) = 8.0; |
121 | > | h(2, 0) = -2.0; |
122 | > | h(2, 1) = -3.0; |
123 | > | h(2, 2) = 7.0; |
124 | > | h(2, 3) = 10.0; |
125 | > | |
126 | > | i(0, 0) = 2.0; |
127 | > | i(0, 1) = 4.0; |
128 | > | i(0, 2) = -2.0; |
129 | > | i(0, 3) = 2.0; |
130 | > | i(1, 0) = 0.0; |
131 | > | i(1, 1) = 1.0; |
132 | > | i(1, 2) = 1.0; |
133 | > | i(1, 3) = 4.0; |
134 | > | i(2, 0) = -2.0; |
135 | > | i(2, 1) = -3.0; |
136 | > | i(2, 2) = 7.0; |
137 | > | i(2, 3) = 10.0; |
138 | > | |
139 | > | |
140 | > | v1(0) = 2.0; |
141 | > | v1(1) = 4.0; |
142 | > | v1(2) = -2.0; |
143 | > | |
144 | > | v2(0) = 2.0; |
145 | > | v2(1) = 0.0; |
146 | > | v2(2) = -2.0; |
147 | > | |
148 | } | |
149 | ||
150 | void RectMatrixTestCase::testConstructor(){ | |
# | Line 77 | Line 166 | void RectMatrixTestCase::testConstructor(){ | |
166 | tmp4 = tmp4; | |
167 | CPPUNIT_ASSERT(tmp4 == m2); | |
168 | ||
169 | + | double tmp5[4]; |
170 | + | tmp5[0] = 1.0; |
171 | + | tmp5[1] = 1.0; |
172 | + | tmp5[2] = 3.0; |
173 | + | tmp5[3] = 1.0; |
174 | + | |
175 | + | RMat2x2 tmp6(tmp5); |
176 | + | CPPUNIT_ASSERT(tmp6 == m1); |
177 | + | |
178 | ||
179 | } | |
180 | ||
181 | void RectMatrixTestCase::testEqual() { | |
182 | CPPUNIT_ASSERT(m2 == m3); | |
183 | + | CPPUNIT_ASSERT(m2 != m3); |
184 | + | |
185 | } | |
186 | ||
187 | void RectMatrixTestCase::testNegate() { | |
# | Line 129 | Line 229 | void RectMatrixTestCase::testMul() { | |
229 | CPPUNIT_ASSERT(m1 * 1.0 == m1); | |
230 | CPPUNIT_ASSERT(m1 * 0.0 == zero); | |
231 | CPPUNIT_ASSERT(2.0 *m1 == m1 + m1); | |
232 | < | |
232 | > | |
233 | > | //test matrix multiplication |
234 | > | CPPUNIT_ASSERT(a * b == c); |
235 | > | CPPUNIT_ASSERT(d * e == f); |
236 | > | CPPUNIT_ASSERT(g * h == i); |
237 | > | |
238 | > | //test matrix vector multiplication |
239 | > | CPPUNIT_ASSERT(g * v1 == v2); |
240 | > | |
241 | } | |
242 | ||
243 | void RectMatrixTestCase::testDiv() { | |
# | Line 138 | Line 246 | void RectMatrixTestCase::testDiv() { | |
246 | ||
247 | CPPUNIT_ASSERT(m1 / 2.0 * 2.0 == m1); | |
248 | ||
249 | + | |
250 | } | |
251 | ||
252 | void RectMatrixTestCase::testAccessEntries(){ | |
253 | < | CPPUNIT_ASSERT(m1(1, 0) == 3.0); |
253 | > | CPPUNIT_ASSERT_DOUBLES_EQUAL(m1(1, 0), 3.0, oopse::epsilon); |
254 | } | |
255 | ||
256 | < | void RectMatrixTestCase::testTranspose(){ |
256 | > | void RectMatrixTestCase::testRowColOperations() { |
257 | > | Vec3 row; |
258 | > | Vec3 col; |
259 | > | RMat3x3 m; |
260 | > | |
261 | > | //test getRow |
262 | > | row = e.getRow(0); |
263 | > | CPPUNIT_ASSERT_DOUBLES_EQUAL(row[0], 2.0, oopse::epsilon); |
264 | > | CPPUNIT_ASSERT_DOUBLES_EQUAL(row[1], 4.0, oopse::epsilon); |
265 | > | CPPUNIT_ASSERT_DOUBLES_EQUAL(row[2], 1.0, oopse::epsilon); |
266 | > | //test setRow |
267 | > | row[0] = 2.0; |
268 | > | row[1] = 4.0; |
269 | > | row[2] = 1.0; |
270 | > | m.setRow(0, row); |
271 | > | row[0] = 0.0; |
272 | > | row[1] = 0.0; |
273 | > | row[2] = 3.0; |
274 | > | m.setRow(1, row); |
275 | > | row[0] = 0.0; |
276 | > | row[1] = 6.0; |
277 | > | row[2] = 5.0; |
278 | > | m.setRow(2, row); |
279 | > | CPPUNIT_ASSERT(m == e); |
280 | > | |
281 | > | //test getCol |
282 | > | col = e.getColumn(1); |
283 | > | CPPUNIT_ASSERT_DOUBLES_EQUAL(col[0], 4.0, oopse::epsilon); |
284 | > | CPPUNIT_ASSERT_DOUBLES_EQUAL(col[1], 0.0, oopse::epsilon); |
285 | > | CPPUNIT_ASSERT_DOUBLES_EQUAL(col[2], 6.0, oopse::epsilon); |
286 | > | //test setCol |
287 | > | col[0] = 2.0; |
288 | > | col[1] = 0.0; |
289 | > | col[2] = 0.0; |
290 | > | m.setColumn(0, col); |
291 | > | col[0] = 4.0; |
292 | > | col[1] = 0.0; |
293 | > | col[2] = 6.0; |
294 | > | m.setColumn(1, col); |
295 | > | col[0] = 1.0; |
296 | > | col[1] = 3.0; |
297 | > | col[2] = 5.0; |
298 | > | m.setColumn(2, col); |
299 | > | CPPUNIT_ASSERT(m == e); |
300 | ||
301 | + | //test swapRow |
302 | + | RMat2x3 r; |
303 | + | r(0, 0) = 0.0; |
304 | + | r(0, 1) = 1.0; |
305 | + | r(0, 2) = 0.0; |
306 | + | r(1, 0) = 1.0; |
307 | + | r(1, 1) = 0.0; |
308 | + | r(1, 2) = 0.0; |
309 | + | r.swapRow(0, 1); |
310 | + | CPPUNIT_ASSERT(r == a); |
311 | + | |
312 | + | //test swapCol |
313 | + | RMat3x3 s; |
314 | + | s(0, 0) = 4.0; |
315 | + | s(0, 1) = 2.0; |
316 | + | s(0, 2) = 1.0; |
317 | + | s(1, 0) = 0.0; |
318 | + | s(1, 1) = 0.0; |
319 | + | s(1, 2) = 3.0; |
320 | + | s(2, 0) = 6.0; |
321 | + | s(2, 1) = 0.0; |
322 | + | s(2, 2) = 5.0; |
323 | + | |
324 | + | s.swapColumn(0, 1); |
325 | + | CPPUNIT_ASSERT(s == e); |
326 | + | |
327 | + | double* p = s.getArrayPointer(); |
328 | + | |
329 | + | p[0] = 2.0; |
330 | + | p[1] = 4.0; |
331 | + | p[2] = 1.0; |
332 | + | p[3] = 0.0; |
333 | + | p[4] = 6.0; |
334 | + | p[5] = 5.0; |
335 | + | p[6] = 0.0; |
336 | + | p[7] = 0.0; |
337 | + | p[8] = 3.0; |
338 | + | |
339 | + | CPPUNIT_ASSERT(s == f); |
340 | + | } |
341 | + | |
342 | + | void RectMatrixTestCase::testOtherMemberFunctions(){ |
343 | + | //test transpose |
344 | CPPUNIT_ASSERT((a.transpose()).transpose() == a); | |
345 | ||
346 | CPPUNIT_ASSERT(a.transpose() == b); | |
347 | + | |
348 | + | //test getArray |
349 | + | |
350 | + | double tmp[4]; |
351 | + | m4.getArray(tmp); |
352 | + | CPPUNIT_ASSERT_DOUBLES_EQUAL(tmp[0], -1.0, oopse::epsilon); |
353 | + | CPPUNIT_ASSERT_DOUBLES_EQUAL(tmp[1], -1.0, oopse::epsilon); |
354 | + | CPPUNIT_ASSERT_DOUBLES_EQUAL(tmp[2], -3.0, oopse::epsilon); |
355 | + | CPPUNIT_ASSERT_DOUBLES_EQUAL(tmp[3], -1.0, oopse::epsilon); |
356 | + | |
357 | } |
– | Removed lines |
+ | Added lines |
< | Changed lines |
> | Changed lines |