bproto_test.c 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. #include <string.h>
  2. #include <stdint.h>
  3. #include <stdio.h>
  4. #include <misc/debug.h>
  5. #include <misc/balloc.h>
  6. #include <generated/bproto_bproto_test.h>
  7. int main ()
  8. {
  9. uint16_t a = 17501;
  10. uint64_t c = 82688926;
  11. uint16_t d1 = 1517;
  12. uint16_t d2 = 1518;
  13. uint8_t e = 72;
  14. const char *f = "hello world";
  15. const char *g = "helo";
  16. // encode message
  17. int len = msg1_SIZEa + msg1_SIZEc + msg1_SIZEd + msg1_SIZEd + msg1_SIZEe + msg1_SIZEf(strlen(f)) + msg1_SIZEg;
  18. uint8_t *msg = (uint8_t *)BAlloc(len);
  19. ASSERT_FORCE(msg)
  20. msg1Writer writer;
  21. msg1Writer_Init(&writer, msg);
  22. msg1Writer_Adda(&writer, a);
  23. msg1Writer_Addc(&writer, c);
  24. msg1Writer_Addd(&writer, d1);
  25. msg1Writer_Addd(&writer, d2);
  26. msg1Writer_Adde(&writer, e);
  27. uint8_t *f_dst = msg1Writer_Addf(&writer, strlen(f));
  28. memcpy(f_dst, f, strlen(f));
  29. uint8_t *g_dst = msg1Writer_Addg(&writer);
  30. memcpy(g_dst, g, strlen(g));
  31. int len2 = msg1Writer_Finish(&writer);
  32. ASSERT(len2 == len)
  33. // parse message
  34. msg1Parser parser;
  35. ASSERT_EXECUTE(msg1Parser_Init(&parser, msg, len))
  36. // check parse results
  37. uint16_t p_a;
  38. uint64_t p_c;
  39. uint16_t p_d1;
  40. uint16_t p_d2;
  41. uint8_t p_e;
  42. uint8_t *p_f;
  43. int p_f_len;
  44. uint8_t *p_g;
  45. ASSERT_EXECUTE(msg1Parser_Geta(&parser, &p_a))
  46. ASSERT_EXECUTE(msg1Parser_Getc(&parser, &p_c))
  47. ASSERT_EXECUTE(msg1Parser_Getd(&parser, &p_d1))
  48. ASSERT_EXECUTE(msg1Parser_Getd(&parser, &p_d2))
  49. ASSERT_EXECUTE(msg1Parser_Gete(&parser, &p_e))
  50. ASSERT_EXECUTE(msg1Parser_Getf(&parser, &p_f, &p_f_len))
  51. ASSERT_EXECUTE(msg1Parser_Getg(&parser, &p_g))
  52. ASSERT(p_a == a)
  53. ASSERT(p_c == c)
  54. ASSERT(p_d1 == d1)
  55. ASSERT(p_d2 == d2)
  56. ASSERT(p_e == e)
  57. ASSERT(p_f_len == strlen(f) && !memcmp(p_f, f, p_f_len))
  58. ASSERT(!memcmp(p_g, g, strlen(g)))
  59. ASSERT(msg1Parser_GotEverything(&parser))
  60. BFree(msg);
  61. return 0;
  62. }