ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE-3.0/test/math/RectMatrixTestCase.cpp
Revision: 1816
Committed: Wed Dec 1 19:10:51 2004 UTC (19 years, 7 months ago) by tim
File size: 6856 byte(s)
Log Message:
spell check

File Contents

# Content
1 #include "RectMatrixTestCase.hpp"
2
3 // Registers the fixture into the 'registry'
4 CPPUNIT_TEST_SUITE_REGISTRATION( RectMatrixTestCase );
5
6 void RectMatrixTestCase::setUp(){
7
8 m1(0, 0) = 1.0;
9 m1(0, 1) = 1.0;
10 m1(1, 0) = 3.0;
11 m1(1, 1) = 1.0;
12
13 m2(0, 0) = 1.0;
14 m2(0, 1) = 0.0;
15 m2(1, 0) = 0.0;
16 m2(1, 1) = 1.0;
17
18
19 m3(0, 0) = 1.0;
20 m3(0, 1) = 0.0;
21 m3(1, 0) = 0.0;
22 m3(1, 1) = 1.0;
23
24 m4(0, 0) = -1.0;
25 m4(0, 1) = -1.0;
26 m4(1, 0) = -3.0;
27 m4(1, 1) = -1.0;
28
29 zero(0, 0) = 0.0;
30 zero(0, 1) = 0.0;
31 zero(1, 0) = 0.0;
32 zero(1, 1) = 0.0;
33
34 one(0, 0) = 1.0;
35 one(0, 1) = 1.0;
36 one(1, 0) = 1.0;
37 one(1, 1) = 1.0;
38
39 two(0, 0) = 2.0;
40 two(0, 1) = 2.0;
41 two(1, 0) = 2.0;
42 two(1, 1) = 2.0;
43
44 a(0, 0) = 1.0;
45 a(0, 1) = 0.0;
46 a(0, 2) = 0.0;
47 a(1, 0) = 0.0;
48 a(1, 1) = 1.0;
49 a(1, 2) = 0.0;
50
51 b(0, 0) = 1.0;
52 b(0, 1) = 0.0;
53 b(1, 0) = 0.0;
54 b(1, 1) = 1.0;
55 b(2, 0) = 0.0;
56 b(2, 1) = 0.0;
57
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(){
151
152 //test default constructor
153 RMat2x2 tmp1;
154 CPPUNIT_ASSERT(tmp1 == zero);
155
156 //test RectMatrix(Real s)
157 RMat2x2 tmp2;
158 CPPUNIT_ASSERT(tmp2 == zero);
159
160 //test copy constructor
161 RMat2x2 tmp3(m1);
162 CPPUNIT_ASSERT(tmp3 == m1);
163
164 //test copy assignment
165 RMat2x2 tmp4 = m2;
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() {
188
189 CPPUNIT_ASSERT(m1 == -m4);
190 }
191
192 void RectMatrixTestCase::testAdd() {
193 RMat2x2 tmp;
194
195 CPPUNIT_ASSERT(m1 + m4 == zero);
196
197 tmp.add(m1, m1);
198
199 CPPUNIT_ASSERT(m1 * 2.0 == tmp);
200
201 tmp = one;
202 tmp *= 2.0;
203
204 CPPUNIT_ASSERT(tmp == two);
205
206 }
207
208 void RectMatrixTestCase::testSub() {
209
210 RMat2x2 tmp(m2);
211 tmp.sub(m2);
212 CPPUNIT_ASSERT(tmp == zero);
213
214 tmp = m2;
215 tmp -= m2;
216 CPPUNIT_ASSERT(tmp == zero);
217
218 tmp = m1;
219 tmp.sub(m1 , m4);
220 CPPUNIT_ASSERT(tmp == m1 * 2.0);
221
222 CPPUNIT_ASSERT(m1 -m4 == m1 * 2.0);
223
224
225 }
226
227 void RectMatrixTestCase::testMul() {
228
229 CPPUNIT_ASSERT(m1 * 1.0 == m1);
230 CPPUNIT_ASSERT(m1 * 0.0 == zero);
231 CPPUNIT_ASSERT(2.0 *m1 == m1 + m1);
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() {
244
245 CPPUNIT_ASSERT(m1 / 1.0 == m1);
246
247 CPPUNIT_ASSERT(m1 / 2.0 * 2.0 == m1);
248
249
250 }
251
252 void RectMatrixTestCase::testAccessEntries(){
253 CPPUNIT_ASSERT_DOUBLES_EQUAL(m1(1, 0), 3.0, oopse::epsilon);
254 }
255
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 }

Properties

Name Value
svn:executable *