[Sparse] Added regression tests for the two bugfixes, the code passes all sparse_product tests

This commit is contained in:
David J. Luitz
2010-12-30 15:16:23 +01:00
parent 13867c15cc
commit 11e253bc10
2 changed files with 54 additions and 10 deletions

View File

@@ -137,6 +137,31 @@ template<typename SparseMatrixType> void sparse_product(const SparseMatrixType&
}
}
// New test for Bug in SparseTimeDenseProduct
template<typename SparseMatrixType, typename DenseMatrixType> void sparse_product_regression_test()
{
// This code does not compile with afflicted versions of the bug
/* SparseMatrixType sm1(3,2);
DenseMatrixType m2(2,2);
sm1.setZero();
m2.setZero();
DenseMatrixType m3 = sm1*m2;
*/
// This code produces a segfault with afflicted versions of another SparseTimeDenseProduct
// bug
SparseMatrixType sm2(20000,2);
DenseMatrixType m3(2,2);
sm2.setZero();
m3.setZero();
DenseMatrixType m4(sm2*m3);
VERIFY_IS_APPROX( m4(0,0), 0.0 );
}
void test_sparse_product()
{
for(int i = 0; i < g_repeat; i++) {
@@ -145,5 +170,7 @@ void test_sparse_product()
CALL_SUBTEST_1( sparse_product(SparseMatrix<double>(33, 33)) );
CALL_SUBTEST_3( sparse_product(DynamicSparseMatrix<double>(8, 8)) );
CALL_SUBTEST_4( (sparse_product_regression_test<SparseMatrix<double,RowMajor>, Matrix<double, Dynamic, Dynamic, RowMajor> >()) );
}
}