transform_utility.cpp 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #define BOOST_TEST_DYN_LINK
  2. #include "core/basic_obj_types.hpp"
  3. #include "core/sophiar_pool.h"
  4. #include "utility/debug_utility.hpp"
  5. #include "utility/coro_worker.hpp"
  6. #include <boost/test/unit_test.hpp>
  7. #include <boost/asio/awaitable.hpp>
  8. #include <boost/asio/co_spawn.hpp>
  9. #include <boost/asio/detached.hpp>
  10. #include <nlohmann/json.hpp>
  11. #include <fstream>
  12. using namespace nlohmann;
  13. using namespace sophiar;
  14. using boost::asio::awaitable;
  15. using boost::asio::co_spawn;
  16. using boost::asio::detached;
  17. BOOST_AUTO_TEST_CASE(test_transform_utility) {
  18. spdlog::set_level(spdlog::level::trace);
  19. std::ifstream config_file("data/transform_utility_config.json");
  20. BOOST_TEST(config_file.is_open());
  21. auto config = nlohmann::json::parse(config_file);
  22. BOOST_TEST(initialize(config));
  23. using namespace std::chrono_literals;
  24. auto tracker_in_model_index = REQUIRE_VARIABLE(transform_obj, "tracker_in_model");
  25. auto worker_a = make_interval_coro_worker(1s, [=, cur_y = int(0)]() mutable -> awaitable<bool> {
  26. auto new_trans = Eigen::Isometry3d(Eigen::Translation3d(0, cur_y += 1, 0));
  27. UPDATE_VARIABLE_VAL(transform_obj, tracker_in_model_index, std::move(new_trans));
  28. co_return true;
  29. });
  30. worker_a->run();
  31. auto probe_in_tracker_index = REQUIRE_VARIABLE(transform_obj, "probe_in_tracker");
  32. auto worker_b = make_interval_coro_worker(2s, [=, cur_z = int(0)]() mutable -> awaitable<bool> {
  33. auto new_trans = Eigen::Isometry3d(Eigen::Translation3d(0, 0, cur_z -= 1));
  34. UPDATE_VARIABLE_VAL(transform_obj, probe_in_tracker_index, std::move(new_trans));
  35. co_return true;
  36. });
  37. worker_b->run();
  38. global_context->run();
  39. }