From aeffdf909eb79dace9f12d0c38583f0dad106f54 Mon Sep 17 00:00:00 2001 From: Gael Guennebaud Date: Wed, 16 Jan 2019 15:24:59 +0100 Subject: [PATCH] bug #1617: add unit tests for empty triangular solve. --- test/product_trsolve.cpp | 13 +++++++++++++ test/sparse_solvers.cpp | 13 +++++++++++++ 2 files changed, 26 insertions(+) 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 void trsolve(int size=Size,int cols int c = internal::random(0,cols-1); VERIFY_TRSM(rmLhs.template triangularView(), rmRhs.col(c)); VERIFY_TRSM(cmLhs.template triangularView(), rmRhs.col(c)); + + if(Size==Dynamic) + { + cmLhs.resize(0,0); + cmRhs.resize(0,cmRhs.cols()); + Matrix res = cmLhs.template triangularView().solve(cmRhs); + VERIFY_IS_EQUAL(res.rows(),0); + VERIFY_IS_EQUAL(res.cols(),cmRhs.cols()); + res = cmRhs; + cmLhs.template triangularView().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 void sparse_solvers(int rows, int cols) initSparse(density, refMat2, m2, ForceNonZeroDiag|MakeLowerTriangular, &zeroCoords, &nonzeroCoords); VERIFY_IS_APPROX(refMat2.template triangularView().solve(vec2), m2.template triangularView().solve(vec3)); + + // test empty triangular matrix + { + m2.resize(0,0); + refMatB.resize(0,refMatB.cols()); + DenseMatrix res = m2.template triangularView().solve(refMatB); + VERIFY_IS_EQUAL(res.rows(),0); + VERIFY_IS_EQUAL(res.cols(),refMatB.cols()); + res = refMatB; + m2.template triangularView().solveInPlace(res); + VERIFY_IS_EQUAL(res.rows(),0); + VERIFY_IS_EQUAL(res.cols(),refMatB.cols()); + } } }