diff options
author | Gael Guennebaud <g.gael@free.fr> | 2018-04-03 16:15:43 +0200 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2018-04-03 16:15:43 +0200 |
commit | 8d0ffe36552aeeb5f46d9c652edc45c68e536cdd (patch) | |
tree | e0f76aa4ea0b1b930e4d1cf0ecaab7c956964fb6 /test/diagonal.cpp | |
parent | 407e3e2621077a6cd768042c88c652ad75a085ae (diff) |
bug #1516: add assertion for out-of-range diagonal index in MatrixBase::diagonal(i)
Diffstat (limited to 'test/diagonal.cpp')
-rw-r--r-- | test/diagonal.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/test/diagonal.cpp b/test/diagonal.cpp index c1546e97d..0b5ae8280 100644 --- a/test/diagonal.cpp +++ b/test/diagonal.cpp @@ -66,6 +66,9 @@ template<typename MatrixType> void diagonal(const MatrixType& m) m2.diagonal(N2).coeffRef(0) = Scalar(2)*s1; VERIFY_IS_APPROX(m2.diagonal(N2).coeff(0), Scalar(2)*s1); } + + VERIFY( m1.diagonal( cols).size()==0 ); + VERIFY( m1.diagonal(-rows).size()==0 ); } template<typename MatrixType> void diagonal_assert(const MatrixType& m) { @@ -81,6 +84,9 @@ template<typename MatrixType> void diagonal_assert(const MatrixType& m) { VERIFY_RAISES_ASSERT( m1.array() *= m1.diagonal().array() ); VERIFY_RAISES_ASSERT( m1.array() /= m1.diagonal().array() ); } + + VERIFY_RAISES_ASSERT( m1.diagonal(cols+1) ); + VERIFY_RAISES_ASSERT( m1.diagonal(-(rows+1)) ); } void test_diagonal() @@ -95,7 +101,6 @@ void test_diagonal() CALL_SUBTEST_2( diagonal(MatrixXcd(internal::random<int>(1,EIGEN_TEST_MAX_SIZE), internal::random<int>(1,EIGEN_TEST_MAX_SIZE))) ); CALL_SUBTEST_1( diagonal(MatrixXf(internal::random<int>(1,EIGEN_TEST_MAX_SIZE), internal::random<int>(1,EIGEN_TEST_MAX_SIZE))) ); CALL_SUBTEST_1( diagonal(Matrix<float,Dynamic,4>(3, 4)) ); + CALL_SUBTEST_1( diagonal_assert(MatrixXf(internal::random<int>(1,EIGEN_TEST_MAX_SIZE), internal::random<int>(1,EIGEN_TEST_MAX_SIZE))) ); } - - CALL_SUBTEST_1( diagonal_assert(MatrixXf(internal::random<int>(1,EIGEN_TEST_MAX_SIZE), internal::random<int>(1,EIGEN_TEST_MAX_SIZE))) ); } |