Skip to content

Commit a212760

Browse files
ensure nstream class is tested
1 parent 7945762 commit a212760

File tree

1 file changed

+68
-0
lines changed

1 file changed

+68
-0
lines changed

code/tests/cases/test_network.cpp

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,69 @@ FOSSIL_TEST_CASE(cpp_test_nstream_client_types) {
131131
}
132132
}
133133

134+
FOSSIL_TEST_CASE(cpp_test_nstream_class_create_and_destroy) {
135+
using namespace fossil::io;
136+
137+
const std::string protocols[] = {"tcp", "udp", "raw", "icmp", "sctp", "http", "https", "ftp", "ssh", "dns", "ntp", "smtp", "pop3", "imap", "ldap", "mqtt"};
138+
const std::string clients[] = {"mail-server", "server", "mail-client", "client", "mail-bot", "bot", "multicast", "broadcast"};
139+
140+
for (const auto &protocol : protocols) {
141+
for (const auto &client : clients) {
142+
NStream stream(protocol, client);
143+
}
144+
}
145+
}
146+
147+
FOSSIL_TEST_CASE(cpp_test_nstream_class_connect_invalid_host) {
148+
using namespace fossil::io;
149+
150+
try {
151+
NStream stream("tcp", "client");
152+
stream.connect("invalid_host", 12345);
153+
ASSUME_ITS_FALSE("Expected exception for invalid host");
154+
} catch (const std::runtime_error &e) {
155+
ASSUME_ITS_TRUE("Caught expected exception");
156+
}
157+
}
158+
159+
FOSSIL_TEST_CASE(cpp_test_nstream_class_listen_and_accept) {
160+
using namespace fossil::io;
161+
162+
NStream server("tcp", "server");
163+
server.listen("127.0.0.1", 12345);
164+
165+
NStream client("tcp", "client");
166+
client.connect("127.0.0.1", 12345);
167+
168+
NStream *accepted_client = server.accept();
169+
ASSUME_NOT_CNULL(accepted_client);
170+
171+
delete accepted_client;
172+
}
173+
174+
FOSSIL_TEST_CASE(cpp_test_nstream_class_send_and_receive) {
175+
using namespace fossil::io;
176+
177+
NStream server("tcp", "server");
178+
server.listen("127.0.0.1", 12345);
179+
180+
NStream client("tcp", "client");
181+
client.connect("127.0.0.1", 12345);
182+
183+
NStream *accepted_client = server.accept();
184+
ASSUME_NOT_CNULL(accepted_client);
185+
186+
const std::string message = "Hello, Fossil!";
187+
client.send(message.c_str(), message.size());
188+
189+
char buffer[1024] = {0};
190+
ssize_t bytes_received = accepted_client->recv(buffer, sizeof(buffer));
191+
ASSUME_ITS_EQUAL_I32(message.size(), bytes_received);
192+
ASSUME_ITS_EQUAL_CSTR(message.c_str(), buffer);
193+
194+
delete accepted_client;
195+
}
196+
134197
// * * * * * * * * * * * * * * * * * * * * * * * *
135198
// * Fossil Logic Test Pool
136199
// * * * * * * * * * * * * * * * * * * * * * * * *
@@ -143,5 +206,10 @@ FOSSIL_TEST_GROUP(cpp_network_tests) {
143206
FOSSIL_TEST_ADD(cpp_network_suite, cpp_test_nstream_protocols);
144207
FOSSIL_TEST_ADD(cpp_network_suite, cpp_test_nstream_client_types);
145208

209+
FOSSIL_TEST_ADD(cpp_network_suite, cpp_test_nstream_class_create_and_destroy);
210+
FOSSIL_TEST_ADD(cpp_network_suite, cpp_test_nstream_class_connect_invalid_host);
211+
FOSSIL_TEST_ADD(cpp_network_suite, cpp_test_nstream_class_listen_and_accept);
212+
FOSSIL_TEST_ADD(cpp_network_suite, cpp_test_nstream_class_send_and_receive);
213+
146214
FOSSIL_TEST_REGISTER(cpp_network_suite);
147215
}

0 commit comments

Comments
 (0)