diff --git a/Sofa/framework/Helper/test/accessor/ReadAccessor.cpp b/Sofa/framework/Helper/test/accessor/ReadAccessor.cpp index dc370da123a..07ed67193fd 100644 --- a/Sofa/framework/Helper/test/accessor/ReadAccessor.cpp +++ b/Sofa/framework/Helper/test/accessor/ReadAccessor.cpp @@ -23,6 +23,9 @@ #include #include +#include +#include +#include namespace sofa { @@ -46,8 +49,31 @@ TEST(ReadAccessor, VectorTypes) EXPECT_EQ(accessor.size(), vector.size()); EXPECT_EQ(accessor.empty(), vector.empty()); EXPECT_EQ(accessor.begin(), vector.begin()); - EXPECT_EQ(accessor.end(), vector.end()); + EXPECT_EQ(accessor.end(), vector.end()); } +template +class ReadAccessorFixedArray_test : public ::testing::Test +{ +public: + ReadAccessorFixedArray_test() = default; + + const FixedArrayType m_array{}; +}; + +using FixedArrayTypes = ::testing::Types < + sofa::type::fixed_array, sofa::type::Vec < 2, float >, sofa::type::Mat<3, 3>>; + +TYPED_TEST_SUITE(ReadAccessorFixedArray_test, FixedArrayTypes); + +TYPED_TEST(ReadAccessorFixedArray_test, tests ) +{ + sofa::helper::ReadAccessor accessor(this->m_array); + + EXPECT_EQ(TypeParam::static_size, accessor.size()); + EXPECT_EQ(this->m_array.size(), accessor.size()); + EXPECT_EQ(accessor.begin(), this->m_array.begin()); + EXPECT_EQ(accessor.end(), this->m_array.end()); +} } diff --git a/Sofa/framework/Helper/test/accessor/WriteAccessor.cpp b/Sofa/framework/Helper/test/accessor/WriteAccessor.cpp index 9208d271ee1..a2b19f23303 100644 --- a/Sofa/framework/Helper/test/accessor/WriteAccessor.cpp +++ b/Sofa/framework/Helper/test/accessor/WriteAccessor.cpp @@ -23,6 +23,9 @@ #include #include +#include +#include +#include #include namespace sofa @@ -104,5 +107,45 @@ TEST(WriteAccessor, VectorTypes) EXPECT_EQ(pairVector.front().aString, std::string{"hello"}); } +template +class WriteAccessorFixedArray_test : public ::testing::Test +{ +public: + WriteAccessorFixedArray_test() = default; + + FixedArrayType m_array{}; +}; + +using FixedArrayTypes = ::testing::Types < + sofa::type::fixed_array, sofa::type::Vec < 2, float >, sofa::type::Mat<3, 3>>; + +TYPED_TEST_SUITE(WriteAccessorFixedArray_test, FixedArrayTypes); + +TYPED_TEST(WriteAccessorFixedArray_test, tests ) +{ + sofa::helper::WriteAccessor accessor(this->m_array); + + EXPECT_EQ(TypeParam::static_size, accessor.size()); + EXPECT_EQ(this->m_array.size(), accessor.size()); + EXPECT_EQ(accessor.begin(), this->m_array.begin()); + EXPECT_EQ(accessor.end(), this->m_array.end()); + + auto copy = this->m_array; + if constexpr (std::is_scalar_vm_array[0])>::type>) + { + constexpr auto increment = static_castm_array[0])>::type>(1); + for(auto& v : accessor) + { + v = v + increment; + } + + for(typename TypeParam::size_type i = 0 ; i < accessor.size() ; i++) + { + EXPECT_EQ(accessor[i], copy[i]+increment); + } + } + +} + }