void test_struct_parser_test () { byte bytes[] = { 0, 255, 255, FRAMEPARSER_HELPER_SENTINEL, FRAMEPARSER_HELPER_ENDFRAME, 1, 0, 0, FRAMEPARSER_HELPER_SENTINEL, FRAMEPARSER_HELPER_SENTINEL, 64, 23, 3, 11, 5, 2, 4, 2, FRAMEPARSER_HELPER_SENTINEL, FRAMEPARSER_HELPER_SENTINEL, 4, 2, 1, 114, 84, 5, 19, FRAMEPARSER_HELPER_ENDFRAME }; int i; HighFlyersParser parser; parser_initialize(&parser); for (i = 0; i < 28; i++) parser_append_byte(&parser, bytes[i]); ASSERT_TRUE(parser_has_frame(&parser)); FrameProxy p = parser_get_last_frame_ownership(&parser); ASSERT_EQ(T_TestStruct, p.type, "%d"); TestStruct* str = (TestStruct*)p.pointer; ASSERT_TRUE(str); ASSERT_EQ(256 + FRAMEPARSER_HELPER_ENDFRAME, str->Field1, "%d"); ASSERT_EQ(2, str->Field3, "%d"); frame_proxy_free(&p); }
int main(void) { status_t error = SUCCESS; parser_t *parser = parser_initialize(stdin); expr_t *expr; error = parse(parser, &expr); while (!error && expr != NULL) { printf("%lu\n", expr_eval(expr)); expr_uninitialize(expr); error = parse(parser, &expr); } exit1: parser_uninitialize(parser); exit0: print_error(error); return error; }
void second_struct_serialize_parser_test () { int i; SecondStruct str; TestStruct ts; ts.Field1 = 256 + 5; ts.Field3 = 80; ts.Field4 = 52; ts.Field2_enabled = 0; ts.Field4_enabled = 1; str.Field1 = ts; str.Field2 = 98; str.Field3_enabled = 0; int frame_size = 22; byte data[frame_size]; SecondStruct_serialize (&str, data); HighFlyersParser parser; parser_initialize(&parser); for (i = 0; i < frame_size; i++) parser_append_byte(&parser, data[i]); ASSERT_TRUE(parser_has_frame(&parser)); FrameProxy p = parser_get_last_frame_ownership(&parser); ASSERT_EQ(T_SecondStruct, p.type, "%d"); SecondStruct* frame = (SecondStruct*)p.pointer; ASSERT_TRUE(frame); ASSERT_EQ(frame->Field1.Field1, str.Field1.Field1, "%d"); ASSERT_EQ(frame->Field1.Field3, str.Field1.Field3, "%d"); ASSERT_EQ(frame->Field1.Field4, str.Field1.Field4, "%d"); ASSERT_EQ(frame->Field2, str.Field2, "%d"); frame_proxy_free(&p); }
void test_struct_serialize_parser_test () { int i; TestStruct str; str.Field1 = 32; str.Field3 = 13; str.Field4 = 108; str.Field2_enabled = 0; str.Field4_enabled = 1; int frame_size = 30; byte data[frame_size]; TestStruct_serialize(&str, data); HighFlyersParser parser; parser_initialize (&parser); for (i = 0; i < frame_size; i++) { parser_append_byte(&parser, data[i]); if (parser_has_frame(&parser)) break; } ASSERT_TRUE(parser_has_frame(&parser)); FrameProxy p = parser_get_last_frame_ownership(&parser); TestStruct* frame = (TestStruct*)p.pointer; ASSERT_TRUE(frame); ASSERT_EQ(str.Field1, frame->Field1, "%d"); ASSERT_EQ(str.Field3, frame->Field3, "%d"); ASSERT_EQ(str.Field4, frame->Field4, "%d"); frame_proxy_free(&p); }
void second_struct_parser_test () { byte bytes[] = { 1, 1 + 2, 0, FRAMEPARSER_HELPER_SENTINEL, 1 + 4 + 8, 0, 5, 1, 0, 0, 80, 52, 0, 0, 0, 98, 248, 53, 39, 134, FRAMEPARSER_HELPER_ENDFRAME }; int i; HighFlyersParser parser; parser_initialize(&parser); for (i = 0; i < sizeof(bytes); i++) parser_append_byte(&parser, bytes[i]); ASSERT_TRUE(parser_has_frame(&parser)); FrameProxy p = parser_get_last_frame_ownership(&parser); ASSERT_EQ(T_SecondStruct, p.type, "%d"); SecondStruct* str = (SecondStruct*)p.pointer; ASSERT_TRUE(str); ASSERT_EQ(256 + 5, str->Field1.Field1, "%d"); ASSERT_TRUE(!str->Field1.Field2_enabled); ASSERT_EQ(80, str->Field1.Field3, "%d"); ASSERT_EQ(52, str->Field1.Field4, "%d"); ASSERT_EQ(98, str->Field2, "%d"); ASSERT_TRUE(!str->Field3_enabled); frame_proxy_free(&p); }