more tests
This commit is contained in:
parent
d9b070500f
commit
806509795e
@ -59,7 +59,7 @@ ADD_UVW_TEST(handle uvw/handle.cpp)
|
||||
ADD_UVW_TEST(idle uvw/idle.cpp)
|
||||
ADD_UVW_LIB_TEST(lib uvw/lib.cpp)
|
||||
ADD_UVW_TEST(loop uvw/loop.cpp)
|
||||
ADD_UVW_TEST(pipe uvw/pipe.cpp)
|
||||
ADD_UVW_DIR_TEST(pipe uvw/pipe.cpp)
|
||||
ADD_UVW_TEST(poll uvw/poll.cpp)
|
||||
ADD_UVW_TEST(prepare uvw/prepare.cpp)
|
||||
ADD_UVW_TEST(process uvw/process.cpp)
|
||||
|
||||
@ -2,6 +2,83 @@
|
||||
#include <uvw.hpp>
|
||||
|
||||
|
||||
TEST(Pipe, ReadWrite) {
|
||||
const std::string sockname = std::string{TARGET_PIPE_DIR} + std::string{"/test.sock"};
|
||||
|
||||
auto loop = uvw::Loop::getDefault();
|
||||
auto server = loop->resource<uvw::PipeHandle>();
|
||||
auto client = loop->resource<uvw::PipeHandle>();
|
||||
|
||||
server->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) {
|
||||
std::shared_ptr<uvw::PipeHandle> socket = handle.loop().resource<uvw::PipeHandle>();
|
||||
|
||||
socket->on<uvw::ErrorEvent>([](const uvw::ErrorEvent &, uvw::PipeHandle &) { FAIL(); });
|
||||
socket->on<uvw::CloseEvent>([&handle](const uvw::CloseEvent &, uvw::PipeHandle &) { handle.close(); });
|
||||
socket->on<uvw::EndEvent>([](const uvw::EndEvent &, uvw::PipeHandle &sock) { sock.close(); });
|
||||
|
||||
handle.accept(*socket);
|
||||
socket->read();
|
||||
});
|
||||
|
||||
client->once<uvw::WriteEvent>([](const uvw::WriteEvent &, uvw::PipeHandle &handle) {
|
||||
handle.close();
|
||||
});
|
||||
|
||||
client->once<uvw::ConnectEvent>([](const uvw::ConnectEvent &, uvw::PipeHandle &handle) {
|
||||
auto dataTryWrite = std::unique_ptr<char[]>(new char[1]{ 'a' });
|
||||
handle.tryWrite(std::move(dataTryWrite), 1);
|
||||
auto dataWrite = std::unique_ptr<char[]>(new char[2]{ 'b', 'c' });
|
||||
handle.write(std::move(dataWrite), 2);
|
||||
});
|
||||
|
||||
server->bind(sockname);
|
||||
server->listen();
|
||||
client->connect(sockname);
|
||||
|
||||
loop->run();
|
||||
}
|
||||
|
||||
|
||||
TEST(Pipe, SockPeer) {
|
||||
const std::string sockname = std::string{TARGET_PIPE_DIR} + std::string{"/test.sock"};
|
||||
|
||||
auto loop = uvw::Loop::getDefault();
|
||||
auto server = loop->resource<uvw::PipeHandle>();
|
||||
auto client = loop->resource<uvw::PipeHandle>();
|
||||
|
||||
server->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) {
|
||||
std::shared_ptr<uvw::PipeHandle> socket = handle.loop().resource<uvw::PipeHandle>();
|
||||
|
||||
socket->on<uvw::ErrorEvent>([](const uvw::ErrorEvent &, uvw::PipeHandle &) { FAIL(); });
|
||||
socket->on<uvw::CloseEvent>([&handle](const uvw::CloseEvent &, uvw::PipeHandle &) { handle.close(); });
|
||||
socket->on<uvw::EndEvent>([](const uvw::EndEvent &, uvw::PipeHandle &sock) { sock.close(); });
|
||||
|
||||
handle.accept(*socket);
|
||||
socket->read();
|
||||
|
||||
ASSERT_EQ(handle.sock(), sockname);
|
||||
});
|
||||
|
||||
client->once<uvw::ConnectEvent>([&sockname](const uvw::ConnectEvent &, uvw::PipeHandle &handle) {
|
||||
ASSERT_EQ(handle.peer(), sockname);
|
||||
|
||||
handle.close();
|
||||
});
|
||||
|
||||
server->bind(sockname);
|
||||
server->listen();
|
||||
client->connect(sockname);
|
||||
|
||||
loop->run();
|
||||
}
|
||||
|
||||
|
||||
TEST(Pipe, TODO) {
|
||||
auto loop = uvw::Loop::getDefault();
|
||||
auto handle = uvw::PipeHandle::create(loop);
|
||||
|
||||
@ -23,14 +23,14 @@ TEST(Tcp, ReadWrite) {
|
||||
server->on<uvw::ErrorEvent>([](const auto &, auto &) { FAIL(); });
|
||||
client->on<uvw::ErrorEvent>([](const auto &, auto &) { FAIL(); });
|
||||
|
||||
server->once<uvw::ListenEvent>([](const uvw::ListenEvent &, uvw::TcpHandle &srv) {
|
||||
std::shared_ptr<uvw::TcpHandle> socket = srv.loop().resource<uvw::TcpHandle>();
|
||||
server->once<uvw::ListenEvent>([](const uvw::ListenEvent &, uvw::TcpHandle &handle) {
|
||||
std::shared_ptr<uvw::TcpHandle> socket = handle.loop().resource<uvw::TcpHandle>();
|
||||
|
||||
socket->on<uvw::ErrorEvent>([](const uvw::ErrorEvent &, uvw::TcpHandle &) { FAIL(); });
|
||||
socket->on<uvw::CloseEvent>([&srv](const uvw::CloseEvent &, uvw::TcpHandle &) { srv.close(); });
|
||||
socket->on<uvw::CloseEvent>([&handle](const uvw::CloseEvent &, uvw::TcpHandle &) { handle.close(); });
|
||||
socket->on<uvw::EndEvent>([](const uvw::EndEvent &, uvw::TcpHandle &sock) { sock.close(); });
|
||||
|
||||
srv.accept(*socket);
|
||||
handle.accept(*socket);
|
||||
socket->read();
|
||||
});
|
||||
|
||||
@ -61,26 +61,28 @@ TEST(Tcp, SockPeer) {
|
||||
server->on<uvw::ErrorEvent>([](const auto &, auto &) { FAIL(); });
|
||||
client->on<uvw::ErrorEvent>([](const auto &, auto &) { FAIL(); });
|
||||
|
||||
server->once<uvw::ListenEvent>([](const uvw::ListenEvent &, uvw::TcpHandle &srv) {
|
||||
std::shared_ptr<uvw::TcpHandle> socket = srv.loop().resource<uvw::TcpHandle>();
|
||||
server->once<uvw::ListenEvent>([](const uvw::ListenEvent &, uvw::TcpHandle &handle) {
|
||||
std::shared_ptr<uvw::TcpHandle> socket = handle.loop().resource<uvw::TcpHandle>();
|
||||
|
||||
socket->on<uvw::ErrorEvent>([](const uvw::ErrorEvent &, uvw::TcpHandle &) { FAIL(); });
|
||||
socket->on<uvw::CloseEvent>([&srv](const uvw::CloseEvent &, uvw::TcpHandle &) { srv.close(); });
|
||||
socket->on<uvw::CloseEvent>([&handle](const uvw::CloseEvent &, uvw::TcpHandle &) { handle.close(); });
|
||||
socket->on<uvw::EndEvent>([](const uvw::EndEvent &, uvw::TcpHandle &sock) { sock.close(); });
|
||||
|
||||
srv.accept(*socket);
|
||||
handle.accept(*socket);
|
||||
socket->read();
|
||||
|
||||
uvw::Addr local = srv.sock();
|
||||
uvw::Addr remote = socket->peer();
|
||||
uvw::Addr addr = handle.sock();
|
||||
|
||||
ASSERT_EQ(local.ip, "127.0.0.1");
|
||||
ASSERT_EQ(remote.ip, "127.0.0.1");
|
||||
ASSERT_EQ(local.port, decltype(local.port){4242});
|
||||
ASSERT_NE(remote.port, decltype(remote.port){0});
|
||||
ASSERT_EQ(addr.ip, "127.0.0.1");
|
||||
ASSERT_EQ(addr.port, decltype(addr.port){4242});
|
||||
});
|
||||
|
||||
client->once<uvw::ConnectEvent>([](const uvw::ConnectEvent &, uvw::TcpHandle &handle) {
|
||||
uvw::Addr addr = handle.peer();
|
||||
|
||||
ASSERT_EQ(addr.ip, "127.0.0.1");
|
||||
ASSERT_NE(addr.port, decltype(addr.port){0});
|
||||
|
||||
handle.close();
|
||||
});
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user