messages.cpp 8.9 KB

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