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:
Kieran Kihn
2025-12-09 19:42:45 +08:00
parent 98a7ef7d41
commit 41936b3525

View File

@@ -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();
}
} }