UnitTests: Add SocketPoller test
Former-commit-id: b55e068f965f5caa4e4421c34e829522bc48a4cf [formerly c5496d8e4fa3b92bc2b950211de80f6b7e3fc967] [formerly ee508eb538748fd1c23d032fb825a03879a58e67 [formerly e18dff1d01ba1cc6df8351f6ea4b315809843a6c]] Former-commit-id: 307f7d01cfdcc4ec84eed0c36773349922e50a1d [formerly 4098ef95f0950a95b576c95e7a904d986d4c9cc0] Former-commit-id: 1c92830f710e774f575a6bc4ee5151b0c88b6369
This commit is contained in:
parent
7761b59dd9
commit
dd8f583ddf
|
|
@ -0,0 +1,81 @@
|
|||
#include <Nazara/Network/SocketPoller.hpp>
|
||||
#include <Nazara/Network/TcpClient.hpp>
|
||||
#include <Nazara/Network/TcpServer.hpp>
|
||||
#include <Catch/catch.hpp>
|
||||
|
||||
#include <Nazara/Math/Vector3.hpp>
|
||||
#include <Nazara/Network/NetPacket.hpp>
|
||||
|
||||
SCENARIO("SocketPoller", "[NETWORK][SOCKETPOLLER]")
|
||||
{
|
||||
GIVEN("A TcpServer and a TcpClient in a selector")
|
||||
{
|
||||
Nz::UInt16 port = 64256;
|
||||
Nz::TcpServer server;
|
||||
server.EnableBlocking(false);
|
||||
|
||||
REQUIRE(server.Listen(Nz::NetProtocol_IPv4, port) == Nz::SocketState_Bound);
|
||||
|
||||
Nz::IpAddress serverIP(Nz::IpAddress::LoopbackIpV4.ToIPv4(), port);
|
||||
REQUIRE(serverIP.IsValid());
|
||||
|
||||
Nz::SocketPoller serverPoller;
|
||||
Nz::TcpClient clientToServer;
|
||||
|
||||
WHEN("We register the server socket to the poller")
|
||||
{
|
||||
REQUIRE(serverPoller.RegisterSocket(server));
|
||||
|
||||
THEN("The poller should have registered our socket")
|
||||
{
|
||||
REQUIRE(serverPoller.IsRegistered(server));
|
||||
}
|
||||
AND_THEN("We connect using a TcpClient")
|
||||
{
|
||||
Nz::SocketState state = clientToServer.Connect(serverIP);
|
||||
|
||||
REQUIRE(state != Nz::SocketState_NotConnected);
|
||||
|
||||
AND_THEN("We wait on our selector, it should return true")
|
||||
{
|
||||
REQUIRE(serverPoller.Wait(1000));
|
||||
|
||||
Nz::TcpClient serverToClient;
|
||||
REQUIRE(server.AcceptClient(&serverToClient));
|
||||
|
||||
WHEN("We register the client socket to the poller")
|
||||
{
|
||||
REQUIRE(serverPoller.RegisterSocket(serverToClient));
|
||||
|
||||
THEN("The poller should have registered our socket")
|
||||
{
|
||||
REQUIRE(serverPoller.IsRegistered(serverToClient));
|
||||
}
|
||||
|
||||
AND_WHEN("We test sending data from the client to the server and checking the poller")
|
||||
{
|
||||
std::array<char, 5> buffer = {"Data"};
|
||||
|
||||
std::size_t sent;
|
||||
REQUIRE(clientToServer.Send(buffer.data(), buffer.size(), &sent));
|
||||
REQUIRE(sent == buffer.size());
|
||||
|
||||
REQUIRE(serverPoller.Wait(1000));
|
||||
|
||||
REQUIRE(serverPoller.IsReady(serverToClient));
|
||||
|
||||
REQUIRE(serverToClient.Read(buffer.data(), buffer.size()) == sent);
|
||||
|
||||
AND_THEN("Our selector should report no socket ready")
|
||||
{
|
||||
REQUIRE(!serverPoller.Wait(100));
|
||||
|
||||
REQUIRE(!serverPoller.IsReady(serverToClient));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue