#include TEST_SUITE("asio") { TEST_CASE("io_context") { asio::io_context ctx; int x = 0; asio::dispatch(ctx, [&]{ CHECK_EQ(x, 0); ++x; }); asio::post(ctx, [&]{ CHECK_EQ(x, 1); ++x; asio::dispatch(ctx, [&]{ CHECK_EQ(x, 2); ++x; }); CHECK_EQ(x, 3); ++x; }); asio::steady_timer timer(ctx, std::chrono::milliseconds(500)); timer.async_wait([&](const asio::error_code& ec){ if (ec.value() == asio::error::operation_aborted) { return; } CHECK_EQ(x, 4); ++x; }); // start ctx { CHECK_EQ(x, 0); ctx.run(); CHECK_EQ(x, 5); } } }