@@ -131,6 +131,69 @@ FOSSIL_TEST_CASE(cpp_test_nstream_client_types) {
131
131
}
132
132
}
133
133
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
+
134
197
// * * * * * * * * * * * * * * * * * * * * * * * *
135
198
// * Fossil Logic Test Pool
136
199
// * * * * * * * * * * * * * * * * * * * * * * * *
@@ -143,5 +206,10 @@ FOSSIL_TEST_GROUP(cpp_network_tests) {
143
206
FOSSIL_TEST_ADD (cpp_network_suite, cpp_test_nstream_protocols);
144
207
FOSSIL_TEST_ADD (cpp_network_suite, cpp_test_nstream_client_types);
145
208
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
+
146
214
FOSSIL_TEST_REGISTER (cpp_network_suite);
147
215
}
0 commit comments