diff --git a/unittest/CMakeLists.txt b/unittest/CMakeLists.txt index c65c6cf1995d436de6a614ca141551e3f851d4f8..6c2165fe490feec6f1aa1db7b3bb34d47272b592 100644 --- a/unittest/CMakeLists.txt +++ b/unittest/CMakeLists.txt @@ -45,24 +45,28 @@ add_lib_unit_test(std_vector) add_lib_unit_test(std_array) add_lib_unit_test(std_pair) add_lib_unit_test(user_struct) -add_lib_unit_test(boost_variant) -function(config_bind_optional tagname opttype) - set(MODNAME bind_optional_${tagname}) - set(OPTIONAL ${opttype}) - configure_file(bind_optional.cpp.in ${MODNAME}.cpp) +function(config_test test tagname opttype) + set(MODNAME ${test}_${tagname}) + set(TEST_TYPE ${opttype}) + configure_file(${test}.cpp.in ${CMAKE_CURRENT_BINARY_DIR}/${MODNAME}.cpp) - set(py_file test_optional_${tagname}.py) - configure_file(python/test_optional.py.in + set(py_file test_${test}_${tagname}.py) + configure_file(python/test_${test}.py.in ${CMAKE_CURRENT_BINARY_DIR}/python/${py_file}) add_lib_unit_test(${MODNAME}) - add_python_unit_test("py-optional-${tagname}" "unittest/python/${py_file}" + add_python_unit_test("py-${test}-${tagname}" "unittest/python/${py_file}" "unittest") endfunction() -config_bind_optional(boost "boost::optional") +config_test(variant boost "boost::variant") if(CMAKE_CXX_STANDARD GREATER 14 AND CMAKE_CXX_STANDARD LESS 98) - config_bind_optional(std "std::optional") + config_test(variant std "std::variant") +endif() + +config_test(bind_optional boost "boost::optional") +if(CMAKE_CXX_STANDARD GREATER 14 AND CMAKE_CXX_STANDARD LESS 98) + config_test(bind_optional std "std::optional") endif() add_lib_unit_test(bind_virtual_factory) @@ -133,10 +137,6 @@ add_python_unit_test("py-user-struct" "unittest/python/test_user_struct.py" "python;unittest") set_tests_properties("py-user-struct" PROPERTIES DEPENDS ${PYWRAP}) -add_python_unit_test("py-boost-variant" "unittest/python/test_boost_variant.py" - "python;unittest") -set_tests_properties("py-boost-variant" PROPERTIES DEPENDS ${PYWRAP}) - add_python_unit_test("py-bind-virtual" "unittest/python/test_bind_virtual.py" "python;unittest") set_tests_properties("py-bind-virtual" PROPERTIES DEPENDS ${PYWRAP}) diff --git a/unittest/bind_optional.cpp.in b/unittest/bind_optional.cpp.in index 844449b19e0437cdd5b7d6248586d74f4e43800a..30b9ac249f9d5d4844cd30ad35c053265af859de 100644 --- a/unittest/bind_optional.cpp.in +++ b/unittest/bind_optional.cpp.in @@ -8,7 +8,8 @@ #include <optional> #endif -#cmakedefine OPTIONAL @OPTIONAL@ +#cmakedefine TEST_TYPE @TEST_TYPE@ +#define OPTIONAL TEST_TYPE typedef eigenpy::detail::nullopt_helper<OPTIONAL> none_helper; static auto OPT_NONE = none_helper::value(); @@ -74,6 +75,7 @@ BOOST_PYTHON_MODULE(@MODNAME@) { bp::make_setter(&mystruct::msg)); bp::def("none_if_zero", none_if_zero, bp::args("i")); - bp::def("create_if_true", create_if_true, (bp::arg("flag"), bp::arg("b") = OPT_NONE)); + bp::def("create_if_true", create_if_true, + (bp::arg("flag"), bp::arg("b") = OPT_NONE)); bp::def("random_mat_if_true", random_mat_if_true, bp::args("flag")); } diff --git a/unittest/python/test_optional.py.in b/unittest/python/test_bind_optional.py.in similarity index 100% rename from unittest/python/test_optional.py.in rename to unittest/python/test_bind_optional.py.in diff --git a/unittest/python/test_boost_variant.py b/unittest/python/test_variant.py.in similarity index 80% rename from unittest/python/test_boost_variant.py rename to unittest/python/test_variant.py.in index 023b940bdc91150e97f80d9d96f142cca73fff54..df375b1bdd17468a6b6a6373c4b205152ca3b749 100644 --- a/unittest/python/test_boost_variant.py +++ b/unittest/python/test_variant.py.in @@ -1,4 +1,10 @@ -from boost_variant import V1, V2, VariantHolder, make_variant +import importlib + +variant_module = importlib.import_module("@MODNAME@") +V1 = variant_module.V1 +V2 = variant_module.V2 +VariantHolder = variant_module.VariantHolder +make_variant = variant_module.make_variant variant = make_variant() assert isinstance(variant, V1) diff --git a/unittest/boost_variant.cpp b/unittest/variant.cpp.in similarity index 87% rename from unittest/boost_variant.cpp rename to unittest/variant.cpp.in index fad8e45879810c1e7503469d3a5e22863c6784c2..ee339cc39b8d689f08d565f6efc4b2f23219af7b 100644 --- a/unittest/boost_variant.cpp +++ b/unittest/variant.cpp.in @@ -4,6 +4,9 @@ #include <eigenpy/eigenpy.hpp> #include <eigenpy/variant.hpp> +#cmakedefine TEST_TYPE @TEST_TYPE@ +#define VARIANT TEST_TYPE + namespace bp = boost::python; struct V1 { @@ -12,7 +15,7 @@ struct V1 { struct V2 { char v; }; -typedef boost::variant<V1, V2> MyVariant; +typedef VARIANT<V1, V2> MyVariant; MyVariant make_variant() { return V1(); } @@ -20,7 +23,7 @@ struct VariantHolder { MyVariant variant; }; -BOOST_PYTHON_MODULE(boost_variant) { +BOOST_PYTHON_MODULE(@MODNAME@) { using namespace eigenpy; enableEigenPy();