NetworkTests.c 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. #include "../Tests.h"
  2. /*static bool checkError(Test& test, const Error e, const char* msg) {
  3. if(e.has()) {
  4. test.checkFalse(true, msg);
  5. return true;
  6. }
  7. return false;
  8. }
  9. static void tickClient(int ticks) {
  10. for(int i = 0; i < ticks; i++) {
  11. Client::tick();
  12. }
  13. }
  14. static void tick(int ticks) {
  15. for(int i = 0; i < ticks; i++) {
  16. Client::tick();
  17. Server::tick();
  18. }
  19. }
  20. static void testConnect(Test& test, PacketSendMode mode) {
  21. static bool clientConnected = false;
  22. static bool clientDisconnected = false;
  23. static bool clientPackage = false;
  24. clientConnected = false;
  25. clientDisconnected = false;
  26. clientPackage = false;
  27. static int packageCounter = 0;
  28. static bool serverConnected = false;
  29. static bool serverDisconnect = false;
  30. static uint8 data1 = 0;
  31. static uint16 data2 = 0;
  32. static uint32 data3 = 0;
  33. static int8 data4 = 0;
  34. static int16 data5 = 0;
  35. static int32 data6 = 0;
  36. static int8 data7 = 0;
  37. static int16 data8 = 0;
  38. static int32 data9 = 0;
  39. static StringBuffer<20> data10;
  40. static float data11 = 0.0f;
  41. static IntVector3 data12;
  42. static Vector3 data13;
  43. serverConnected = false;
  44. serverDisconnect = false;
  45. data1 = 0;
  46. data2 = 0;
  47. data3 = 0;
  48. data4 = 0;
  49. data5 = 0;
  50. data6 = 0;
  51. data7 = 0;
  52. data8 = 0;
  53. data9 = 0;
  54. data10.clear();
  55. data11 = 0.0f;
  56. data12 = IntVector3();
  57. data13 = Vector3();
  58. Server::resetHandler();
  59. Server::setConnectHandler([](Server::Client) { serverConnected = true; });
  60. Server::setDisconnectHandler(
  61. [](Server::Client) { serverDisconnect = true; });
  62. Server::setPacketHandler([](Server::Client client, InPacket& in) {
  63. in.read(data1);
  64. in.read(data2);
  65. in.read(data3);
  66. in.read(data4);
  67. in.read(data5);
  68. in.read(data6);
  69. in.read(data7);
  70. in.read(data8);
  71. in.read(data9);
  72. in.read(data10);
  73. in.read(data11);
  74. in.read(data12);
  75. in.read(data13);
  76. if(packageCounter == 0) {
  77. OutPacket out(0);
  78. Server::send(client, out, PacketSendMode::RELIABLE);
  79. } else if(packageCounter == 1) {
  80. OutPacket out(0);
  81. Server::send(client, out, PacketSendMode::SEQUENCED);
  82. } else if(packageCounter == 2) {
  83. OutPacket out(0);
  84. Server::send(client, out, PacketSendMode::UNSEQUENCED);
  85. }
  86. packageCounter++;
  87. });
  88. Client::resetHandler();
  89. Client::setConnectHandler([]() { clientConnected = true; });
  90. Client::setDisconnectHandler([]() { clientDisconnected = true; });
  91. Client::setPacketHandler([](InPacket&) { clientPackage = true; });
  92. if(checkError(test, Server::start(54321, 5), "server can initialize")) {
  93. return;
  94. } else if(checkError(test, Client::start(), "client can initialize")) {
  95. return;
  96. } else if(checkError(test, Client::connect("127.0.0.1", 54321, 90),
  97. "start connection failed")) {
  98. return;
  99. }
  100. test.checkFalse(Client::isConnected(), "client not connected yet");
  101. test.checkTrue(Client::isConnecting(), "client is connecting");
  102. tick(100);
  103. test.checkTrue(clientConnected, "client called connect callback");
  104. test.checkTrue(Client::isConnected(), "client is connected");
  105. test.checkFalse(Client::isConnecting(), "client is no more connecting");
  106. OutPacket out(50);
  107. out.writeU8(0xF1).writeU16(0xF123).writeU32(0xF1234567);
  108. out.writeS8(-0x71).writeS16(-0x7123).writeS32(-0x71234567);
  109. out.writeS8(0x71).writeS16(0x7123).writeS32(0x71234567);
  110. StringBuffer<20> s("Hi there");
  111. out.writeString(s);
  112. out.writeFloat(252345.983f);
  113. out.writeVector(IntVector3(1, 2, 3));
  114. out.writeVector(Vector3(1.5f, 2.5f, 3.5f));
  115. Client::send(out, mode);
  116. tick(100);
  117. test.checkTrue(clientPackage, "client has received data");
  118. test.checkTrue(serverConnected, "server has connection");
  119. test.checkUnsigned8(0xF1, data1, "correct value is sent 1");
  120. test.checkUnsigned16(0xF123, data2, "correct value is sent 2");
  121. test.checkEqual(0xF1234567u, data3, "correct value is sent 3");
  122. test.checkSigned8(-0x71, data4, "correct value is sent 4");
  123. test.checkSigned16(-0x7123, data5, "correct value is sent 5");
  124. test.checkEqual(-0x71234567, data6, "correct value is sent 6");
  125. test.checkSigned8(0x71, data7, "correct value is sent 7");
  126. test.checkSigned16(0x7123, data8, "correct value is sent 8");
  127. test.checkEqual(0x71234567, data9, "correct value is sent 9");
  128. test.checkEqual(s, data10, "correct value is sent 10");
  129. test.checkFloat(252345.983f, data11, 0.01f, "correct value is sent 11");
  130. test.checkEqual(1, data12[0], "correct value is sent 12|1");
  131. test.checkEqual(2, data12[1], "correct value is sent 12|2");
  132. test.checkEqual(3, data12[2], "correct value is sent 12|3");
  133. test.checkFloat(1.5f, data13[0], 0.01f, "correct value is sent 13|1");
  134. test.checkFloat(2.5f, data13[1], 0.01f, "correct value is sent 13|2");
  135. test.checkFloat(3.5f, data13[2], 0.01f, "correct value is sent 13|3");
  136. Client::disconnect(90);
  137. test.checkFalse(Client::isConnected(), "client was disconnected");
  138. test.checkFalse(Client::isConnecting(), "client is not connecting");
  139. tick(100);
  140. test.checkTrue(clientDisconnected, "client has disconnected");
  141. test.checkTrue(serverDisconnect, "client has disconnected on server");
  142. Client::stop();
  143. Server::stop();
  144. }
  145. static void testDisconnect(Test& test) {
  146. static bool disconnected = false;
  147. disconnected = false;
  148. Client::resetHandler();
  149. Client::setDisconnectHandler([]() { disconnected = true; });
  150. if(checkError(test, Client::start(), "client can initialize")) {
  151. return;
  152. } else if(checkError(test, Client::connect("127.0.0.1", 54321, 90),
  153. "start connection failed")) {
  154. return;
  155. }
  156. test.checkFalse(Client::isConnected(), "client not connected yet");
  157. test.checkTrue(Client::isConnecting(), "client is connecting");
  158. Client::disconnect(50);
  159. tickClient(100);
  160. test.checkFalse(Client::isConnected(), "client was disconnected");
  161. test.checkFalse(Client::isConnecting(), "client is not connecting");
  162. test.checkTrue(disconnected, "client has disconnected");
  163. Client::stop();
  164. }
  165. static void testStop(Test& test) {
  166. static bool disconnected = false;
  167. disconnected = false;
  168. Client::resetHandler();
  169. Client::setDisconnectHandler([]() { disconnected = true; });
  170. if(checkError(test, Client::start(), "client can initialize")) {
  171. return;
  172. } else if(checkError(test, Client::connect("127.0.0.1", 54321, 90),
  173. "start connection failed")) {
  174. return;
  175. }
  176. test.checkFalse(Client::isConnected(), "client not connected yet");
  177. test.checkTrue(Client::isConnecting(), "client is connecting");
  178. Client::stop();
  179. test.checkFalse(Client::isConnected(), "client was disconnected");
  180. test.checkFalse(Client::isConnecting(), "client is not connecting");
  181. test.checkTrue(disconnected, "client has disconnected");
  182. }*/
  183. void coreTestNetwork() {
  184. // testConnect(test, PacketSendMode::UNSEQUENCED);
  185. // testConnect(test, PacketSendMode::RELIABLE);
  186. // testConnect(test, PacketSendMode::SEQUENCED);
  187. // testDisconnect(test);
  188. // testStop(test);
  189. }