--- trunk/test/math/RectMatrixTestCase.cpp 2004/10/18 21:03:15 100 +++ trunk/test/math/RectMatrixTestCase.cpp 2004/10/21 21:31:39 137 @@ -237,14 +237,101 @@ void RectMatrixTestCase::testDiv() { CPPUNIT_ASSERT(m1 / 2.0 * 2.0 == m1); + } void RectMatrixTestCase::testAccessEntries(){ CPPUNIT_ASSERT_DOUBLES_EQUAL(m1(1, 0), 3.0, oopse::epsilon); } -void RectMatrixTestCase::testTranspose(){ +void RectMatrixTestCase::testRowColOperations() { + Vec3 row; + Vec3 col; + RMat3x3 m; + + //test getRow + row = e.getRow(0); + CPPUNIT_ASSERT_DOUBLES_EQUAL(row[0], 2.0, oopse::epsilon); + CPPUNIT_ASSERT_DOUBLES_EQUAL(row[1], 4.0, oopse::epsilon); + CPPUNIT_ASSERT_DOUBLES_EQUAL(row[2], 1.0, oopse::epsilon); + //test setRow + row[0] = 2.0; + row[1] = 4.0; + row[2] = 1.0; + m.setRow(0, row); + row[0] = 0.0; + row[1] = 0.0; + row[2] = 3.0; + m.setRow(1, row); + row[0] = 0.0; + row[1] = 6.0; + row[2] = 5.0; + m.setRow(2, row); + CPPUNIT_ASSERT(m == e); + + //test getCol + col = e.getColum(1); + CPPUNIT_ASSERT_DOUBLES_EQUAL(col[0], 4.0, oopse::epsilon); + CPPUNIT_ASSERT_DOUBLES_EQUAL(col[1], 0.0, oopse::epsilon); + CPPUNIT_ASSERT_DOUBLES_EQUAL(col[2], 6.0, oopse::epsilon); + //test setCol + col[0] = 2.0; + col[1] = 0.0; + col[2] = 0.0; + m.setColum(0, col); + col[0] = 4.0; + col[1] = 0.0; + col[2] = 6.0; + m.setColum(1, col); + col[0] = 1.0; + col[1] = 3.0; + col[2] = 5.0; + m.setColum(2, col); + CPPUNIT_ASSERT(m == e); + //test swapRow + RMat2x3 r; + r(0, 0) = 0.0; + r(0, 1) = 1.0; + r(0, 2) = 0.0; + r(1, 0) = 1.0; + r(1, 1) = 0.0; + r(1, 2) = 0.0; + r.swapRow(0, 1); + CPPUNIT_ASSERT(r == a); + + //test swapCol + RMat3x3 s; + s(0, 0) = 4.0; + s(0, 1) = 2.0; + s(0, 2) = 1.0; + s(1, 0) = 0.0; + s(1, 1) = 0.0; + s(1, 2) = 3.0; + s(2, 0) = 6.0; + s(2, 1) = 0.0; + s(2, 2) = 5.0; + + s.swapColum(0, 1); + CPPUNIT_ASSERT(s == e); + + double* p = s.getArrayPointer(); + + p[0] = 2.0; + p[1] = 4.0; + p[2] = 1.0; + p[3] = 0.0; + p[4] = 6.0; + p[5] = 5.0; + p[6] = 0.0; + p[7] = 0.0; + p[8] = 3.0; + + CPPUNIT_ASSERT(s == f); +} + +void RectMatrixTestCase::testOtherMemberFunctions(){ + //test transpose CPPUNIT_ASSERT((a.transpose()).transpose() == a); CPPUNIT_ASSERT(a.transpose() == b);