| 39 | using namespace oid; |
| 40 | |
| 41 | TEST(AsioTransport, RoundTripBytes) { |
| 42 | asio::io_context server_ctx; |
| 43 | asio::ip::tcp::acceptor acceptor( |
| 44 | server_ctx, |
| 45 | asio::ip::tcp::endpoint(asio::ip::make_address("127.0.0.1"), 0)); |
| 46 | const unsigned short port = acceptor.local_endpoint().port(); |
| 47 | |
| 48 | asio::ip::tcp::socket server_sock(server_ctx); |
| 49 | std::thread server([&acceptor, &server_sock] { |
| 50 | acceptor.accept(server_sock); |
| 51 | // Echo 4 bytes back after receiving 4. |
| 52 | std::array<std::byte, 4> buf{}; |
| 53 | asio::read(server_sock, asio::buffer(buf)); |
| 54 | asio::write(server_sock, asio::buffer(buf)); |
| 55 | }); |
| 56 | |
| 57 | AsioTransport client("127.0.0.1", port); |
| 58 | const std::array<std::byte, 4> out{ |
| 59 | std::byte{1}, std::byte{2}, std::byte{3}, std::byte{4}}; |
| 60 | client.send(out); |
| 61 | std::array<std::byte, 4> in{}; |
| 62 | std::size_t got = 0; |
| 63 | while (got < in.size()) { |
| 64 | got += client.receive(std::span{in}.subspan(got)); |
| 65 | } |
| 66 | server.join(); |
| 67 | EXPECT_EQ(in, out); |
| 68 | } |
| 69 | |
| 70 | TEST(AsioTransport, HasDataFalseBeforeSend) { |
| 71 | asio::io_context server_ctx; |
nothing calls this directly
no test coverage detected