diff --git a/src/UnitTests/Matrices/CMakeLists.txt b/src/UnitTests/Matrices/CMakeLists.txt index 8da67ef6b23be539698becd97a3f4a8af7b6d981..1c536a98210b59789d2a7b34a9b9935150a7e0ac 100644 --- a/src/UnitTests/Matrices/CMakeLists.txt +++ b/src/UnitTests/Matrices/CMakeLists.txt @@ -37,6 +37,9 @@ IF( BUILD_CUDA ) CUDA_ADD_EXECUTABLE( BinarySparseMatrixCopyTest BinarySparseMatrixCopyTest.cu OPTIONS ${CXX_TESTS_FLAGS} ) TARGET_LINK_LIBRARIES( BinarySparseMatrixCopyTest ${GTEST_BOTH_LIBRARIES} ) + CUDA_ADD_EXECUTABLE( SymmetricSparseMatrixTest_CSR SymmetricSparseMatrixTest_CSR.cu OPTIONS ${CXX_TESTS_FLAGS} ) + TARGET_LINK_LIBRARIES( SymmetricSparseMatrixTest_CSR ${GTEST_BOTH_LIBRARIES} ) + ELSE( BUILD_CUDA ) ADD_EXECUTABLE( DenseMatrixTest DenseMatrixTest.cpp ) TARGET_COMPILE_OPTIONS( DenseMatrixTest PRIVATE ${CXX_TESTS_FLAGS} ) @@ -86,6 +89,10 @@ ELSE( BUILD_CUDA ) TARGET_COMPILE_OPTIONS( BinarySparseMatrixCopyTest PRIVATE ${CXX_TESTS_FLAGS} ) TARGET_LINK_LIBRARIES( BinarySparseMatrixCopyTest ${GTEST_BOTH_LIBRARIES} ) + ADD_EXECUTABLE( SymmetricSparseMatrixTest_CSR SymmetricSparseMatrixTest_CSR.cpp ) + TARGET_COMPILE_OPTIONS( SymmetricSparseMatrixTest_CSR PRIVATE ${CXX_TESTS_FLAGS} ) + TARGET_LINK_LIBRARIES( SymmetricSparseMatrixTest_CSR ${GTEST_BOTH_LIBRARIES} ) + ENDIF( BUILD_CUDA ) ADD_TEST( DenseMatrixTest ${EXECUTABLE_OUTPUT_PATH}/DenseMatrixTest${CMAKE_EXECUTABLE_SUFFIX} ) @@ -100,6 +107,7 @@ ADD_TEST( BinarySparseMatrixTest_CSR ${EXECUTABLE_OUTPUT_PATH}/BinarySparseMatri ADD_TEST( BinarySparseMatrixTest_Ellpack ${EXECUTABLE_OUTPUT_PATH}/BinarySparseMatrixTest_Ellpack${CMAKE_EXECUTABLE_SUFFIX} ) ADD_TEST( BinarySparseMatrixTest_SlicedEllpack ${EXECUTABLE_OUTPUT_PATH}/BinarySparseMatrixTest_SlicedEllpack${CMAKE_EXECUTABLE_SUFFIX} ) ADD_TEST( BinarySparseMatrixCopyTest ${EXECUTABLE_OUTPUT_PATH}/BinarySparseMatrixCopyTest${CMAKE_EXECUTABLE_SUFFIX} ) +ADD_TEST( SymmetricSparseMatrixTest_CSR ${EXECUTABLE_OUTPUT_PATH}/SymmetricSparseMatrixTest_CSR${CMAKE_EXECUTABLE_SUFFIX} ) if( ${BUILD_MPI} ) if( BUILD_CUDA ) diff --git a/src/UnitTests/Matrices/SymmetricSparseMatrixTest.h b/src/UnitTests/Matrices/SymmetricSparseMatrixTest.h new file mode 100644 index 0000000000000000000000000000000000000000..659f555c3e5e226aa1256dd89f139d5ffcf64e55 --- /dev/null +++ b/src/UnitTests/Matrices/SymmetricSparseMatrixTest.h @@ -0,0 +1,114 @@ +/*************************************************************************** + SymmetricSparseMatrixTest.h - description + ------------------- + begin : Feb 11, 2020 + copyright : (C) 2020 by Tomas Oberhuber et al. + email : tomas.oberhuber@fjfi.cvut.cz + ***************************************************************************/ + +/* See Copyright Notice in tnl/Copyright */ + +#ifdef HAVE_GTEST +#include <gtest/gtest.h> +#include <iostream> +#include <TNL/Matrices/SparseMatrix.h> +#include "SparseMatrixTest.hpp" + +// test fixture for typed tests +template< typename Matrix > +class MatrixTest : public ::testing::Test +{ +protected: + using MatrixType = Matrix; +}; + +TYPED_TEST_SUITE( MatrixTest, MatrixTypes); + +TYPED_TEST( MatrixTest, Constructors ) +{ + using MatrixType = typename TestFixture::MatrixType; + + test_Constructors< MatrixType >(); +} + +TYPED_TEST( MatrixTest, setDimensionsTest ) +{ + using MatrixType = typename TestFixture::MatrixType; + + test_SetDimensions< MatrixType >(); +} + +TYPED_TEST( MatrixTest, setCompressedRowLengthsTest ) +{ + using MatrixType = typename TestFixture::MatrixType; + + test_SetCompressedRowLengths< MatrixType >(); +} + +TYPED_TEST( MatrixTest, setLikeTest ) +{ + using MatrixType = typename TestFixture::MatrixType; + + test_SetLike< MatrixType, MatrixType >(); +} + +TYPED_TEST( MatrixTest, resetTest ) +{ + using MatrixType = typename TestFixture::MatrixType; + + test_Reset< MatrixType >(); +} + +TYPED_TEST( MatrixTest, getRowTest ) +{ + using MatrixType = typename TestFixture::MatrixType; + + test_GetRow< MatrixType >(); +} + + +TYPED_TEST( MatrixTest, setElementTest ) +{ + using MatrixType = typename TestFixture::MatrixType; + + test_SetElement< MatrixType >(); +} + +TYPED_TEST( MatrixTest, addElementTest ) +{ + using MatrixType = typename TestFixture::MatrixType; + + test_AddElement< MatrixType >(); +} + +TYPED_TEST( MatrixTest, vectorProductTest ) +{ + using MatrixType = typename TestFixture::MatrixType; + + test_VectorProduct< MatrixType >(); +} + +TYPED_TEST( MatrixTest, rowsReduction ) +{ + using MatrixType = typename TestFixture::MatrixType; + + test_RowsReduction< MatrixType >(); +} + +TYPED_TEST( MatrixTest, saveAndLoadTest ) +{ + using MatrixType = typename TestFixture::MatrixType; + + test_SaveAndLoad< MatrixType >( saveAndLoadTestFileName ); +} + +TYPED_TEST( MatrixTest, printTest ) +{ + using MatrixType = typename TestFixture::MatrixType; + + test_Print< MatrixType >(); +} + +#endif + +#include "../main.h" diff --git a/src/UnitTests/Matrices/SymmetricSparseMatrixTest_CSR.cpp b/src/UnitTests/Matrices/SymmetricSparseMatrixTest_CSR.cpp new file mode 100644 index 0000000000000000000000000000000000000000..c23fa4242090ca3c441df81f4fbd6b1583b833d2 --- /dev/null +++ b/src/UnitTests/Matrices/SymmetricSparseMatrixTest_CSR.cpp @@ -0,0 +1,11 @@ +/*************************************************************************** + SymmetricSparseMatrixTest_CSR.cpp - description + ------------------- + begin : Feb 11, 2020 + copyright : (C) 2020 by Tomas Oberhuber et al. + email : tomas.oberhuber@fjfi.cvut.cz + ***************************************************************************/ + +/* See Copyright Notice in tnl/Copyright */ + +#include "SymmetricSparseMatrixTest_CSR.h" diff --git a/src/UnitTests/Matrices/SymmetricSparseMatrixTest_CSR.cu b/src/UnitTests/Matrices/SymmetricSparseMatrixTest_CSR.cu new file mode 100644 index 0000000000000000000000000000000000000000..df1d83da0e08cefc0bc314e01ec216bda1905f4a --- /dev/null +++ b/src/UnitTests/Matrices/SymmetricSparseMatrixTest_CSR.cu @@ -0,0 +1,11 @@ +/*************************************************************************** + SymmetricSparseMatrixTest_CSR.cu - description + ------------------- + begin : Feb 11, 2020 + copyright : (C) 2020 by Tomas Oberhuber et al. + email : tomas.oberhuber@fjfi.cvut.cz + ***************************************************************************/ + +/* See Copyright Notice in tnl/Copyright */ + +#include "SymmetricSparseMatrixTest_CSR.h" diff --git a/src/UnitTests/Matrices/SymmetricSparseMatrixTest_CSR.h b/src/UnitTests/Matrices/SymmetricSparseMatrixTest_CSR.h new file mode 100644 index 0000000000000000000000000000000000000000..bbb6c66cb604a17bc415ea64d582b3eaec2ea304 --- /dev/null +++ b/src/UnitTests/Matrices/SymmetricSparseMatrixTest_CSR.h @@ -0,0 +1,61 @@ +/*************************************************************************** + SymmetricSparseMatrixTest_CSR.h - description + ------------------- + begin : Feb 11, 2020 + copyright : (C) 2020 by Tomas Oberhuber et al. + email : tomas.oberhuber@fjfi.cvut.cz + ***************************************************************************/ + +/* See Copyright Notice in tnl/Copyright */ + +#ifdef HAVE_GTEST +#include <gtest/gtest.h> +#include <TNL/Containers/Segments/CSR.h> +#include <TNL/Matrices/SparseMatrix.h> + +// test fixture for typed tests +template< typename Matrix > +class MatrixTest : public ::testing::Test +{ +protected: + using MatrixType = Matrix; +}; + +// types for which MatrixTest is instantiated +using MatrixTypes = ::testing::Types +< + TNL::Matrices::SparseMatrix< int, TNL::Devices::Host, short, TNL::Matrices::SymmetricMatrix, TNL::Containers::Segments::CSR >, + TNL::Matrices::SparseMatrix< long, TNL::Devices::Host, short, TNL::Matrices::SymmetricMatrix, TNL::Containers::Segments::CSR >, + TNL::Matrices::SparseMatrix< float, TNL::Devices::Host, short, TNL::Matrices::SymmetricMatrix, TNL::Containers::Segments::CSR >, + TNL::Matrices::SparseMatrix< double, TNL::Devices::Host, short, TNL::Matrices::SymmetricMatrix, TNL::Containers::Segments::CSR >, + TNL::Matrices::SparseMatrix< int, TNL::Devices::Host, int, TNL::Matrices::SymmetricMatrix, TNL::Containers::Segments::CSR >, + TNL::Matrices::SparseMatrix< long, TNL::Devices::Host, int, TNL::Matrices::SymmetricMatrix, TNL::Containers::Segments::CSR >, + TNL::Matrices::SparseMatrix< float, TNL::Devices::Host, int, TNL::Matrices::SymmetricMatrix, TNL::Containers::Segments::CSR >, + TNL::Matrices::SparseMatrix< double, TNL::Devices::Host, int, TNL::Matrices::SymmetricMatrix, TNL::Containers::Segments::CSR >, + TNL::Matrices::SparseMatrix< int, TNL::Devices::Host, long, TNL::Matrices::SymmetricMatrix, TNL::Containers::Segments::CSR >, + TNL::Matrices::SparseMatrix< long, TNL::Devices::Host, long, TNL::Matrices::SymmetricMatrix, TNL::Containers::Segments::CSR >, + TNL::Matrices::SparseMatrix< float, TNL::Devices::Host, long, TNL::Matrices::SymmetricMatrix, TNL::Containers::Segments::CSR >, + TNL::Matrices::SparseMatrix< double, TNL::Devices::Host, long, TNL::Matrices::SymmetricMatrix, TNL::Containers::Segments::CSR > +#ifdef HAVE_CUDA + ,TNL::Matrices::SparseMatrix< int, TNL::Devices::Cuda, short, TNL::Matrices::SymmetricMatrix, TNL::Containers::Segments::CSR >, + TNL::Matrices::SparseMatrix< long, TNL::Devices::Cuda, short, TNL::Matrices::SymmetricMatrix, TNL::Containers::Segments::CSR >, + TNL::Matrices::SparseMatrix< float, TNL::Devices::Cuda, short, TNL::Matrices::SymmetricMatrix, TNL::Containers::Segments::CSR >, + TNL::Matrices::SparseMatrix< double, TNL::Devices::Cuda, short, TNL::Matrices::SymmetricMatrix, TNL::Containers::Segments::CSR >, + TNL::Matrices::SparseMatrix< int, TNL::Devices::Cuda, int, TNL::Matrices::SymmetricMatrix, TNL::Containers::Segments::CSR >, + TNL::Matrices::SparseMatrix< long, TNL::Devices::Cuda, int, TNL::Matrices::SymmetricMatrix, TNL::Containers::Segments::CSR >, + TNL::Matrices::SparseMatrix< float, TNL::Devices::Cuda, int, TNL::Matrices::SymmetricMatrix, TNL::Containers::Segments::CSR >, + TNL::Matrices::SparseMatrix< double, TNL::Devices::Cuda, int, TNL::Matrices::SymmetricMatrix, TNL::Containers::Segments::CSR >, + TNL::Matrices::SparseMatrix< int, TNL::Devices::Cuda, long, TNL::Matrices::SymmetricMatrix, TNL::Containers::Segments::CSR >, + TNL::Matrices::SparseMatrix< long, TNL::Devices::Cuda, long, TNL::Matrices::SymmetricMatrix, TNL::Containers::Segments::CSR >, + TNL::Matrices::SparseMatrix< float, TNL::Devices::Cuda, long, TNL::Matrices::SymmetricMatrix, TNL::Containers::Segments::CSR >, + TNL::Matrices::SparseMatrix< double, TNL::Devices::Cuda, long, TNL::Matrices::SymmetricMatrix, TNL::Containers::Segments::CSR > +#endif // HAVE_CUDA +>; + +const char* saveAndLoadTestFileName "test_SymmetricSparseMatrixTest_CSR_segments"; + +#include "SparseMatrixTest.h" + +#endif // HAVE_GTEST + +#include "../main.h"