//================================================================================================== /* ROTGEN - Runtime Overlay for Eigen Copyright : CODE RECKONS SPDX-License-Identifier: BSL-1.0 */ //================================================================================================== #include #include "unit/tests.hpp" #include template void check_size_properties() { TTS_CONSTEXPR_EQUAL(RType::RowsAtCompileTime, EType::RowsAtCompileTime) << tts::typename_ << " vs " << tts::typename_ << "\n"; TTS_CONSTEXPR_EQUAL(RType::ColsAtCompileTime, EType::ColsAtCompileTime) << tts::typename_ << " vs " << tts::typename_ << "\n"; TTS_CONSTEXPR_EQUAL(RType::MaxRowsAtCompileTime, EType::MaxRowsAtCompileTime) << tts::typename_ << " vs " << tts::typename_ << "\n"; TTS_CONSTEXPR_EQUAL(RType::MaxColsAtCompileTime, EType::MaxColsAtCompileTime) << tts::typename_ << " vs " << tts::typename_ << "\n"; TTS_CONSTEXPR_EQUAL(RType::IsVectorAtCompileTime, EType::IsVectorAtCompileTime) << tts::typename_ << " vs " << tts::typename_ << "\n"; TTS_CONSTEXPR_EQUAL(RType::InnerStrideAtCompileTime, EType::InnerStrideAtCompileTime) << tts::typename_ << " vs " << tts::typename_ << "\n"; TTS_CONSTEXPR_EQUAL(RType::OuterStrideAtCompileTime, EType::OuterStrideAtCompileTime) << tts::typename_ << " vs " << tts::typename_ << "\n"; } TTS_CASE("Compile-Time informations conformance w/r to Eigen - matrix") { using namespace rotgen; using namespace Eigen; check_size_properties(); check_size_properties, Matrix>(); check_size_properties, Matrix>(); check_size_properties(); check_size_properties, Matrix>(); check_size_properties(); check_size_properties, Matrix>(); // RowMajor / ColMajor { TTS_CONSTEXPR_EQUAL(matrixXf::IsRowMajor, MatrixXf::IsRowMajor); TTS_CONSTEXPR_EQUAL((matrix::IsRowMajor), (Matrix::IsRowMajor)); TTS_CONSTEXPR_EQUAL((matrix::IsRowMajor), (Matrix::IsRowMajor)); TTS_CONSTEXPR_EQUAL((matrix::IsRowMajor), (Matrix::IsRowMajor)); TTS_CONSTEXPR_EQUAL((matrix::IsRowMajor), (Matrix::IsRowMajor)); TTS_CONSTEXPR_EQUAL(row_vectorXf::IsRowMajor, RowVectorXf::IsRowMajor); TTS_CONSTEXPR_EQUAL((matrix::IsRowMajor), (Matrix::IsRowMajor)); TTS_CONSTEXPR_EQUAL(vectorXf::IsRowMajor, VectorXf::IsRowMajor); } }; TTS_CASE("Compile-Time informations conformance w/r to Eigen - map") { using namespace rotgen; using namespace Eigen; check_size_properties, Map>(); check_size_properties>, Map>>(); check_size_properties>, Map>>(); check_size_properties>, Map>>(); check_size_properties, Map>(); check_size_properties>, Map>>(); check_size_properties, Map>(); check_size_properties>, Map>>(); // Row/Col Major { TTS_CONSTEXPR_EQUAL((map::IsRowMajor), (Map::IsRowMajor)); TTS_CONSTEXPR_EQUAL( (map>::IsRowMajor), (Map>::IsRowMajor)); TTS_CONSTEXPR_EQUAL( (map>::IsRowMajor), (Map>::IsRowMajor)); TTS_CONSTEXPR_EQUAL((map::IsRowMajor), (Map::IsRowMajor)); TTS_CONSTEXPR_EQUAL((map::IsRowMajor), (Map::IsRowMajor)); TTS_CONSTEXPR_EQUAL( (map>::IsRowMajor), (Map>::IsRowMajor)); TTS_CONSTEXPR_EQUAL( (map>::IsRowMajor), (Map>::IsRowMajor)); TTS_CONSTEXPR_EQUAL( (map>::IsRowMajor), (Map>::IsRowMajor)); TTS_CONSTEXPR_EQUAL( (map>::IsRowMajor), (Map>::IsRowMajor)); } }; TTS_CASE("Compile-Time informations conformance w/r to Eigen - block") { using namespace rotgen; using namespace Eigen; check_size_properties, Block>(); check_size_properties>, Block>>(); check_size_properties, Block>(); check_size_properties, 3, 6>, Block, 3, 6>>(); check_size_properties, Block>(); check_size_properties, 1, 6>, Block, 1, 6>>(); check_size_properties, Block>(); check_size_properties, 7, 1>, Block, 7, 1>>(); check_size_properties>, Block>>(); check_size_properties>>, Block>>>(); check_size_properties, 3, 6>, Block, 3, 6>>(); check_size_properties>, 3, 6>, Block>, 3, 6>>(); check_size_properties, 1, 6>, Block, 1, 6>>(); check_size_properties>, 1, 6>, Block>, 1, 6>>(); check_size_properties, 7, 1>, Block, 7, 1>>(); check_size_properties>, 7, 1>, Block>, 7, 1>>(); // Row/Col Major { TTS_CONSTEXPR_EQUAL((block::IsRowMajor), (Block::IsRowMajor)); TTS_CONSTEXPR_EQUAL((block::IsRowMajor), (Block::IsRowMajor)); TTS_CONSTEXPR_EQUAL((block::IsRowMajor), (Block::IsRowMajor)); TTS_CONSTEXPR_EQUAL( (block>::IsRowMajor), (Block>::IsRowMajor)); TTS_CONSTEXPR_EQUAL( (block>::IsRowMajor), (Block>::IsRowMajor)); TTS_CONSTEXPR_EQUAL((block::IsRowMajor), (Block::IsRowMajor)); TTS_CONSTEXPR_EQUAL((block::IsRowMajor), (Block::IsRowMajor)); TTS_CONSTEXPR_EQUAL((block::IsRowMajor), (Block::IsRowMajor)); TTS_CONSTEXPR_EQUAL((block::IsRowMajor), (Block::IsRowMajor)); } }; TTS_CASE("Compile-Time informations conformance w/r to Eigen - ref") { using namespace rotgen; using namespace Eigen; check_size_properties, Ref>(); check_size_properties>, Ref>>(); check_size_properties>, Ref>>(); check_size_properties, Ref>(); check_size_properties>, Ref>>(); check_size_properties, Ref>(); check_size_properties>, Ref>>(); // Row/Col Major { TTS_CONSTEXPR_EQUAL((ref::IsRowMajor), (Ref::IsRowMajor)); TTS_CONSTEXPR_EQUAL( (ref>::IsRowMajor), (Ref>::IsRowMajor)); TTS_CONSTEXPR_EQUAL( (ref>::IsRowMajor), (Ref>::IsRowMajor)); TTS_CONSTEXPR_EQUAL((ref::IsRowMajor), (Ref::IsRowMajor)); TTS_CONSTEXPR_EQUAL((ref::IsRowMajor), (Ref::IsRowMajor)); TTS_CONSTEXPR_EQUAL( (ref>::IsRowMajor), (Ref>::IsRowMajor)); TTS_CONSTEXPR_EQUAL( (ref>::IsRowMajor), (Ref>::IsRowMajor)); TTS_CONSTEXPR_EQUAL( (ref>::IsRowMajor), (Ref>::IsRowMajor)); TTS_CONSTEXPR_EQUAL( (ref>::IsRowMajor), (Ref>::IsRowMajor)); } };