#define BOOST_TEST_DYN_LINK #include "core/transform_tree.h" #include "core/basic_obj_types.hpp" #include "utility/debug_utility.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_global_obj_recoreder) { spdlog::set_level(spdlog::level::trace); REGISTER_TYPE(double_obj_recorder); REGISTER_TYPE(scalarxyz_obj_recorder); REGISTER_TYPE(transform_obj_recorder); std::ifstream config_file("data/global_obj_record_config.json"); BOOST_TEST(config_file.is_open()); using namespace std::chrono_literals; auto double_sample_index = REGISTER_GLOBAL_OBJ(double_obj, "double_sample"); auto xyz_sample_index = REGISTER_GLOBAL_OBJ(scalarxyz_obj, "xyz_sample"); auto transform_sample_index = REGISTER_GLOBAL_OBJ(transform_obj, "transform_sample"); auto worker_a = make_interval_coro_worker(global_context, 1s, [=]() mutable -> awaitable { static auto sample_val = 1.1; auto new_double = double_obj::value_type(sample_val); auto new_xyz = scalarxyz_obj::value_type(0.1, 0.2, sample_val); auto new_trans = transform_obj::value_type(Eigen::Translation3d(0.3, 0.4, sample_val)); UPDATE_GLOBAL_OBJ_VALUE(double_obj, double_sample_index, new_double); UPDATE_GLOBAL_OBJ_VALUE(scalarxyz_obj, xyz_sample_index, std::move(new_xyz)); UPDATE_GLOBAL_OBJ_VALUE(transform_obj, transform_sample_index, std::move(new_trans)); sample_val += 0.6; co_return true; }); worker_a->run(); global_sophiar_manager.load_config_and_start(nlohmann::json::parse(config_file)); global_context.run(); } BOOST_AUTO_TEST_CASE(test_global_obj_replayer) { spdlog::set_level(spdlog::level::trace); REGISTER_TYPE(double_obj_watcher); REGISTER_TYPE(scalarxyz_obj_watcher); REGISTER_TYPE(transform_obj_watcher); REGISTER_TYPE(double_obj_replayer); REGISTER_TYPE(scalarxyz_obj_replayer); REGISTER_TYPE(transform_obj_replayer); std::ifstream config_file("data/global_obj_replay_config.json"); BOOST_TEST(config_file.is_open()); global_sophiar_manager.load_config_and_start(nlohmann::json::parse(config_file)); global_context.run(); }