BadVPN – Blame information for rev 1

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