From 0bdbcddc19acb64334b29b7252442dc27c51e1aa Mon Sep 17 00:00:00 2001
From: Lukas Cejka <lukas.ostatek@gmail.com>
Date: Mon, 29 Oct 2018 18:09:11 +0100
Subject: [PATCH] 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.

---
 src/UnitTests/Matrices/SparseMatrixCopyTest.h | 111 ++++++++++++++++--
 1 file changed, 103 insertions(+), 8 deletions(-)

diff --git a/src/UnitTests/Matrices/SparseMatrixCopyTest.h b/src/UnitTests/Matrices/SparseMatrixCopyTest.h
index a11a8b4442..78b67ea032 100644
--- a/src/UnitTests/Matrices/SparseMatrixCopyTest.h
+++ b/src/UnitTests/Matrices/SparseMatrixCopyTest.h
@@ -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 );
 }
 
 
-- 
GitLab