From a7b313a16cf5b64981dd953f150327638379e68b Mon Sep 17 00:00:00 2001 From: Gael Guennebaud Date: Sun, 1 Jul 2018 22:45:47 +0200 Subject: Fix unit test --- test/diagonalmatrices.cpp | 43 +++++++++++++++++++++++++++---------------- 1 file changed, 27 insertions(+), 16 deletions(-) (limited to 'test/diagonalmatrices.cpp') diff --git a/test/diagonalmatrices.cpp b/test/diagonalmatrices.cpp index 73b4cd58c..a4ff10239 100644 --- a/test/diagonalmatrices.cpp +++ b/test/diagonalmatrices.cpp @@ -106,25 +106,32 @@ template void diagonalmatrices(const MatrixType& m) sq_m2 = sq_m1 * sq_m2; VERIFY_IS_APPROX( (sq_m1*v1.asDiagonal()).col(i), sq_m2.col(i) ); VERIFY_IS_APPROX( (sq_m1*v1.asDiagonal()).row(i), sq_m2.row(i) ); +} - if(v1.size()==1) - { - typedef Matrix DynVectorType; - typedef Matrix DynRowVectorType; - Index depth = internal::random(1,EIGEN_TEST_MAX_SIZE); - DynVectorType dv1 = DynVectorType::Random(depth); - DynRowVectorType drv1 = DynRowVectorType::Random(depth); - DynMatrixType dm1 = dv1; - DynMatrixType drm1 = drv1; - - Scalar s = v1(0); +template void as_scalar_product(const MatrixType& m) +{ + typedef typename MatrixType::Scalar Scalar; + typedef Matrix VectorType; + typedef Matrix DynMatrixType; + typedef Matrix DynVectorType; + typedef Matrix DynRowVectorType; - VERIFY_IS_APPROX( v1.asDiagonal() * drv1, s*drv1 ); - VERIFY_IS_APPROX( dv1 * v1.asDiagonal(), dv1*s ); + Index rows = m.rows(); + Index depth = internal::random(1,EIGEN_TEST_MAX_SIZE); - VERIFY_IS_APPROX( v1.asDiagonal() * drm1, s*drm1 ); - VERIFY_IS_APPROX( dm1 * v1.asDiagonal(), dm1*s ); - } + VectorType v1 = VectorType::Random(rows); + DynVectorType dv1 = DynVectorType::Random(depth); + DynRowVectorType drv1 = DynRowVectorType::Random(depth); + DynMatrixType dm1 = dv1; + DynMatrixType drm1 = drv1; + + Scalar s = v1(0); + + VERIFY_IS_APPROX( v1.asDiagonal() * drv1, s*drv1 ); + VERIFY_IS_APPROX( dv1 * v1.asDiagonal(), dv1*s ); + + VERIFY_IS_APPROX( v1.asDiagonal() * drm1, s*drm1 ); + VERIFY_IS_APPROX( dm1 * v1.asDiagonal(), dm1*s ); } template @@ -142,15 +149,19 @@ void test_diagonalmatrices() { for(int i = 0; i < g_repeat; i++) { CALL_SUBTEST_1( diagonalmatrices(Matrix()) ); + CALL_SUBTEST_1( as_scalar_product(Matrix()) ); + CALL_SUBTEST_2( diagonalmatrices(Matrix3f()) ); CALL_SUBTEST_3( diagonalmatrices(Matrix()) ); CALL_SUBTEST_4( diagonalmatrices(Matrix4d()) ); CALL_SUBTEST_5( diagonalmatrices(Matrix()) ); CALL_SUBTEST_6( diagonalmatrices(MatrixXcf(internal::random(1,EIGEN_TEST_MAX_SIZE), internal::random(1,EIGEN_TEST_MAX_SIZE))) ); + CALL_SUBTEST_6( as_scalar_product(MatrixXcf(1,1)) ); CALL_SUBTEST_7( diagonalmatrices(MatrixXi(internal::random(1,EIGEN_TEST_MAX_SIZE), internal::random(1,EIGEN_TEST_MAX_SIZE))) ); CALL_SUBTEST_8( diagonalmatrices(Matrix(internal::random(1,EIGEN_TEST_MAX_SIZE), internal::random(1,EIGEN_TEST_MAX_SIZE))) ); CALL_SUBTEST_9( diagonalmatrices(MatrixXf(internal::random(1,EIGEN_TEST_MAX_SIZE), internal::random(1,EIGEN_TEST_MAX_SIZE))) ); CALL_SUBTEST_9( diagonalmatrices(MatrixXf(1,1)) ); + CALL_SUBTEST_9( as_scalar_product(MatrixXf(1,1)) ); } CALL_SUBTEST_10( bug987<0>() ); } -- cgit v1.2.3