| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- #define BOOST_TEST_DYN_LINK
- #include "core/basic_obj_types.hpp"
- #include "core/sophiar_obj.hpp"
- #include "utility/debug_utility.hpp"
- #include "utility/variable_helper.hpp"
- #include <boost/asio/co_spawn.hpp>
- #include <boost/asio/detached.hpp>
- #include <boost/asio/this_coro.hpp>
- #include <boost/asio/use_awaitable.hpp>
- #include <boost/test/unit_test.hpp>
- #include <chrono>
- #include <iostream>
- #include <vector>
- using boost::asio::awaitable;
- using boost::asio::co_spawn;
- using boost::asio::detached;
- using boost::asio::use_awaitable;
- using namespace sophiar;
- using namespace std::chrono_literals;
- awaitable<void> test_global_obj_helper_1() {
- REGISTER_VARIABLE("var_a", "u64int_obj");
- auto var_a_index = REQUIRE_VARIABLE(u64int_obj, "var_a");
- UPDATE_VARIABLE_VAL(u64int_obj, var_a_index, 123);
- co_spawn(*global_context, [=]() -> awaitable<void> {
- auto obj_a = VARIABLE_AUTO_DELEGATE(u64int_obj, var_a_index);
- BOOST_TEST(obj_a->value == 123);
- co_await coro_sleep(10ms);
- BOOST_TEST(obj_a->value == 234);
- co_await coro_sleep(10ms);
- BOOST_TEST(obj_a->value == 456);
- co_return;
- }, detached);
- co_spawn(*global_context, [=]() -> awaitable<void> {
- auto obj_a = VARIABLE_MANUAL_DELEGATE(u64int_obj, var_a_index);
- obj_a.manual_sync();
- BOOST_TEST(obj_a->value == 123);
- co_await coro_sleep(10ms);
- BOOST_TEST(obj_a->value == 123);
- co_await obj_a.coro_wait_update(false);
- BOOST_TEST(obj_a->value == 234);
- co_return;
- }, detached);
- UPDATE_VARIABLE_VAL(u64int_obj, var_a_index, 234);
- co_await coro_sleep(15ms);
- auto var_a = VARIABLE_AUTO_DELEGATE(u64int_obj, var_a_index);
- var_a = 456;
- co_return;
- }
- BOOST_AUTO_TEST_CASE(test_global_obj_helper) {
- initialize({});
- co_spawn(*global_context, test_global_obj_helper_1(), detached);
- global_context->run();
- }
|