1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- /* Checks that missing required fields are detected properly */
- #include <stdio.h>
- #include <pb_encode.h>
- #include <pb_decode.h>
- #include "missing_fields.pb.h"
- int main()
- {
- uint8_t buffer[512];
- size_t size;
-
- /* Create a message with one missing field */
- {
- MissingField msg = {0};
- pb_ostream_t stream = pb_ostream_from_buffer(buffer, sizeof(buffer));
-
- if (!pb_encode(&stream, MissingField_fields, &msg))
- {
- printf("Encode failed.\n");
- return 1;
- }
- size = stream.bytes_written;
- }
- /* Test that it decodes properly if we don't require that field */
- {
- MissingField msg = {0};
- pb_istream_t stream = pb_istream_from_buffer(buffer, size);
-
- if (!pb_decode(&stream, MissingField_fields, &msg))
- {
- printf("Decode failed: %s\n", PB_GET_ERROR(&stream));
- return 2;
- }
- }
-
- /* Test that it does *not* decode properly if we require the field */
- {
- AllFields msg = {0};
- pb_istream_t stream = pb_istream_from_buffer(buffer, size);
-
- if (pb_decode(&stream, AllFields_fields, &msg))
- {
- printf("Decode didn't detect missing field.\n");
- return 3;
- }
- }
-
- return 0; /* All ok */
- }
|