xref: /aosp_15_r20/external/nanopb-c/tests/regression/issue_247/padding.c (revision c8d645cafcee3f91213d30caa0fe303887010b9b)
1*c8d645caSAndroid Build Coastguard Worker #include <pb_encode.h>
2*c8d645caSAndroid Build Coastguard Worker #include <unittests.h>
3*c8d645caSAndroid Build Coastguard Worker #include <string.h>
4*c8d645caSAndroid Build Coastguard Worker #include "padding.pb.h"
5*c8d645caSAndroid Build Coastguard Worker 
main()6*c8d645caSAndroid Build Coastguard Worker int main()
7*c8d645caSAndroid Build Coastguard Worker {
8*c8d645caSAndroid Build Coastguard Worker     int status = 0;
9*c8d645caSAndroid Build Coastguard Worker 
10*c8d645caSAndroid Build Coastguard Worker     TestMessage msg;
11*c8d645caSAndroid Build Coastguard Worker 
12*c8d645caSAndroid Build Coastguard Worker     /* Set padding bytes to garbage */
13*c8d645caSAndroid Build Coastguard Worker     memset(&msg, 0xAA, sizeof(msg));
14*c8d645caSAndroid Build Coastguard Worker 
15*c8d645caSAndroid Build Coastguard Worker     /* Set all meaningful fields to 0 */
16*c8d645caSAndroid Build Coastguard Worker     msg.submsg.boolfield = false;
17*c8d645caSAndroid Build Coastguard Worker     msg.submsg.intfield = 0;
18*c8d645caSAndroid Build Coastguard Worker 
19*c8d645caSAndroid Build Coastguard Worker     /* Test encoding */
20*c8d645caSAndroid Build Coastguard Worker     {
21*c8d645caSAndroid Build Coastguard Worker         pb_byte_t buf[128] = {0};
22*c8d645caSAndroid Build Coastguard Worker         pb_ostream_t stream = pb_ostream_from_buffer(buf, sizeof(buf));
23*c8d645caSAndroid Build Coastguard Worker         TEST(pb_encode(&stream, TestMessage_fields, &msg));
24*c8d645caSAndroid Build Coastguard Worker 
25*c8d645caSAndroid Build Coastguard Worker         /* Because all fields have zero values, proto3 encoder
26*c8d645caSAndroid Build Coastguard Worker          * shouldn't write out anything. */
27*c8d645caSAndroid Build Coastguard Worker         TEST(stream.bytes_written == 0);
28*c8d645caSAndroid Build Coastguard Worker     }
29*c8d645caSAndroid Build Coastguard Worker 
30*c8d645caSAndroid Build Coastguard Worker     return status;
31*c8d645caSAndroid Build Coastguard Worker }
32*c8d645caSAndroid Build Coastguard Worker 
33