aboutsummaryrefslogtreecommitdiffhomepage
path: root/test
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2019-01-16 15:24:59 +0100
committerGravatar Gael Guennebaud <g.gael@free.fr>2019-01-16 15:24:59 +0100
commitaeffdf909eb79dace9f12d0c38583f0dad106f54 (patch)
treed3ae3090c708d47bceeb90ad4ccd4694597b2aff /test
parent502f7179801a9b6ae5f6d6df60e72d5064702925 (diff)
bug #1617: add unit tests for empty triangular solve.
Diffstat (limited to 'test')
-rw-r--r--test/product_trsolve.cpp13
-rw-r--r--test/sparse_solvers.cpp13
2 files changed, 26 insertions, 0 deletions
diff --git a/test/product_trsolve.cpp b/test/product_trsolve.cpp
index 0c22cccf6..c927cb635 100644
--- a/test/product_trsolve.cpp
+++ b/test/product_trsolve.cpp
@@ -71,6 +71,19 @@ template<typename Scalar,int Size, int Cols> void trsolve(int size=Size,int cols
int c = internal::random<int>(0,cols-1);
VERIFY_TRSM(rmLhs.template triangularView<Lower>(), rmRhs.col(c));
VERIFY_TRSM(cmLhs.template triangularView<Lower>(), rmRhs.col(c));
+
+ if(Size==Dynamic)
+ {
+ cmLhs.resize(0,0);
+ cmRhs.resize(0,cmRhs.cols());
+ Matrix<Scalar,Size,Cols,colmajor> res = cmLhs.template triangularView<Lower>().solve(cmRhs);
+ VERIFY_IS_EQUAL(res.rows(),0);
+ VERIFY_IS_EQUAL(res.cols(),cmRhs.cols());
+ res = cmRhs;
+ cmLhs.template triangularView<Lower>().solveInPlace(res);
+ VERIFY_IS_EQUAL(res.rows(),0);
+ VERIFY_IS_EQUAL(res.cols(),cmRhs.cols());
+ }
}
EIGEN_DECLARE_TEST(product_trsolve)
diff --git a/test/sparse_solvers.cpp b/test/sparse_solvers.cpp
index aaf3d39c9..3b7cd7788 100644
--- a/test/sparse_solvers.cpp
+++ b/test/sparse_solvers.cpp
@@ -98,6 +98,19 @@ template<typename Scalar> void sparse_solvers(int rows, int cols)
initSparse<Scalar>(density, refMat2, m2, ForceNonZeroDiag|MakeLowerTriangular, &zeroCoords, &nonzeroCoords);
VERIFY_IS_APPROX(refMat2.template triangularView<Lower>().solve(vec2),
m2.template triangularView<Lower>().solve(vec3));
+
+ // test empty triangular matrix
+ {
+ m2.resize(0,0);
+ refMatB.resize(0,refMatB.cols());
+ DenseMatrix res = m2.template triangularView<Lower>().solve(refMatB);
+ VERIFY_IS_EQUAL(res.rows(),0);
+ VERIFY_IS_EQUAL(res.cols(),refMatB.cols());
+ res = refMatB;
+ m2.template triangularView<Lower>().solveInPlace(res);
+ VERIFY_IS_EQUAL(res.rows(),0);
+ VERIFY_IS_EQUAL(res.cols(),refMatB.cols());
+ }
}
}