| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- #define BOOST_TEST_DYN_LINK
- #include "core/transform_tree.h"
- #include "core/basic_obj_types.hpp"
- #include "utility/debug_utility.hpp"
- #include <boost/test/unit_test.hpp>
- #include <boost/asio/awaitable.hpp>
- #include <boost/asio/co_spawn.hpp>
- #include <boost/asio/detached.hpp>
- #include <nlohmann/json.hpp>
- #include <fstream>
- 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<bool> {
- 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();
- }
|