messages.cpp 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365
  1. #include <cstdio>
  2. #include "Vec3.h"
  3. #include "OS.h"
  4. #include "BitMessage.h"
  5. using namespace crown;
  6. void test_int8()
  7. {
  8. uint32_t bits_written;
  9. uint32_t rem_write_bits;
  10. uint32_t bits_read;
  11. uint32_t rem_read_bits;
  12. network::BitMessage m = network::BitMessage();
  13. uint8_t tmp[4];
  14. int8_t res;
  15. m.init(tmp, 4);
  16. m.begin_writing();
  17. m.write_int8(-56);
  18. bits_written = m.get_num_bits_written();
  19. rem_write_bits = m.get_remaining_write_bits();
  20. res = m.read_int8();
  21. bits_read = m.get_num_bits_read();
  22. rem_read_bits = m.get_remaining_read_bits();
  23. printf("\n-----------------------------\n");
  24. printf("start write and read for UINT8\n");
  25. printf("value = %d\n", res);
  26. printf("bits written = %d\n", bits_written);
  27. printf("remaining write bits = %d\n", rem_write_bits);
  28. printf("bits read = %d\n", bits_read);
  29. printf("remaining read bits = %d\n", rem_read_bits);
  30. printf("-----------------------------\n");
  31. printf("\n");
  32. }
  33. void test_uint8()
  34. {
  35. uint32_t bits_written;
  36. uint32_t rem_write_bits;
  37. uint32_t bits_read;
  38. uint32_t rem_read_bits;
  39. network::BitMessage m = network::BitMessage();
  40. uint8_t tmp[4];
  41. uint8_t res;
  42. m.init(tmp, 4);
  43. m.begin_writing();
  44. m.write_uint8(255);
  45. bits_written = m.get_num_bits_written();
  46. rem_write_bits = m.get_remaining_write_bits();
  47. res = m.read_uint8();
  48. bits_read = m.get_num_bits_read();
  49. rem_read_bits = m.get_remaining_read_bits();
  50. printf("\n-----------------------------\n");
  51. printf("start write and read for UINT8\n");
  52. printf("value = %d\n", res);
  53. printf("bits written = %d\n", bits_written);
  54. printf("remaining write bits = %d\n", rem_write_bits);
  55. printf("bits read = %d\n", bits_read);
  56. printf("remaining read bits = %d\n", rem_read_bits);
  57. printf("-----------------------------\n");
  58. printf("\n");
  59. }
  60. void test_int16()
  61. {
  62. uint32_t bits_written;
  63. uint32_t rem_write_bits;
  64. uint32_t bits_read;
  65. uint32_t rem_read_bits;
  66. network::BitMessage m = network::BitMessage();
  67. uint8_t tmp[4];
  68. int16_t res;
  69. m.init(tmp, 4);
  70. m.write_int16(-5555);
  71. bits_written = m.get_num_bits_written();
  72. rem_write_bits = m.get_remaining_write_bits();
  73. res = m.read_int16();
  74. bits_read = m.get_num_bits_read();
  75. rem_read_bits = m.get_remaining_read_bits();
  76. printf("-----------------------------\n");
  77. printf("start write and read for INT16\n");
  78. printf("value = %d\n", res);
  79. printf("bits written = %d\n", bits_written);
  80. printf("remaining write bits = %d\n", rem_write_bits);
  81. printf("bits read = %d\n", bits_read);
  82. printf("remaining read bits = %d\n", rem_read_bits);
  83. printf("-----------------------------\n");
  84. printf("\n");
  85. }
  86. void test_uint16()
  87. {
  88. uint32_t bits_written;
  89. uint32_t rem_write_bits;
  90. uint32_t bits_read;
  91. uint32_t rem_read_bits;
  92. network::BitMessage m = network::BitMessage();
  93. uint8_t tmp[4];
  94. uint16_t res;
  95. m.init(tmp, 4);
  96. m.write_uint16(5555);
  97. bits_written = m.get_num_bits_written();
  98. rem_write_bits = m.get_remaining_write_bits();
  99. res = m.read_uint16();
  100. bits_read = m.get_num_bits_read();
  101. rem_read_bits = m.get_remaining_read_bits();
  102. printf("-----------------------------\n");
  103. printf("start write and read for UINT16\n");
  104. printf("value = %d\n", res);
  105. printf("bits written = %d\n", bits_written);
  106. printf("remaining write bits = %d\n", rem_write_bits);
  107. printf("bits read = %d\n", bits_read);
  108. printf("remaining read bits = %d\n", rem_read_bits);
  109. printf("-----------------------------\n");
  110. printf("\n");
  111. }
  112. void test_int32()
  113. {
  114. uint32_t bits_written;
  115. uint32_t rem_write_bits;
  116. uint32_t bits_read;
  117. uint32_t rem_read_bits;
  118. network::BitMessage m = network::BitMessage();
  119. uint8_t tmp[4];
  120. int32_t res;
  121. m.init(tmp, 4);
  122. m.write_int32(4000000);
  123. bits_written = m.get_num_bits_written();
  124. rem_write_bits = m.get_remaining_write_bits();
  125. res = m.read_int32();
  126. bits_read = m.get_num_bits_read();
  127. rem_read_bits = m.get_remaining_read_bits();
  128. printf("-----------------------------\n");
  129. printf("start write and read for INT32\n");
  130. printf("value = %d\n", res);
  131. printf("bits written = %d\n", bits_written);
  132. printf("remaining write bits = %d\n", rem_write_bits);
  133. printf("bits read = %d\n", bits_read);
  134. printf("remaining read bits = %d\n", rem_read_bits);
  135. printf("-----------------------------\n");
  136. printf("\n");
  137. }
  138. void test_real()
  139. {
  140. uint32_t bits_written;
  141. uint32_t rem_write_bits;
  142. uint32_t bits_read;
  143. uint32_t rem_read_bits;
  144. network::BitMessage m = network::BitMessage();
  145. uint8_t tmp[4];
  146. real res;
  147. m.init(tmp, 4);
  148. m.write_real(4.5342f);
  149. bits_written = m.get_num_bits_written();
  150. rem_write_bits = m.get_remaining_write_bits();
  151. res = m.read_real();
  152. bits_read = m.get_num_bits_read();
  153. rem_read_bits = m.get_remaining_read_bits();
  154. printf("-----------------------------\n");
  155. printf("start write and read for REAL\n");
  156. printf("value = %f\n", res);
  157. printf("bits written = %d\n", bits_written);
  158. printf("remaining write bits = %d\n", rem_write_bits);
  159. printf("bits read = %d\n", bits_read);
  160. printf("remaining read bits = %d\n", rem_read_bits);
  161. printf("-----------------------------\n");
  162. printf("\n");
  163. }
  164. void test_vec3()
  165. {
  166. uint32_t bits_written;
  167. uint32_t rem_write_bits;
  168. uint32_t bits_read;
  169. uint32_t rem_read_bits;
  170. network::BitMessage m = network::BitMessage();
  171. uint8_t tmp[12];
  172. Vec3 v(0.525f, 0.432f, 0.234f);
  173. Vec3 res;
  174. m.init(tmp, 12);
  175. m.write_vec3(v);
  176. bits_written = m.get_num_bits_written();
  177. rem_write_bits = m.get_remaining_write_bits();
  178. res = m.read_vec3();
  179. bits_read = m.get_num_bits_read();
  180. rem_read_bits = m.get_remaining_read_bits();
  181. printf("-----------------------------\n");
  182. printf("start write and read for VEC_3\n");
  183. printf("x = %f, y = %f, z = %f\n", res.x, res.y, res.z);
  184. printf("bits written = %d\n", bits_written);
  185. printf("remaining write bits = %d\n", rem_write_bits);
  186. printf("bits read = %d\n", bits_read);
  187. printf("remaining read bits = %d\n", rem_read_bits);
  188. printf("-----------------------------\n");
  189. printf("\n");
  190. }
  191. void test_string()
  192. {
  193. uint32_t bits_written;
  194. uint32_t rem_write_bits;
  195. uint32_t bits_read;
  196. uint32_t rem_read_bits;
  197. network::BitMessage m = network::BitMessage();
  198. uint8_t tmp[16];
  199. char res[16];
  200. char s[] = "test";
  201. m.init(tmp, 16);
  202. m.write_string(s, sizeof(s), true);
  203. bits_written = m.get_num_bits_written();
  204. rem_write_bits = m.get_remaining_write_bits();
  205. m.read_string(res, 6);
  206. bits_read = m.get_num_bits_read();
  207. rem_read_bits = m.get_remaining_read_bits();
  208. printf("-----------------------------\n");
  209. printf("start write and read for STRING\n");
  210. printf("string = %s\n", res);
  211. printf("bits written = %d\n", bits_written);
  212. printf("remaining write bits = %d\n", rem_write_bits);
  213. printf("bits read = %d\n", bits_read);
  214. printf("remaining read bits = %d\n", rem_read_bits);
  215. printf("-----------------------------\n");
  216. printf("\n");
  217. }
  218. void test_data()
  219. {
  220. uint32_t bits_written;
  221. uint32_t rem_write_bits;
  222. uint32_t bits_read;
  223. uint32_t rem_read_bits;
  224. network::BitMessage m = network::BitMessage();
  225. uint8_t tmp[] = "test generic";
  226. uint8_t res[16];
  227. m.init(tmp, 16);
  228. m.write_data(tmp, 16);
  229. bits_written = m.get_num_bits_written();
  230. rem_write_bits = m.get_remaining_write_bits();
  231. m.read_data(res, 16);
  232. bits_read = m.get_num_bits_read();
  233. rem_read_bits = m.get_remaining_read_bits();
  234. printf("-----------------------------\n");
  235. printf("start write and read for GENERIC\n");
  236. printf("string = %s\n", res);
  237. printf("bits written = %d\n", bits_written);
  238. printf("remaining write bits = %d\n", rem_write_bits);
  239. printf("bits read = %d\n", bits_read);
  240. printf("remaining read bits = %d\n", rem_read_bits);
  241. printf("-----------------------------\n");
  242. printf("\n");
  243. }
  244. void test_net_address()
  245. {
  246. uint32_t bits_written;
  247. uint32_t rem_write_bits;
  248. uint32_t bits_read;
  249. uint32_t rem_read_bits;
  250. network::BitMessage m = network::BitMessage();
  251. uint8_t tmp[16];
  252. os::NetAddress addr;
  253. os::NetAddress res;
  254. addr.set(192, 168, 0, 1, 80);
  255. m.init(tmp, 16);
  256. m.write_ipv4addr(addr);
  257. bits_written = m.get_num_bits_written();
  258. rem_write_bits = m.get_remaining_write_bits();
  259. m.read_ipv4addr(&res);
  260. bits_read = m.get_num_bits_read();
  261. rem_read_bits = m.get_remaining_read_bits();
  262. printf("-----------------------------\n");
  263. printf("start write and read for NET_ADDRESS\n");
  264. printf("a = %d, b = %d, c = %d, d = %d, p = %d\n", res.address[0], res.address[1], res.address[2], res.address[3], res.port);
  265. printf("bits written = %d\n", bits_written);
  266. printf("remaining write bits = %d\n", rem_write_bits);
  267. printf("bits read = %d\n", bits_read);
  268. printf("remaining read bits = %d\n", rem_read_bits);
  269. printf("-----------------------------\n");
  270. printf("\n");
  271. }
  272. int main()
  273. {
  274. test_int8();
  275. test_uint8();
  276. test_int16();
  277. test_uint16();
  278. test_int32();
  279. test_real();
  280. test_vec3();
  281. test_string();
  282. test_data();
  283. test_net_address();
  284. return 0;
  285. }