Commit 302b9440 authored by tqcq's avatar tqcq
Browse files

feat add asio

parent de11bddd
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -201,6 +201,7 @@ if(SLED_BUILD_TESTS)
  sled_add_test(NAME sled_event_bus_test SRCS
                src/sled/event_bus/event_bus_test.cc)
  sled_add_test(NAME sled_lua_test SRCS tests/lua_test.cc)
  sled_add_test(NAME sled_asio_test SRCS tests/asio_test.cc)
  sled_add_test(NAME sled_move_on_copy_test SRCS
                src/sled/utility/move_on_copy_test.cc)
  sled_add_test(NAME sled_symbolize_test SRCS
+1 −0
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@
#define SLED_SLED_H

// thrid_party
#include <asio.hpp>
#include "rx.h"
#include "sled/nonstd/cxxopts.h"
#include "sled/nonstd/expected.h"

tests/asio_test.cc

0 → 100644
+39 −0
Original line number Diff line number Diff line
#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);
        }

    }
}