#define BOOST_TEST_DYN_LINK #include "core/basic_obj_types.hpp" #include "core/sophiar_pool.h" #include "utility/debug_utility.hpp" #include "utility/coro_worker.hpp" #include #include #include #include #include #include using namespace nlohmann; using namespace sophiar; using boost::asio::awaitable; using boost::asio::co_spawn; using boost::asio::detached; BOOST_AUTO_TEST_CASE(test_transform_utility) { spdlog::set_level(spdlog::level::trace); std::ifstream config_file("data/transform_utility_config.json"); BOOST_TEST(config_file.is_open()); auto config = nlohmann::json::parse(config_file); BOOST_TEST(initialize(config)); using namespace std::chrono_literals; auto tracker_in_model_index = REQUIRE_VARIABLE(transform_obj, "tracker_in_model"); auto worker_a = make_interval_coro_worker(1s, [=, cur_y = int(0)]() mutable -> awaitable { auto new_trans = Eigen::Isometry3d(Eigen::Translation3d(0, cur_y += 1, 0)); UPDATE_VARIABLE_VAL(transform_obj, tracker_in_model_index, std::move(new_trans)); co_return true; }); worker_a->run(); auto probe_in_tracker_index = REQUIRE_VARIABLE(transform_obj, "probe_in_tracker"); auto worker_b = make_interval_coro_worker(2s, [=, cur_z = int(0)]() mutable -> awaitable { auto new_trans = Eigen::Isometry3d(Eigen::Translation3d(0, 0, cur_z -= 1)); UPDATE_VARIABLE_VAL(transform_obj, probe_in_tracker_index, std::move(new_trans)); co_return true; }); worker_b->run(); global_context->run(); }