LCOV - code coverage report
Current view: top level - inline - inline_unittests.c (source / functions) Hit Total Coverage
Test: coverage.info Lines: 39 40 97.5 %
Date: 2023-02-14 20:10:26 Functions: 1 1 100.0 %

          Line data    Source code
       1             : #include <stdio.h>
       2             : #include <string.h>
       3             : #include <pb_decode.h>
       4             : #include <pb_encode.h>
       5             : #include "unittests.h"
       6             : #include "inline.pb.h"
       7             : 
       8           1 : int main()
       9             : {
      10           1 :     int status = 0;
      11           1 :     int i = 0;
      12           1 :     COMMENT("Test inline byte fields");
      13             : 
      14             :     {
      15           1 :       Message1 msg1 = Message1_init_zero;
      16           1 :       TEST(sizeof(msg1.data) == 32);
      17             :     }
      18             : 
      19             :     {
      20           1 :       Message1 msg1 = Message1_init_zero;
      21             :       pb_byte_t msg1_buffer[Message1_size];
      22           1 :       pb_ostream_t ostream = pb_ostream_from_buffer(msg1_buffer, Message1_size);
      23           1 :       Message1 msg1_deserialized = Message1_init_zero;
      24           1 :       pb_istream_t istream = pb_istream_from_buffer(msg1_buffer, Message1_size);
      25             : 
      26          33 :       for (i = 0; i < 32; i++) {
      27          32 :         msg1.data[i] = i;
      28             :       }
      29             : 
      30           1 :       TEST(pb_encode(&ostream, Message1_fields, &msg1));
      31           1 :       TEST(ostream.bytes_written == Message1_size);
      32             : 
      33           1 :       TEST(pb_decode(&istream, Message1_fields, &msg1_deserialized));
      34             : 
      35           1 :       TEST(istream.bytes_left == 0);
      36           1 :       TEST(memcmp(&msg1_deserialized, &msg1, sizeof(msg1)) == 0);
      37             :     }
      38             : 
      39             :     {
      40           1 :       Message2 msg2 = {true, {0}};
      41           1 :       Message2 msg2_no_data = {false, {1}};
      42             :       pb_byte_t msg2_buffer[Message2_size];
      43           1 :       pb_ostream_t ostream = pb_ostream_from_buffer(msg2_buffer, Message2_size);
      44           1 :       Message2 msg2_deserialized = Message2_init_zero;
      45           1 :       pb_istream_t istream = pb_istream_from_buffer(msg2_buffer, Message2_size);
      46             : 
      47          65 :       for (i = 0; i < 64; i++) {
      48          64 :         msg2.data[i] = i;
      49             :       }
      50             : 
      51           1 :       TEST(pb_encode(&ostream, Message2_fields, &msg2));
      52           1 :       TEST(ostream.bytes_written == Message2_size);
      53             : 
      54           1 :       TEST(pb_decode(&istream, Message2_fields, &msg2_deserialized));
      55             : 
      56           1 :       TEST(istream.bytes_left == 0);
      57           1 :       TEST(memcmp(&msg2_deserialized, &msg2, sizeof(msg2)) == 0);
      58           1 :       TEST(msg2_deserialized.has_data);
      59             : 
      60           1 :       memset(msg2_buffer, 0, sizeof(msg2_buffer));
      61           1 :       ostream = pb_ostream_from_buffer(msg2_buffer, Message2_size);
      62           1 :       TEST(pb_encode(&ostream, Message2_fields, &msg2_no_data));
      63           1 :       istream = pb_istream_from_buffer(msg2_buffer, ostream.bytes_written);
      64           1 :       TEST(pb_decode(&istream, Message2_fields, &msg2_deserialized));
      65           1 :       TEST(!msg2_deserialized.has_data);
      66           1 :       TEST(memcmp(&msg2_deserialized, &msg2, sizeof(msg2)) != 0);
      67             :     }
      68             : 
      69           1 :     if (status != 0)
      70           0 :         fprintf(stdout, "\n\nSome tests FAILED!\n");
      71             : 
      72           1 :     return status;
      73             : }

Generated by: LCOV version 1.14