} while (pb_field_next(&iter));
/* Fixup if last field was also required. */
- if (PB_HTYPE(last_type) == PB_HTYPE_REQUIRED)
+ if (PB_HTYPE(last_type) == PB_HTYPE_REQUIRED && iter.current->tag)
req_field_count++;
/* Check the whole bytes */
optional fixed32 substuff3 = 3 [default = 3];
}
+message EmptyMessage {
+
+}
+
enum MyEnum {
Zero = 0;
First = 1;
required bytes req_bytes = 15 [(nanopb).max_size = 16];
required SubMessage req_submsg = 16;
required MyEnum req_enum = 17;
+ required EmptyMessage req_emptymsg = 18;
repeated int32 rep_int32 = 21 [(nanopb).max_count = 5];
repeated bytes rep_bytes = 35 [(nanopb).max_size = 16, (nanopb).max_count = 5];
repeated SubMessage rep_submsg = 36 [(nanopb).max_count = 5];
repeated MyEnum rep_enum = 37 [(nanopb).max_count = 5];
+ repeated EmptyMessage rep_emptymsg = 38 [(nanopb).max_count = 5];
optional int32 opt_int32 = 41 [default = 4041];
optional int64 opt_int64 = 42 [default = 4042];
optional bytes opt_bytes = 55 [(nanopb).max_size = 16, default = "4055"];
optional SubMessage opt_submsg = 56;
optional MyEnum opt_enum = 57 [default = Second];
+ optional EmptyMessage opt_emptymsg = 58;
// Just to make sure that the size of the fields has been calculated
// properly, i.e. otherwise a bug in last field might not be detected.
TEST(alltypes.rep_submsg[4].substuff3 == 2016 && alltypes.rep_submsg[0].substuff3 == 3);
TEST(alltypes.rep_enum_count == 5 && alltypes.rep_enum[4] == MyEnum_Truth && alltypes.rep_enum[0] == MyEnum_Zero);
+ TEST(alltypes.rep_emptymsg_count == 5);
if (mode == 0)
{
TEST(alltypes.opt_submsg.substuff3 == 3);
TEST(alltypes.has_opt_enum == false);
TEST(alltypes.opt_enum == MyEnum_Second);
+ TEST(alltypes.has_opt_emptymsg == false);
}
else
{
TEST(alltypes.opt_submsg.substuff3 == 3);
TEST(alltypes.has_opt_enum == true);
TEST(alltypes.opt_enum == MyEnum_Truth);
+ TEST(alltypes.has_opt_emptymsg == true);
}
TEST(alltypes.end == 1099);
alltypes.rep_submsg[4].substuff3 = 2016;
alltypes.rep_enum_count = 5; alltypes.rep_enum[4] = MyEnum_Truth;
+ alltypes.rep_emptymsg_count = 5;
if (mode != 0)
{
alltypes.opt_submsg.substuff2 = 3056;
alltypes.has_opt_enum = true;
alltypes.opt_enum = MyEnum_Truth;
+ alltypes.has_opt_emptymsg = true;
}
alltypes.end = 1099;