40 lines
938 B
C++
40 lines
938 B
C++
|
#include <sled/sled.h>
|
||
|
|
||
|
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);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
}
|