test: make pipe tests run correctly also on Windows
This commit is contained in:
parent
d2cc600e97
commit
a4a27cacff
@ -3,14 +3,20 @@
|
|||||||
|
|
||||||
|
|
||||||
TEST(Pipe, ReadWrite) {
|
TEST(Pipe, ReadWrite) {
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
const std::string sockname{"\\\\.\\pipe\\test.sock"};
|
||||||
|
#else
|
||||||
const std::string sockname = std::string{TARGET_PIPE_DIR} + std::string{"/test.sock"};
|
const std::string sockname = std::string{TARGET_PIPE_DIR} + std::string{"/test.sock"};
|
||||||
|
#endif
|
||||||
|
|
||||||
auto loop = uvw::Loop::getDefault();
|
auto loop = uvw::Loop::getDefault();
|
||||||
auto server = loop->resource<uvw::PipeHandle>();
|
auto server = loop->resource<uvw::PipeHandle>();
|
||||||
auto client = loop->resource<uvw::PipeHandle>();
|
auto client = loop->resource<uvw::PipeHandle>();
|
||||||
|
|
||||||
server->on<uvw::ErrorEvent>([](const auto &, auto &) { FAIL(); });
|
server->on<uvw::ErrorEvent>([](const auto &, auto &) { FAIL(); });
|
||||||
client->on<uvw::ErrorEvent>([](const auto &, auto &) { FAIL(); });
|
client->on<uvw::ErrorEvent>([](const auto &, auto &) {
|
||||||
|
FAIL();
|
||||||
|
});
|
||||||
|
|
||||||
server->once<uvw::ListenEvent>([](const uvw::ListenEvent &, uvw::PipeHandle &handle) {
|
server->once<uvw::ListenEvent>([](const uvw::ListenEvent &, uvw::PipeHandle &handle) {
|
||||||
std::shared_ptr<uvw::PipeHandle> socket = handle.loop().resource<uvw::PipeHandle>();
|
std::shared_ptr<uvw::PipeHandle> socket = handle.loop().resource<uvw::PipeHandle>();
|
||||||
@ -31,9 +37,7 @@ TEST(Pipe, ReadWrite) {
|
|||||||
ASSERT_TRUE(handle.writable());
|
ASSERT_TRUE(handle.writable());
|
||||||
ASSERT_TRUE(handle.readable());
|
ASSERT_TRUE(handle.readable());
|
||||||
|
|
||||||
auto dataTryWrite = std::unique_ptr<char[]>(new char[1]{ 'a' });
|
auto dataWrite = std::unique_ptr<char[]>(new char[2]{ 'x', 'y' });
|
||||||
handle.tryWrite(std::move(dataTryWrite), 1);
|
|
||||||
auto dataWrite = std::unique_ptr<char[]>(new char[2]{ 'b', 'c' });
|
|
||||||
handle.write(std::move(dataWrite), 2);
|
handle.write(std::move(dataWrite), 2);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -46,7 +50,13 @@ TEST(Pipe, ReadWrite) {
|
|||||||
|
|
||||||
|
|
||||||
TEST(Pipe, SockPeer) {
|
TEST(Pipe, SockPeer) {
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
const std::string sockname{"\\\\.\\pipe\\test.sock"};
|
||||||
|
const std::string peername{ "\\\\?\\pipe\\test.sock" };
|
||||||
|
#else
|
||||||
const std::string sockname = std::string{TARGET_PIPE_DIR} + std::string{"/test.sock"};
|
const std::string sockname = std::string{TARGET_PIPE_DIR} + std::string{"/test.sock"};
|
||||||
|
const auto peernam = sockname;
|
||||||
|
#endif
|
||||||
|
|
||||||
auto loop = uvw::Loop::getDefault();
|
auto loop = uvw::Loop::getDefault();
|
||||||
auto server = loop->resource<uvw::PipeHandle>();
|
auto server = loop->resource<uvw::PipeHandle>();
|
||||||
@ -55,7 +65,7 @@ TEST(Pipe, SockPeer) {
|
|||||||
server->on<uvw::ErrorEvent>([](const auto &, auto &) { FAIL(); });
|
server->on<uvw::ErrorEvent>([](const auto &, auto &) { FAIL(); });
|
||||||
client->on<uvw::ErrorEvent>([](const auto &, auto &) { FAIL(); });
|
client->on<uvw::ErrorEvent>([](const auto &, auto &) { FAIL(); });
|
||||||
|
|
||||||
server->once<uvw::ListenEvent>([&sockname](const uvw::ListenEvent &, uvw::PipeHandle &handle) {
|
server->once<uvw::ListenEvent>([&peername](const uvw::ListenEvent &, uvw::PipeHandle &handle) {
|
||||||
std::shared_ptr<uvw::PipeHandle> socket = handle.loop().resource<uvw::PipeHandle>();
|
std::shared_ptr<uvw::PipeHandle> socket = handle.loop().resource<uvw::PipeHandle>();
|
||||||
|
|
||||||
socket->on<uvw::ErrorEvent>([](const uvw::ErrorEvent &, uvw::PipeHandle &) { FAIL(); });
|
socket->on<uvw::ErrorEvent>([](const uvw::ErrorEvent &, uvw::PipeHandle &) { FAIL(); });
|
||||||
@ -65,11 +75,11 @@ TEST(Pipe, SockPeer) {
|
|||||||
handle.accept(*socket);
|
handle.accept(*socket);
|
||||||
socket->read();
|
socket->read();
|
||||||
|
|
||||||
ASSERT_EQ(handle.sock(), sockname);
|
ASSERT_EQ(handle.sock(), peername);
|
||||||
});
|
});
|
||||||
|
|
||||||
client->once<uvw::ConnectEvent>([&sockname](const uvw::ConnectEvent &, uvw::PipeHandle &handle) {
|
client->once<uvw::ConnectEvent>([&peername](const uvw::ConnectEvent &, uvw::PipeHandle &handle) {
|
||||||
ASSERT_EQ(handle.peer(), sockname);
|
ASSERT_EQ(handle.peer(), peername);
|
||||||
|
|
||||||
handle.close();
|
handle.close();
|
||||||
});
|
});
|
||||||
@ -83,7 +93,12 @@ TEST(Pipe, SockPeer) {
|
|||||||
|
|
||||||
|
|
||||||
TEST(Pipe, Shutdown) {
|
TEST(Pipe, Shutdown) {
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
const std::string sockname{"\\\\.\\pipe\\test.sock"};
|
||||||
|
#else
|
||||||
const std::string sockname = std::string{TARGET_PIPE_DIR} + std::string{"/test.sock"};
|
const std::string sockname = std::string{TARGET_PIPE_DIR} + std::string{"/test.sock"};
|
||||||
|
#endif
|
||||||
|
|
||||||
auto data = std::unique_ptr<char[]>(new char[3]{ 'a', 'b', 'c' });
|
auto data = std::unique_ptr<char[]>(new char[3]{ 'a', 'b', 'c' });
|
||||||
|
|
||||||
auto loop = uvw::Loop::getDefault();
|
auto loop = uvw::Loop::getDefault();
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user