diff --git a/src/UnitTests/Matrices/SparseMatrixTest.h b/src/UnitTests/Matrices/SparseMatrixTest.h index 3c182e7eecc75c44dfd96f65502656437fd01b82..043a4c88c4f3de450d2b5bc144d13b8d48427299 100644 --- a/src/UnitTests/Matrices/SparseMatrixTest.h +++ b/src/UnitTests/Matrices/SparseMatrixTest.h @@ -71,6 +71,10 @@ #include <TNL/Matrices/Ellpack.h> #include <TNL/Matrices/SlicedEllpack.h> +#include <TNL/Matrices/ChunkedEllpack.h> +#include <TNL/Matrices/AdEllpack.h> +#include <TNL/Matrices/BiEllpack.h> + #include <TNL/Containers/Vector.h> #include <TNL/Containers/VectorView.h> #include <TNL/Math.h> @@ -840,6 +844,117 @@ void test_Print() EXPECT_EQ( printed.str(), couted.str() ); } +// test fixture for typed tests +template< typename Matrix > +class CHEllpackMatrixTest : public ::testing::Test +{ +protected: + using CHEllpackMatrixType = Matrix; +}; + +// types for which MatrixTest is instantiated +using CHEllpackMatrixTypes = ::testing::Types +< + TNL::Matrices::ChunkedEllpack< int, TNL::Devices::Host, short >, + TNL::Matrices::ChunkedEllpack< long, TNL::Devices::Host, short >, + TNL::Matrices::ChunkedEllpack< float, TNL::Devices::Host, short >, + TNL::Matrices::ChunkedEllpack< double, TNL::Devices::Host, short >, + TNL::Matrices::ChunkedEllpack< int, TNL::Devices::Host, int >, + TNL::Matrices::ChunkedEllpack< long, TNL::Devices::Host, int >, + TNL::Matrices::ChunkedEllpack< float, TNL::Devices::Host, int >, + TNL::Matrices::ChunkedEllpack< double, TNL::Devices::Host, int >, + TNL::Matrices::ChunkedEllpack< int, TNL::Devices::Host, long >, + TNL::Matrices::ChunkedEllpack< long, TNL::Devices::Host, long >, + TNL::Matrices::ChunkedEllpack< float, TNL::Devices::Host, long >, + TNL::Matrices::ChunkedEllpack< double, TNL::Devices::Host, long >, +#ifdef HAVE_CUDA + TNL::Matrices::ChunkedEllpack< int, TNL::Devices::Cuda, short >, + TNL::Matrices::ChunkedEllpack< long, TNL::Devices::Cuda, short >, + TNL::Matrices::ChunkedEllpack< float, TNL::Devices::Cuda, short >, + TNL::Matrices::ChunkedEllpack< double, TNL::Devices::Cuda, short >, + TNL::Matrices::ChunkedEllpack< int, TNL::Devices::Cuda, int >, + TNL::Matrices::ChunkedEllpack< long, TNL::Devices::Cuda, int >, + TNL::Matrices::ChunkedEllpack< float, TNL::Devices::Cuda, int >, + TNL::Matrices::ChunkedEllpack< double, TNL::Devices::Cuda, int >, + TNL::Matrices::ChunkedEllpack< int, TNL::Devices::Cuda, long >, + TNL::Matrices::ChunkedEllpack< long, TNL::Devices::Cuda, long >, + TNL::Matrices::ChunkedEllpack< float, TNL::Devices::Cuda, long >, + TNL::Matrices::ChunkedEllpack< double, TNL::Devices::Cuda, long > +#endif +>; + +TYPED_TEST_CASE( CHEllpackMatrixTest, CHEllpackMatrixTypes); + +TYPED_TEST( CHEllpackMatrixTest, setDimensionsTest ) +{ + using CHEllpackMatrixType = typename TestFixture::CHEllpackMatrixType; + + test_SetDimensions< CHEllpackMatrixType >(); +} + +TYPED_TEST( CHEllpackMatrixTest, setCompressedRowLengthsTest ) +{ + using CHEllpackMatrixType = typename TestFixture::CHEllpackMatrixType; + + test_SetCompressedRowLengths< CHEllpackMatrixType >(); +} + +TYPED_TEST( CHEllpackMatrixTest, setLikeTest ) +{ + using CHEllpackMatrixType = typename TestFixture::CHEllpackMatrixType; + + test_SetLike< CHEllpackMatrixType, CHEllpackMatrixType >(); +} + +TYPED_TEST( CHEllpackMatrixTest, resetTest ) +{ + using CHEllpackMatrixType = typename TestFixture::CHEllpackMatrixType; + + test_Reset< CHEllpackMatrixType >(); +} + +TYPED_TEST( CHEllpackMatrixTest, setElementTest ) +{ + using CHEllpackMatrixType = typename TestFixture::CHEllpackMatrixType; + + test_SetElement< CHEllpackMatrixType >(); +} + +TYPED_TEST( CHEllpackMatrixTest, addElementTest ) +{ + using CHEllpackMatrixType = typename TestFixture::CHEllpackMatrixType; + + test_AddElement< CHEllpackMatrixType >(); +} + +TYPED_TEST( CHEllpackMatrixTest, setRowTest ) +{ + using CHEllpackMatrixType = typename TestFixture::CHEllpackMatrixType; + + test_SetRow< CHEllpackMatrixType >(); +} + +TYPED_TEST( CHEllpackMatrixTest, vectorProductTest ) +{ + using CHEllpackMatrixType = typename TestFixture::CHEllpackMatrixType; + + test_VectorProduct< CHEllpackMatrixType >(); +} + +TYPED_TEST( CHEllpackMatrixTest, saveAndLoadTest ) +{ + using CHEllpackMatrixType = typename TestFixture::CHEllpackMatrixType; + + test_SaveAndLoad< CHEllpackMatrixType >(); +} + +TYPED_TEST( CHEllpackMatrixTest, printTest ) +{ + using CHEllpackMatrixType = typename TestFixture::CHEllpackMatrixType; + + test_Print< CHEllpackMatrixType >(); +} + // test fixture for typed tests template< typename Matrix > class CSRMatrixTest : public ::testing::Test @@ -893,10 +1008,6 @@ TYPED_TEST( CSRMatrixTest, setCompressedRowLengthsTest ) using CSRMatrixType = typename TestFixture::CSRMatrixType; test_SetCompressedRowLengths< CSRMatrixType >(); -// bool testRan = false; -// EXPECT_TRUE( testRan ); -// std::cout << "\n\n THIS TEST DID NOT RUN!\n"; -// std::cout << "\n This method isn't testable for different forMats, their implementations differ based on their algorithm.\n\n"; } TYPED_TEST( CSRMatrixTest, setLikeTest ) @@ -955,20 +1066,6 @@ TYPED_TEST( CSRMatrixTest, printTest ) test_Print< CSRMatrixType >(); } -//// test_getType is not general enough yet. DO NOT TEST IT YET. - -//TEST( SparseMatrixTest, CSR_GetTypeTest_Host ) -//{ -// host_test_GetType< CSR_host_float, CSR_host_int >(); -//} -// -//#ifdef HAVE_CUDA -//TEST( SparseMatrixTest, CSR_GetTypeTest_Cuda ) -//{ -// cuda_test_GetType< CSR_cuda_float, CSR_cuda_int >(); -//} -//#endif - // test fixture for typed tests template< typename Matrix > class EllpackMatrixTest : public ::testing::Test