X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=tests%2Fmatrix.cpp;h=6f578883e6d047d83ee245e000b9ce8b64f1ea2a;hb=c854dd42c57b0430558baed5151449c83e24507f;hp=5b303dbe8cd99f706d4ce4889d766ee71f291657;hpb=9ab061034720c1c0db4e8bff5dae4191ccd2a26f;p=libs%2Fmath.git diff --git a/tests/matrix.cpp b/tests/matrix.cpp index 5b303db..6f57888 100644 --- a/tests/matrix.cpp +++ b/tests/matrix.cpp @@ -1,11 +1,19 @@ +#include #include #include #include +using namespace std; using namespace Msp; class MatrixTests: public Test::RegisteredTest { +private: + typedef LinAl::SquareMatrix Matrix2d; + typedef LinAl::Matrix Matrix3x2d; + typedef LinAl::Matrix Matrix2x3d; + typedef LinAl::SquareMatrix Matrix3d; + public: MatrixTests(); @@ -20,7 +28,7 @@ private: MatrixTests::MatrixTests() { add(&MatrixTests::multiply, "Multiplication"); - add(&MatrixTests::invert, "Inversion"); + add(&MatrixTests::invert, "Inversion"); } void MatrixTests::multiply() @@ -33,18 +41,19 @@ void MatrixTests::multiply() 9, 3, 9, 6 }; - LinAl::Matrix a(data); - LinAl::Matrix b(data+6); - EXPECT_EQUAL(a*b, (LinAl::Matrix(data+12))); - EXPECT_EQUAL(b*a, (LinAl::Matrix(data+21))); + Matrix3x2d a(data); + Matrix2x3d b(data+6); + EXPECT_EQUAL(a*b, Matrix3d(data+12)); + EXPECT_EQUAL(b*a, Matrix2d(data+21)); } template bool is_identity(const LinAl::Matrix &m) { + static const T limit = numeric_limits::epsilon()*4; for(unsigned i=0; i1e-10) + if(abs(T(i==j)-m(i, j))>limit) return false; return true; } @@ -56,7 +65,7 @@ void MatrixTests::invert() 1, 4, 2, 4, 8, 6, 2, 2, 4 }; - LinAl::SquareMatrix m(data); - LinAl::SquareMatrix i = LinAl::invert(m); + Matrix3d m(data); + Matrix3d i = LinAl::invert(m); EXPECT(is_identity(i*m)); }