ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE-3.0/test/math/RectMatrixTestCase.cpp
Revision: 1644
Committed: Mon Oct 25 22:46:19 2004 UTC (19 years, 8 months ago) by tim
File size: 6851 byte(s)
Log Message:
add getArray function to  RectMatrix and Vector classes

File Contents

# User Rev Content
1 tim 1565 #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 tim 1571 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 tim 1565 }
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 tim 1644 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 tim 1565
179     }
180    
181     void RectMatrixTestCase::testEqual() {
182     CPPUNIT_ASSERT(m2 == m3);
183 tim 1571 CPPUNIT_ASSERT(m2 != m3);
184    
185 tim 1565 }
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 tim 1571
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 tim 1565 }
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 tim 1603
250 tim 1565 }
251    
252     void RectMatrixTestCase::testAccessEntries(){
253 tim 1571 CPPUNIT_ASSERT_DOUBLES_EQUAL(m1(1, 0), 3.0, oopse::epsilon);
254 tim 1565 }
255    
256 tim 1595 void RectMatrixTestCase::testRowColOperations() {
257     Vec3 row;
258     Vec3 col;
259     RMat3x3 m;
260    
261     //test getRow
262     row = e.getRow(0);
263 tim 1603 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 tim 1595 //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 tim 1597 col = e.getColum(1);
283 tim 1603 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 tim 1595 //test setCol
287     col[0] = 2.0;
288     col[1] = 0.0;
289     col[2] = 0.0;
290 tim 1596 m.setColum(0, col);
291 tim 1595 col[0] = 4.0;
292     col[1] = 0.0;
293     col[2] = 6.0;
294 tim 1596 m.setColum(1, col);
295 tim 1595 col[0] = 1.0;
296     col[1] = 3.0;
297     col[2] = 5.0;
298 tim 1596 m.setColum(2, col);
299 tim 1595 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 tim 1596 s.swapColum(0, 1);
325 tim 1595 CPPUNIT_ASSERT(s == e);
326 tim 1630
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 tim 1595 }
341    
342     void RectMatrixTestCase::testOtherMemberFunctions(){
343     //test transpose
344 tim 1565 CPPUNIT_ASSERT((a.transpose()).transpose() == a);
345    
346     CPPUNIT_ASSERT(a.transpose() == b);
347 tim 1644
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 tim 1565 }

Properties

Name Value
svn:executable *