mirror of
https://github.com/kierankihn/uno-game.git
synced 2025-12-27 02:13:18 +08:00
test(network): expand NetworkClientTest with connection and send tests
- Added `onConnect` callback to test constructor. - Introduced thread-based tests for connection and message sending.
This commit is contained in:
@@ -94,38 +94,60 @@ private:
|
|||||||
|
|
||||||
TEST(NetworkClientTest, ConstructorWithCallback)
|
TEST(NetworkClientTest, ConstructorWithCallback)
|
||||||
{
|
{
|
||||||
auto callback = [](std::string message) {};
|
auto on_connect = []() {};
|
||||||
|
auto callback = [](std::string message) {};
|
||||||
|
|
||||||
EXPECT_NO_THROW({ NetworkClient client(callback); });
|
EXPECT_NO_THROW({ NetworkClient client(on_connect, callback); });
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(NetworkClientTest, ConnectToHost)
|
TEST(NetworkClientTest, ConnectToHost)
|
||||||
{
|
{
|
||||||
|
bool is_connected = false;
|
||||||
|
|
||||||
SimpleTestServer server(30001);
|
SimpleTestServer server(30001);
|
||||||
|
|
||||||
auto callback = [](std::string message) {};
|
auto on_connect = [&is_connected]() { is_connected = true; };
|
||||||
NetworkClient client(callback);
|
auto callback = [](std::string message) {};
|
||||||
|
NetworkClient client(on_connect, callback);
|
||||||
|
|
||||||
EXPECT_NO_THROW({ client.connect("localhost", 30001); });
|
auto netThread = std::thread([&client]() { client.run(); });
|
||||||
}
|
|
||||||
|
|
||||||
TEST(NetworkClientTest, ConnectToInvalidHost)
|
std::this_thread::sleep_for(std::chrono::milliseconds(100));
|
||||||
{
|
|
||||||
SimpleTestServer server(30002);
|
|
||||||
|
|
||||||
auto callback = [](std::string message) {};
|
client.connect("127.0.0.1", 30001);
|
||||||
NetworkClient client(callback);
|
|
||||||
|
|
||||||
EXPECT_THROW({ client.connect("invalid.host.that.does.not.exist.12345", 30002); }, std::exception);
|
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
|
||||||
|
|
||||||
|
EXPECT_TRUE(is_connected);
|
||||||
|
|
||||||
|
client.stop();
|
||||||
|
if (netThread.joinable()) {
|
||||||
|
netThread.join();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(NetworkClientTest, SendAfterConnect)
|
TEST(NetworkClientTest, SendAfterConnect)
|
||||||
{
|
{
|
||||||
SimpleTestServer server(30003);
|
SimpleTestServer server(30002);
|
||||||
|
|
||||||
auto callback = [](std::string message) {};
|
auto on_connect = []() {};
|
||||||
NetworkClient client(callback);
|
auto callback = [](std::string message) {};
|
||||||
client.connect("localhost", 30003);
|
NetworkClient client(on_connect, callback);
|
||||||
|
|
||||||
EXPECT_NO_THROW({ client.send("Hello, Server!"); });
|
auto netThread = std::thread([&client]() { client.run(); });
|
||||||
|
|
||||||
|
std::this_thread::sleep_for(std::chrono::milliseconds(100));
|
||||||
|
|
||||||
|
client.connect("127.0.0.1", 30002);
|
||||||
|
|
||||||
|
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
|
||||||
|
|
||||||
|
client.send("Hello, Server!");
|
||||||
|
|
||||||
|
std::this_thread::sleep_for(std::chrono::milliseconds(100));
|
||||||
|
|
||||||
|
client.stop();
|
||||||
|
if (netThread.joinable()) {
|
||||||
|
netThread.join();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user