diff options
author | Gael Guennebaud <g.gael@free.fr> | 2014-10-09 23:35:49 +0200 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2014-10-09 23:35:49 +0200 |
commit | 349c2c9235ce93b50bd8e38be3e876ee73442ccc (patch) | |
tree | c230ce845ee892009c3e008c82eb6f125b5c61a6 /test | |
parent | 48d537f59fd3c7efd954bb99581dac83fd1c0f16 (diff) |
bug #367: fix double copies in atWithInsertion, and add respective unit-test
Diffstat (limited to 'test')
-rw-r--r-- | test/sparse_vector.cpp | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/test/sparse_vector.cpp b/test/sparse_vector.cpp index 5eea9edfd..5dc421976 100644 --- a/test/sparse_vector.cpp +++ b/test/sparse_vector.cpp @@ -23,8 +23,8 @@ template<typename Scalar,typename Index> void sparse_vector(int rows, int cols) SparseVectorType v1(rows), v2(rows), v3(rows); DenseMatrix refM1 = DenseMatrix::Zero(rows, rows); DenseVector refV1 = DenseVector::Random(rows), - refV2 = DenseVector::Random(rows), - refV3 = DenseVector::Random(rows); + refV2 = DenseVector::Random(rows), + refV3 = DenseVector::Random(rows); std::vector<int> zerocoords, nonzerocoords; initSparse<Scalar>(densityVec, refV1, v1, &zerocoords, &nonzerocoords); @@ -52,6 +52,20 @@ template<typename Scalar,typename Index> void sparse_vector(int rows, int cols) } } VERIFY_IS_APPROX(v1, refV1); + + // test coeffRef with reallocation + { + SparseVectorType v1(rows); + DenseVector v2 = DenseVector::Zero(rows); + for(int k=0; k<rows; ++k) + { + int i = internal::random<int>(0,rows-1); + Scalar v = internal::random<Scalar>(); + v1.coeffRef(i) += v; + v2.coeffRef(i) += v; + } + VERIFY_IS_APPROX(v1,v2); + } v1.coeffRef(nonzerocoords[0]) = Scalar(5); refV1.coeffRef(nonzerocoords[0]) = Scalar(5); |