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

In SparseMatrixCopyTest.h:

	Changed the name of "setupMatrix" to "setupTriDiagMatrix".
	Added a setup and check for the AntiTrigDiagMatrix.
	Commented out the TriDiagMatrix setups and checks in order to verify the validity of the new AntiTriDiagMatrix.
parent 679d1979
No related branches found
No related tags found
Loading
......@@ -22,6 +22,95 @@ using SE_cuda = TNL::Matrices::SlicedEllpack< int, TNL::Devices::Cuda, int, 2 >;
#ifdef HAVE_GTEST
#include <gtest/gtest.h>
/*
* Sets up the following 7x6 sparse matrix:
*
* / 2 1 \
* | 5 4 3 |
* | 8 7 6 |
* | 11 10 9 |
* | 14 13 12 |
* | 16 15 |
* \ 17 /
*/
template< typename Matrix >
void setupAntiTriDiagMatrix (Matrix& m)
{
const int rows = 7;
const int cols = 6;
m.reset();
m.setDimensions( rows, cols );
typename Matrix::CompressedRowLengthsVector rowLengths;
rowLengths.setSize( rows );
rowLengths.setValue( 3 );
rowLengths.setElement( 0, 4);
rowLengths.setElement( 1, 4 );
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 )
m.setElement( i, j - i + 1, value++ );
}
template< typename Matrix >
void checkAntiTriDiagMatrix( Matrix& m )
{
ASSERT_EQ( m.getRows(), 7 );
ASSERT_EQ( m.getColumns(), 6 );
EXPECT_EQ( m.getElement( 0, 0 ), 0 );
EXPECT_EQ( m.getElement( 0, 1 ), 0 );
EXPECT_EQ( m.getElement( 0, 2 ), 0 );
EXPECT_EQ( m.getElement( 0, 3 ), 0 );
EXPECT_EQ( m.getElement( 0, 4 ), 2 );
EXPECT_EQ( m.getElement( 0, 5 ), 1);
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 ), 5 );
EXPECT_EQ( m.getElement( 1, 4 ), 4 );
EXPECT_EQ( m.getElement( 1, 5 ), 3 );
EXPECT_EQ( m.getElement( 2, 0 ), 0 );
EXPECT_EQ( m.getElement( 2, 1 ), 0 );
EXPECT_EQ( m.getElement( 2, 2 ), 8 );
EXPECT_EQ( m.getElement( 2, 3 ), 7 );
EXPECT_EQ( m.getElement( 2, 4 ), 6 );
EXPECT_EQ( m.getElement( 2, 5 ), 0 );
EXPECT_EQ( m.getElement( 3, 0 ), 0 );
EXPECT_EQ( m.getElement( 3, 1 ), 11 );
EXPECT_EQ( m.getElement( 3, 2 ), 10 );
EXPECT_EQ( m.getElement( 3, 3 ), 9 );
EXPECT_EQ( m.getElement( 3, 4 ), 0 );
EXPECT_EQ( m.getElement( 3, 5 ), 0 );
EXPECT_EQ( m.getElement( 4, 0 ), 14 );
EXPECT_EQ( m.getElement( 4, 1 ), 13 );
EXPECT_EQ( m.getElement( 4, 2 ), 12 );
EXPECT_EQ( m.getElement( 4, 3 ), 0 );
EXPECT_EQ( m.getElement( 4, 4 ), 0 );
EXPECT_EQ( m.getElement( 4, 5 ), 0 );
EXPECT_EQ( m.getElement( 5, 0 ), 16 );
EXPECT_EQ( m.getElement( 5, 1 ), 15 );
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 ), 17 );
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 );
}
/*
* Sets up the following 7x6 sparse matrix:
*
......@@ -34,7 +123,7 @@ using SE_cuda = TNL::Matrices::SlicedEllpack< int, TNL::Devices::Cuda, int, 2 >;
* \ 17 /
*/
template< typename Matrix >
void setupMatrix( Matrix& m )
void setupTriDiagMatrix( Matrix& m )
{
const int rows = 7;
const int cols = 6;
......@@ -55,7 +144,7 @@ void setupMatrix( Matrix& m )
}
template< typename Matrix >
void checkMatrix( Matrix& m )
void checkTriDiagMatrix( Matrix& m )
{
ASSERT_EQ( m.getRows(), 7 );
ASSERT_EQ( m.getColumns(), 6 );
......@@ -114,24 +203,30 @@ template< typename Matrix1, typename Matrix2 >
void testCopyAssignment()
{
Matrix1 m1;
setupMatrix( m1 );
checkMatrix( m1 );
// setupTriDiagMatrix( m1 );
// checkTriDiagMatrix( m1 );
setupAntiTriDiagMatrix( m1 );
checkAntiTriDiagMatrix( m1 );
Matrix2 m2;
m2 = m1;
checkMatrix( m2 );
// checkTriDiagMatrix( m2 );
checkAntiTriDiagMatrix( m2 );
}
template< typename Matrix1, typename Matrix2 >
void testConversion()
{
Matrix1 m1;
setupMatrix( m1 );
checkMatrix( m1 );
// setupTriDiagMatrix( m1 );
// checkTriDiagMatrix( m1 );
setupAntiTriDiagMatrix( m1 );
checkAntiTriDiagMatrix( m1 );
Matrix2 m2;
TNL::Matrices::copySparseMatrix( m2, m1 );
checkMatrix( m2 );
// checkTriDiagMatrix( m2 );
checkAntiTriDiagMatrix( m2 );
}
......
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