Skip to content
Snippets Groups Projects
Commit b3acbedc authored by Lukas Cejka's avatar Lukas Cejka
Browse files

In SparseMatrixCopyTest.h:

	Added setup and check for UnevenRowSizeMatrix of size 10x6.
	Commented out their use in the testCopyAssigment and testConversion
functions.
parent db46edb9
No related branches found
No related tags found
1 merge request!16Matrices
......@@ -22,6 +22,139 @@ using SE_cuda = TNL::Matrices::SlicedEllpack< int, TNL::Devices::Cuda, int, 2 >;
#ifdef HAVE_GTEST
#include <gtest/gtest.h>
/*
* Sets up the following 10x6 sparse matrix:
*
* / 1 2 \
* | 3 4 5 |
* | 6 7 8 |
* | 9 10 11 12 13 |
* | 14 15 16 17 18 |
* | 19 20 |
* | 21 |
* | 22 |
* | 23 24 25 26 27 |
* \ 28 /
*/
template< typename Matrix >
void setupUnevenRowSizeMatrix( Matrix& m )
{
const int rows = 10;
const int cols = 6;
m.reset();
m.setDimensions( rows, cols );
typename Matrix::CompressedRowLengthsVector rowLengths;
rowLengths.setSize( rows );
rowLengths.setValue( 5 );
// rowLengths.setElement( 0, 4);
// rowLengths.setElement( 1, 4 );
m.setCompressedRowLengths( rowLengths );
int value = 1;
for( int i = 0; i < cols - 4; i++ ) // 0th row
m.setElement( 0, i, value++ );
for( int i = 3; i < cols; i++ ) // 1st row
m.setElement( 1, i, value++ );
for( int i = 0; i < cols - 3; i++ ) // 2nd row
m.setElement( 2, i, value++ );
for( int i = 1; i < cols; i++ ) // 3rd row
m.setElement( 3, i, value++ );
for( int i = 0; i < cols - 1; i++ ) // 4th row
m.setElement( 4, i, value++ );
for( int i = 0; i < cols - 4; i++ ) // 5th row
m.setElement( 5, i, value++ );
m.setElement( 6, 0, value++ ); // 6th row
m.setElement( 7, 0, value++ ); // 7th row
for( int i = 0; i < cols - 1; i++ ) // 8th row
m.setElement( 8, i, value++ );
m.setElement( 9, 5, value++ ); // 9th row
}
template< typename Matrix >
void checkUnevenRowSizeMatrix( Matrix& m )
{
ASSERT_EQ( m.getRows(), 10 );
ASSERT_EQ( m.getColumns(), 6 );
EXPECT_EQ( m.getElement( 0, 0 ), 1 );
EXPECT_EQ( m.getElement( 0, 1 ), 2 );
EXPECT_EQ( m.getElement( 0, 2 ), 0 );
EXPECT_EQ( m.getElement( 0, 3 ), 0 );
EXPECT_EQ( m.getElement( 0, 4 ), 0 );
EXPECT_EQ( m.getElement( 0, 5 ), 0);
EXPECT_EQ( m.getElement( 1, 0 ), 0 );
EXPECT_EQ( m.getElement( 1, 1 ), 0 );
EXPECT_EQ( m.getElement( 1, 2 ), 0 );
EXPECT_EQ( m.getElement( 1, 3 ), 3 );
EXPECT_EQ( m.getElement( 1, 4 ), 4 );
EXPECT_EQ( m.getElement( 1, 5 ), 5 );
EXPECT_EQ( m.getElement( 2, 0 ), 6 );
EXPECT_EQ( m.getElement( 2, 1 ), 7 );
EXPECT_EQ( m.getElement( 2, 2 ), 8 );
EXPECT_EQ( m.getElement( 2, 3 ), 0 );
EXPECT_EQ( m.getElement( 2, 4 ), 0 );
EXPECT_EQ( m.getElement( 2, 5 ), 0 );
EXPECT_EQ( m.getElement( 3, 0 ), 0 );
EXPECT_EQ( m.getElement( 3, 1 ), 9 );
EXPECT_EQ( m.getElement( 3, 2 ), 10 );
EXPECT_EQ( m.getElement( 3, 3 ), 11 );
EXPECT_EQ( m.getElement( 3, 4 ), 12 );
EXPECT_EQ( m.getElement( 3, 5 ), 13 );
EXPECT_EQ( m.getElement( 4, 0 ), 14 );
EXPECT_EQ( m.getElement( 4, 1 ), 15 );
EXPECT_EQ( m.getElement( 4, 2 ), 16 );
EXPECT_EQ( m.getElement( 4, 3 ), 17 );
EXPECT_EQ( m.getElement( 4, 4 ), 18 );
EXPECT_EQ( m.getElement( 4, 5 ), 0 );
EXPECT_EQ( m.getElement( 5, 0 ), 19 );
EXPECT_EQ( m.getElement( 5, 1 ), 20 );
EXPECT_EQ( m.getElement( 5, 2 ), 0 );
EXPECT_EQ( m.getElement( 5, 3 ), 0 );
EXPECT_EQ( m.getElement( 5, 4 ), 0 );
EXPECT_EQ( m.getElement( 5, 5 ), 0 );
EXPECT_EQ( m.getElement( 6, 0 ), 21 );
EXPECT_EQ( m.getElement( 6, 1 ), 0 );
EXPECT_EQ( m.getElement( 6, 2 ), 0 );
EXPECT_EQ( m.getElement( 6, 3 ), 0 );
EXPECT_EQ( m.getElement( 6, 4 ), 0 );
EXPECT_EQ( m.getElement( 6, 5 ), 0 );
EXPECT_EQ( m.getElement( 7, 0 ), 22 );
EXPECT_EQ( m.getElement( 7, 1 ), 0 );
EXPECT_EQ( m.getElement( 7, 2 ), 0 );
EXPECT_EQ( m.getElement( 7, 3 ), 0 );
EXPECT_EQ( m.getElement( 7, 4 ), 0 );
EXPECT_EQ( m.getElement( 7, 5 ), 0 );
EXPECT_EQ( m.getElement( 8, 0 ), 23 );
EXPECT_EQ( m.getElement( 8, 1 ), 24 );
EXPECT_EQ( m.getElement( 8, 2 ), 25 );
EXPECT_EQ( m.getElement( 8, 3 ), 26 );
EXPECT_EQ( m.getElement( 8, 4 ), 27 );
EXPECT_EQ( m.getElement( 8, 5 ), 0 );
EXPECT_EQ( m.getElement( 9, 0 ), 0 );
EXPECT_EQ( m.getElement( 9, 1 ), 0 );
EXPECT_EQ( m.getElement( 9, 2 ), 0 );
EXPECT_EQ( m.getElement( 9, 3 ), 0 );
EXPECT_EQ( m.getElement( 9, 4 ), 0 );
EXPECT_EQ( m.getElement( 9, 5 ), 28 );
}
/*
* Sets up the following 7x6 sparse matrix:
......@@ -35,7 +168,7 @@ using SE_cuda = TNL::Matrices::SlicedEllpack< int, TNL::Devices::Cuda, int, 2 >;
* \ 17 /
*/
template< typename Matrix >
void setupAntiTriDiagMatrix (Matrix& m)
void setupAntiTriDiagMatrix( Matrix& m )
{
const int rows = 7;
const int cols = 6;
......@@ -49,9 +182,9 @@ void setupAntiTriDiagMatrix (Matrix& m)
m.setCompressedRowLengths( rowLengths );
int value = 1;
for ( int i = 0; i < rows; i++ )
for ( int j = cols - 1; j > 2; j-- )
if ( j - i + 1 < cols && j - i + 1 >= 0 )
for( int i = 0; i < rows; i++ )
for( int j = cols - 1; j > 2; j-- )
if( j - i + 1 < cols && j - i + 1 >= 0 )
m.setElement( i, j - i + 1, value++ );
}
......@@ -209,6 +342,10 @@ void testCopyAssignment()
// Matrix1 m11;
// setupAntiTriDiagMatrix( m11 );
// checkAntiTriDiagMatrix( m11 );
// Matrix1 m111;
// setupUnevenRowSizeMatrix( m111 );
// checkUnevenRowSizeMatrix( m111 );
Matrix2 m2;
m2 = m1;
......@@ -217,6 +354,10 @@ void testCopyAssignment()
// Matrix2 m22;
// m22 = m11;
// checkAntiTriDiagMatrix( m22 );
// Matrix2 m222;
// m222 = m111;
// checkUnevenRowSizeMatrix( m222 );
}
template< typename Matrix1, typename Matrix2 >
......@@ -229,6 +370,10 @@ void testConversion()
// Matrix1 m11;
// setupAntiTriDiagMatrix( m11 );
// checkAntiTriDiagMatrix( m11 );
// Matrix1 m111;
// setupUnevenRowSizeMatrix( m111 );
// checkUnevenRowSizeMatrix( m111 );
Matrix2 m2;
TNL::Matrices::copySparseMatrix( m2, m1 );
......@@ -237,6 +382,10 @@ void testConversion()
// Matrix2 m22;
// TNL::Matrices::copySparseMatrix( m22, m11 );
// checkAntiTriDiagMatrix( m22 );
// Matrix2 m222;
// TNL::Matrices::copySparseMatrix( m222, m111 );
// checkUnevenRowSizeMatrix( m222 );
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment