From 77e2d50f0ac59b7f18fa68bbb49fad1ac11ab54a Mon Sep 17 00:00:00 2001 From: Alex Bilger Date: Thu, 5 Feb 2026 13:51:47 +0100 Subject: [PATCH 1/2] [Type] Add unit tests for matrix default constructors --- Sofa/framework/Type/test/MatTypes_test.cpp | 65 ++++++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/Sofa/framework/Type/test/MatTypes_test.cpp b/Sofa/framework/Type/test/MatTypes_test.cpp index 4fd3decb4d6..3751df0fd78 100644 --- a/Sofa/framework/Type/test/MatTypes_test.cpp +++ b/Sofa/framework/Type/test/MatTypes_test.cpp @@ -33,6 +33,71 @@ using namespace sofa::type; using namespace sofa::helper; using namespace sofa::defaulttype; +template +class MatTest : public ::testing::Test +{ +public: + void checkDefaultConstructorDefaultInitialization() + { + MatrixType A; + checkZero(A); + } + + void checkDefaultConstructorValueInitialization() + { + MatrixType A{}; + checkZero(A); + } + +protected: + void checkZero(const MatrixType& A) + { + for (sofa::Size i = 0; i < MatrixType::nbLines; ++i) + { + for (sofa::Size j = 0; j < MatrixType::nbCols; ++j) + { + static constexpr typename MatrixType::Real zero{}; + EXPECT_EQ(A(i, j), zero); + } + } + } +}; + +using MyTypes = ::testing::Types< + sofa::type::Mat<1, 1, SReal>, + sofa::type::Mat<1, 2, SReal>, + sofa::type::Mat<2, 1, SReal>, + sofa::type::Mat<2, 2, SReal>, + sofa::type::Mat<3, 3, SReal>, + sofa::type::Mat<4, 4, SReal>, + sofa::type::Mat<12, 12, SReal>, + + sofa::type::Mat<1, 1, int>, + sofa::type::Mat<1, 2, int>, + sofa::type::Mat<2, 1, int>, + sofa::type::Mat<2, 2, int>, + sofa::type::Mat<3, 3, int>, + sofa::type::Mat<4, 4, int>, + sofa::type::Mat<12, 12, int>, + + sofa::type::Mat<1, 1, unsigned int>, + sofa::type::Mat<1, 2, unsigned int>, + sofa::type::Mat<2, 1, unsigned int>, + sofa::type::Mat<2, 2, unsigned int>, + sofa::type::Mat<3, 3, unsigned int>, + sofa::type::Mat<4, 4, unsigned int>, + sofa::type::Mat<12, 12, unsigned int> + >; +TYPED_TEST_SUITE(MatTest, MyTypes); +TYPED_TEST(MatTest, checkDefaultConstructorDefaultInitialization) +{ + this->checkDefaultConstructorDefaultInitialization(); +} +TYPED_TEST(MatTest, checkDefaultConstructorValueInitialization) +{ + this->checkDefaultConstructorValueInitialization(); +} + TEST(MatTypesTest, initializerListConstructors) { static constexpr sofa::type::Mat<3, 3, int> A { From 26e870f4f0abaa1439d3ad4c0e23317d78d048d6 Mon Sep 17 00:00:00 2001 From: Alex Bilger Date: Fri, 6 Feb 2026 08:19:53 +0100 Subject: [PATCH 2/2] Test double and float Co-authored-by: Frederick Roy --- Sofa/framework/Type/test/MatTypes_test.cpp | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/Sofa/framework/Type/test/MatTypes_test.cpp b/Sofa/framework/Type/test/MatTypes_test.cpp index 3751df0fd78..a763777bb94 100644 --- a/Sofa/framework/Type/test/MatTypes_test.cpp +++ b/Sofa/framework/Type/test/MatTypes_test.cpp @@ -64,13 +64,21 @@ class MatTest : public ::testing::Test }; using MyTypes = ::testing::Types< - sofa::type::Mat<1, 1, SReal>, - sofa::type::Mat<1, 2, SReal>, - sofa::type::Mat<2, 1, SReal>, - sofa::type::Mat<2, 2, SReal>, - sofa::type::Mat<3, 3, SReal>, - sofa::type::Mat<4, 4, SReal>, - sofa::type::Mat<12, 12, SReal>, + sofa::type::Mat<1, 1, float>, + sofa::type::Mat<1, 2, float>, + sofa::type::Mat<2, 1, float>, + sofa::type::Mat<2, 2, float>, + sofa::type::Mat<3, 3, float>, + sofa::type::Mat<4, 4, float>, + sofa::type::Mat<12, 12, float>, + + sofa::type::Mat<1, 1, double>, + sofa::type::Mat<1, 2, double>, + sofa::type::Mat<2, 1, double>, + sofa::type::Mat<2, 2, double>, + sofa::type::Mat<3, 3, double>, + sofa::type::Mat<4, 4, double>, + sofa::type::Mat<12, 12, double>, sofa::type::Mat<1, 1, int>, sofa::type::Mat<1, 2, int>,