//================================================================================================== /* ROTGEN - Runtime Overlay for Eigen Copyright : CODE RECKONS SPDX-License-Identifier: BSL-1.0 */ //================================================================================================== #include "unit/tests.hpp" #include TTS_CASE_TPL("Function size", rotgen::tests::types) ( tts::type< tts::types> ) { T data[] = {1,2,3,4,5,6,7,8,9,10,11,12}; rotgen::map> dyn_map(data,1,12); TTS_EQUAL(dyn_map.rows(), rotgen::Index{1}); TTS_EQUAL(dyn_map.cols(), rotgen::Index{12}); rotgen::map> s112_map(data); TTS_EQUAL(s112_map.rows(), rotgen::Index{1}); TTS_EQUAL(s112_map.cols(), rotgen::Index{12}); TTS_EQUAL(s112_map.size(), rotgen::Index{12}); rotgen::map> s121_map(data); TTS_EQUAL(s121_map.rows(), rotgen::Index{12}); TTS_EQUAL(s121_map.cols(), rotgen::Index{1}); TTS_EQUAL(s121_map.size(), rotgen::Index{12}); rotgen::map> s34_map(data); TTS_EQUAL(s34_map.rows(), rotgen::Index{3}); TTS_EQUAL(s34_map.cols(), rotgen::Index{4}); TTS_EQUAL(s34_map.size(), rotgen::Index{12}); rotgen::map> s62_map(data); TTS_EQUAL(s62_map.rows(), rotgen::Index{6}); TTS_EQUAL(s62_map.cols(), rotgen::Index{2}); TTS_EQUAL(s62_map.size(), rotgen::Index{12}); }; TTS_CASE_TPL("Test coefficient accessors", rotgen::tests::types) ( tts::type< tts::types> ) { using base = rotgen::matrix; T data[] = {1,2,3,4,5,6,7,8,9,10,11,12}; rotgen::map a(data,4,3); for(rotgen::Index i=0;i<4;i++) { for(rotgen::Index j=0;j<3;j++) { if constexpr(O::value) TTS_EQUAL(a(i,j), data[j+3*i]); else TTS_EQUAL(a(i,j), data[i+4*j]); } } a(1, 1) = 42; TTS_EQUAL(a(1,1), 42); T& ref = a(2, 2); ref = 17; TTS_EQUAL(a(2, 2), 17); }; TTS_CASE_TPL("Test one index coefficient accessors", rotgen::tests::types) ( tts::type< tts::types> ) { T data[] = {1,2,3,4,5,6,7,8,9,10,11,12}; auto m = [&]() { if constexpr(O::value == rotgen::ColMajor) { using base = rotgen::matrix; rotgen::map a(data,12); return a; } else { using base = rotgen::matrix; rotgen::map a(data,12); return a; } }(); TTS_EXPECT(m.IsVectorAtCompileTime); for(rotgen::Index i=0;i