NetworkTests.cpp 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #include <atomic>
  2. #include <thread>
  3. #include "network/Client.h"
  4. #include "network/Server.h"
  5. #include "tests/NetworkTests.h"
  6. #include "tests/Test.h"
  7. static void sleep(int millis) {
  8. std::this_thread::sleep_for(std::chrono::milliseconds(millis));
  9. }
  10. struct ServerConsumer {
  11. bool connected = false;
  12. bool disconnect = false;
  13. void onConnection(Server::Client& client) {
  14. (void)client;
  15. connected = true;
  16. }
  17. void onDisconnect(Server::Client& client) {
  18. (void)client;
  19. disconnect = true;
  20. }
  21. void onPackage(Server::Client& client, InPacket& in) {
  22. (void)client;
  23. (void)in;
  24. }
  25. };
  26. struct ClientConsumer {};
  27. static void testConnect(Test& test) {
  28. Server server(54321, 5);
  29. if(server.hasError()) {
  30. test.checkEqual(false, true, "server can initialize");
  31. return;
  32. }
  33. Client client;
  34. if(client.hasError()) {
  35. test.checkEqual(false, true, "client can initialize");
  36. return;
  37. }
  38. std::atomic_bool running(true);
  39. ServerConsumer serverConsumer;
  40. std::thread listen([&running, &server, &serverConsumer]() {
  41. while(running) {
  42. server.consumeEvents(serverConsumer);
  43. }
  44. });
  45. test.checkEqual(false, client.connect("127.0.0.1", 54321, 5),
  46. "connection failed");
  47. ClientConsumer clientConsumer;
  48. for(int i = 0; i < 100; i++) {
  49. client.consumeEvents(clientConsumer);
  50. }
  51. test.checkEqual(true, serverConsumer.connected, "server has connection");
  52. client.disconnect();
  53. sleep(100);
  54. test.checkEqual(true, serverConsumer.disconnect, "client has disconnected");
  55. running = false;
  56. listen.join();
  57. }
  58. void NetworkTests::test() {
  59. Test test("Network");
  60. ENet enet;
  61. if(enet.init()) {
  62. test.checkEqual(false, true, "enet init failed");
  63. } else {
  64. testConnect(test);
  65. }
  66. test.finalize();
  67. }