ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE-3.0/test/math/RectMatrixTestCase.cpp
(Generate patch)

Comparing trunk/OOPSE-3.0/test/math/RectMatrixTestCase.cpp (file contents):
Revision 1565 by tim, Wed Oct 13 22:27:58 2004 UTC vs.
Revision 1644 by tim, Mon Oct 25 22:46:19 2004 UTC

# 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.getColum(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.setColum(0, col);
291 >    col[0] = 4.0;    
292 >    col[1] = 0.0;    
293 >    col[2] = 6.0;    
294 >    m.setColum(1, col);
295 >    col[0] = 1.0;    
296 >    col[1] = 3.0;    
297 >    col[2] = 5.0;    
298 >    m.setColum(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.swapColum(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   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines