X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=tests%2Fmatrix.cpp;h=6f578883e6d047d83ee245e000b9ce8b64f1ea2a;hb=c854dd42c57b0430558baed5151449c83e24507f;hp=10e3ffd97e8284705ef398d27887c579372d947a;hpb=eb02e224876676a2d78f7305456a7d6f67d3dee2;p=libs%2Fmath.git diff --git a/tests/matrix.cpp b/tests/matrix.cpp index 10e3ffd..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(a*b == (LinAl::Matrix(data+12))); - EXPECT(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)); }