bproto_test.c 1.9 KB

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