Commit 40b73a40 authored by Lukas Cejka's avatar Lukas Cejka Committed by Tomáš Oberhuber
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 55ef8b42
Loading
Loading
Loading
Loading
+153 −4
Original line number Diff line number Diff line
@@ -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:
@@ -210,6 +343,10 @@ void testCopyAssignment()
//   setupAntiTriDiagMatrix( m11 );
//   checkAntiTriDiagMatrix( m11 );
   
//   Matrix1 m111;
//   setupUnevenRowSizeMatrix( m111 );
//   checkUnevenRowSizeMatrix( m111 );

   Matrix2 m2;
   m2 = m1;
   checkTriDiagMatrix( m2 );
@@ -217,6 +354,10 @@ void testCopyAssignment()
//   Matrix2 m22;
//   m22 = m11;
//   checkAntiTriDiagMatrix( m22 );
   
//   Matrix2 m222;
//   m222 = m111;
//   checkUnevenRowSizeMatrix( m222 );
}

template< typename Matrix1, typename Matrix2 >
@@ -230,6 +371,10 @@ void testConversion()
//   setupAntiTriDiagMatrix( m11 );
//   checkAntiTriDiagMatrix( m11 );
   
//   Matrix1 m111;
//   setupUnevenRowSizeMatrix( m111 );
//   checkUnevenRowSizeMatrix( m111 );

   Matrix2 m2;
   TNL::Matrices::copySparseMatrix( m2, m1 );
   checkTriDiagMatrix( m2 );
@@ -237,6 +382,10 @@ void testConversion()
//   Matrix2 m22;
//   TNL::Matrices::copySparseMatrix( m22, m11 );
//   checkAntiTriDiagMatrix( m22 );
   
//   Matrix2 m222;
//   TNL::Matrices::copySparseMatrix( m222, m111 );
//   checkUnevenRowSizeMatrix( m222 );
}