From 2e1ddabef943ff457f13eb339509bf14fe7c9aee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Oberhuber?= <oberhuber.tomas@gmail.com> Date: Fri, 27 Dec 2019 20:31:39 +0100 Subject: [PATCH] Fixed sparse matrix assignment operator. --- src/TNL/Matrices/SparseMatrix.hpp | 4 +- src/UnitTests/Matrices/SparseMatrixCopyTest.h | 53 +++++++++---------- 2 files changed, 27 insertions(+), 30 deletions(-) diff --git a/src/TNL/Matrices/SparseMatrix.hpp b/src/TNL/Matrices/SparseMatrix.hpp index 75f505f5f4..68f33b93e3 100644 --- a/src/TNL/Matrices/SparseMatrix.hpp +++ b/src/TNL/Matrices/SparseMatrix.hpp @@ -687,8 +687,7 @@ operator=( const SparseMatrix& matrix ) Matrix< Real, Device, Index >::operator=( matrix ); this->columnIndexes = matrix.columnIndexes; this->segments = matrix.segments; - this->indexAllocator = matrix.indexAllocator; - this->realAllocator = matrix.realAllocator; + return *this; } // cross-device copy assignment @@ -797,6 +796,7 @@ operator=( const SparseMatrix< Real2, Segments2, Device2, Index2, RealAllocator2 } //std::cerr << "This matrix = " << std::endl << *this << std::endl; } + return *this; } template< typename Real, diff --git a/src/UnitTests/Matrices/SparseMatrixCopyTest.h b/src/UnitTests/Matrices/SparseMatrixCopyTest.h index e3fb505d30..34ffd600de 100644 --- a/src/UnitTests/Matrices/SparseMatrixCopyTest.h +++ b/src/UnitTests/Matrices/SparseMatrixCopyTest.h @@ -360,38 +360,35 @@ template< typename Matrix1, typename Matrix2 > void testCopyAssignment() { { - SCOPED_TRACE("Tri Diagonal Matrix"); - - Matrix1 triDiag1; - setupTriDiagMatrix( triDiag1 ); - checkTriDiagMatrix( triDiag1 ); - - Matrix2 triDiag2; - triDiag2 = triDiag1; - checkTriDiagMatrix( triDiag2 ); + SCOPED_TRACE("Tri Diagonal Matrix"); + + Matrix1 triDiag1; + setupTriDiagMatrix( triDiag1 ); + checkTriDiagMatrix( triDiag1 ); + + Matrix2 triDiag2; + triDiag2 = triDiag1; + checkTriDiagMatrix( triDiag2 ); } - { - SCOPED_TRACE("Anti Tri Diagonal Matrix"); - - Matrix1 antiTriDiag1; - setupAntiTriDiagMatrix( antiTriDiag1 ); - checkAntiTriDiagMatrix( antiTriDiag1 ); - - Matrix2 antiTriDiag2; - antiTriDiag2 = antiTriDiag1; - checkAntiTriDiagMatrix( antiTriDiag2 ); + SCOPED_TRACE("Anti Tri Diagonal Matrix"); + Matrix1 antiTriDiag1; + setupAntiTriDiagMatrix( antiTriDiag1 ); + checkAntiTriDiagMatrix( antiTriDiag1 ); + + Matrix2 antiTriDiag2; + antiTriDiag2 = antiTriDiag1; + checkAntiTriDiagMatrix( antiTriDiag2 ); } - { - SCOPED_TRACE("Uneven Row Size Matrix"); - Matrix1 unevenRowSize1; - setupUnevenRowSizeMatrix( unevenRowSize1 ); - checkUnevenRowSizeMatrix( unevenRowSize1 ); - - Matrix2 unevenRowSize2; - unevenRowSize2 = unevenRowSize1; - checkUnevenRowSizeMatrix( unevenRowSize2 ); + SCOPED_TRACE("Uneven Row Size Matrix"); + Matrix1 unevenRowSize1; + setupUnevenRowSizeMatrix( unevenRowSize1 ); + checkUnevenRowSizeMatrix( unevenRowSize1 ); + + Matrix2 unevenRowSize2; + unevenRowSize2 = unevenRowSize1; + checkUnevenRowSizeMatrix( unevenRowSize2 ); } } -- GitLab