//================================================================================================== /* ROTGEN - Runtime Overlay for Eigen Copyright : CODE RECKONS SPDX-License-Identifier: BSL-1.0 */ //================================================================================================== #include #include "unit/tests.hpp" #include TTS_CASE_TPL("Initialize a matrix with a list of scalars", rotgen::tests::types) (tts::type>) { using eigen_t = Eigen::Matrix; using rotgen_t = rotgen::matrix; eigen_t reference(3, 3); reference << 1, 2, 3, 4, 5, 6, 7, 8, 9; rotgen_t values(3, 3); initialize_with(values, 1, 2, 3, 4, 5, 6, 7, 8, 9); for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) TTS_EQUAL(values(r, c), reference(r, c)); }; TTS_CASE_TPL("Initialize a sub-matrix with a list of scalars", rotgen::tests::types) (tts::type>) { using eigen_t = Eigen::Matrix; using rotgen_t = rotgen::matrix; eigen_t reference(6, 6); reference.block(1, 1, 3, 3) << 1, 2, 3, 4, 5, 6, 7, 8, 9; rotgen_t values(6, 6); initialize_with(extract(values, 1, 1, 3, 3), 1, 2, 3, 4, 5, 6, 7, 8, 9); for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) TTS_EQUAL(values(r + 1, c + 1), reference(r + 1, c + 1)); }; TTS_CASE_TPL("Initialize a map with a list of scalars", rotgen::tests::types) (tts::type>) { using eigen_t = Eigen::Matrix; using rotgen_t = rotgen::matrix; T eigen_data[9] = {}; T rotgen_data[9] = {}; Eigen::Map reference(eigen_data, 3, 3); reference << 1, 2, 3, 4, 5, 6, 7, 8, 9; rotgen::map values(rotgen_data, 3, 3); initialize_with(values, 1, 2, 3, 4, 5, 6, 7, 8, 9); for (int i = 0; i < 9; i++) TTS_EQUAL(eigen_data[i], rotgen_data[i]); }; TTS_CASE_TPL("Initialize a sub-map with a list of scalars", rotgen::tests::types) (tts::type>) { using eigen_t = Eigen::Matrix; using rotgen_t = rotgen::matrix; T eigen_data[36] = {}; T rotgen_data[36] = {}; Eigen::Map reference(eigen_data, 6, 6); reference.block(1, 1, 3, 3) << 1, 2, 3, 4, 5, 6, 7, 8, 9; rotgen::map values(rotgen_data, 6, 6); initialize_with(extract(values, 1, 1, 3, 3), 1, 2, 3, 4, 5, 6, 7, 8, 9); for (int i = 0; i < 9; i++) TTS_EQUAL(eigen_data[i], rotgen_data[i]); }; void process(rotgen::ref r) { rotgen::initialize_with(r, 1, 2, 3, 4, 5, 6, 7, 8, 9); } void process(rotgen::ref r) { rotgen::initialize_with(r, 1, 2, 3, 4, 5, 6, 7, 8, 9); } void process(rotgen::ref> r) { rotgen::initialize_with(r, 1, 2, 3, 4, 5, 6, 7, 8, 9); } void process(rotgen::ref> r) { rotgen::initialize_with(r, 1, 2, 3, 4, 5, 6, 7, 8, 9); } TTS_CASE_TPL("Initialize a ref with a list of scalars", rotgen::tests::types) (tts::type>) { using eigen_t = Eigen::Matrix; using rotgen_t = rotgen::matrix; eigen_t reference(3, 3); reference << 1, 2, 3, 4, 5, 6, 7, 8, 9; rotgen_t values(3, 3); process(values); for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) TTS_EQUAL(values(r, c), reference(r, c)); };