MOS Source Code
Loading...
Searching...
No Matches
test_custom_naming_style_c.c
Go to the documentation of this file.
1#include <stdio.h>
2#include <stdbool.h>
3#include <string.h>
4#include <assert.h>
5#include <pb_encode.h>
6#include <pb_decode.h>
7#include "unittests.h"
8#include "custom_naming_style.pb.h"
9
10int main()
11{
12 int status = 0;
13 MainMessage defaultMessage = MAIN_MESSAGE_INIT_DEFAULT;
14 MainMessage message = MAIN_MESSAGE_INIT_ZERO;
15
16 /* Verify the default value was initialized */
17 TEST(defaultMessage.myEnum5 == MY_ENUM1_ENTRY_SECOND);
18
19 /* Verify that all members have the expected names */
20 message.luckyNumber = 13;
21 message.requiredNumber = 1;
22 message.repeatedNumber[0] = 1;
23 message.repeatedInts = NULL;
24
25 message.myEnum1 = MY_ENUM1_ENUM_THIRD;
26 message.myEnum2 = MY_ENUM2_ENUM2_ENTRY;
27 message.myEnum3 = MY_ENUM2_ENUM2_ENTRY;
28 message.myEnum4.arg = NULL;
29
30 message.stringValues1 = NULL;
31 message.stringValues2[0][0] = 'a';
32 message.optionalString.arg = NULL;
33 message.requiredString[0] = 'a';
34
35 message.repeatedFixed32[0] = 1;
36
37 message.requiredBytes1[0] = 0;
38 message.requiredBytes2.size = 0;
39 message.repeatedBytes1_count = 0;
40 message.repeatedBytes2 = NULL;
41
42 message.has_subMessage1 = true;
43 message.subMessage1.has_testValue = true;
44 message.subMessage1.testValue = 0;
45 message.subMessage2.arg = NULL;
46 message.subMessage3.testValue = 0;
47
48 message.which_oneOfName = MAIN_MESSAGE_TEST_MESSAGE2_TAG;
49 message.oneOfName.testMessage2.has_testValue = true;
50 message.oneOfName.testMessage2.testValue = 5;
51
52 message.which_oneOfName2 = MAIN_MESSAGE_TEST_MESSAGE5_TAG;
53 message.testMessage5.testValue = 5;
54
55 TEST(strcmp("ENTRY_FIRST", MyEnum1Name(MY_ENUM1_ENTRY_FIRST)) == 0);
56 TEST(MyEnum1Valid(MY_ENUM1_ENTRY_FIRST) == true);
57 TEST(MyEnum2Valid(MY_ENUM2_ENUM2_ENTRY) == true);
58
59 /* Verify that the descriptor structure is at least mostly correct
60 * by doing a round-trip encoding test.
61 */
62 {
63 uint8_t buffer1[256];
64 uint8_t buffer2[256];
65 pb_ostream_t ostream1 = pb_ostream_from_buffer(buffer1, sizeof(buffer1));
66 pb_ostream_t ostream2 = pb_ostream_from_buffer(buffer2, sizeof(buffer2));
67 pb_istream_t istream;
68 MainMessage message2 = MAIN_MESSAGE_INIT_ZERO;
69
70 TEST(pb_encode(&ostream1, &MainMessage_msg, &message));
71
72 istream = pb_istream_from_buffer(buffer1, ostream1.bytes_written);
73 TEST(pb_decode(&istream, &MainMessage_msg, &message2));
74
75 /* Encoding a second time should produce same output */
76 TEST(pb_encode(&ostream2, &MainMessage_msg, &message2));
77
78 TEST(ostream2.bytes_written == ostream1.bytes_written);
79 TEST(memcmp(buffer1, buffer2, ostream1.bytes_written) == 0);
80 }
81
82 return status;
83}
MOSAPI int memcmp(const void *s1, const void *s2, size_t n)
MOSAPI s32 strcmp(const char *str1, const char *str2)
bool pb_decode(pb_istream_t *stream, const pb_msgdesc_t *fields, void *dest_struct)
Definition pb_decode.c:1210
pb_istream_t pb_istream_from_buffer(const pb_byte_t *buf, size_t msglen)
Definition pb_decode.c:142
pb_ostream_t pb_ostream_from_buffer(pb_byte_t *buf, size_t bufsize)
Definition pb_encode.c:63
bool pb_encode(pb_ostream_t *stream, const pb_msgdesc_t *fields, const void *src_struct)
Definition pb_encode.c:512
#define NULL
Definition pb_syshdr.h:46
unsigned char uint8_t
Definition pb_syshdr.h:20
#define TEST(x)
Definition test.h:3