Support dynamic allocation for string, bytes and message fields.
This is turned on by passing -p to nanopb_generator.py or setting the (nanopb).pointer option for a .proto field. git-svn-id: https://svn.kapsi.fi/jpa/nanopb-dev@1081 e3a754e5-d11d-0410-8d38-ebb782a927b9
This commit is contained in:
committed by
Petteri Aimonen
parent
8e5337e9ef
commit
c66c6b43c4
@@ -269,6 +269,47 @@ int main()
|
||||
TEST(!pb_encode(&s, CallbackContainerContainer_msg, &msg2))
|
||||
}
|
||||
|
||||
{
|
||||
uint8_t buffer[128];
|
||||
pb_ostream_t s;
|
||||
PointerContainer msg;
|
||||
PointerContainer msg2;
|
||||
IntegerArray msg3;
|
||||
|
||||
COMMENT("Test pb_encode with pointer fields.")
|
||||
|
||||
memset(&msg, 0, sizeof(msg));
|
||||
memset(&msg2, 0, sizeof(msg2));
|
||||
msg.text = "a";
|
||||
msg.blob.size = 1;
|
||||
msg.blob.bytes = (uint8_t*)"b";
|
||||
msg.submsg = &msg2;
|
||||
TEST(WRITES(pb_encode(&s, PointerContainer_msg, &msg),
|
||||
"\x0A\x01\x61\x12\x01\x62"))
|
||||
|
||||
memset(&msg3, 0, sizeof(msg3));
|
||||
msg.rtext_count = 1;
|
||||
msg.rtext[0] = "e";
|
||||
msg.rblob_count = 1;
|
||||
msg.rblob[0].size = 1;
|
||||
msg.rblob[0].bytes = (uint8_t*)"f";
|
||||
msg.rsubmsg_count = 1;
|
||||
msg.rsubmsg[0] = &msg3;
|
||||
TEST(WRITES(pb_encode(&s, PointerContainer_msg, &msg),
|
||||
"\x0A\x01\x61\x12\x01\x62"
|
||||
"\x2A\x01\x65\x32\x01\x66\x3A\x00"));
|
||||
|
||||
PointerContainer_set(msg, otext);
|
||||
msg.otext = "c";
|
||||
PointerContainer_set(msg, oblob);
|
||||
msg.oblob.size = 1;
|
||||
msg.oblob.bytes = (uint8_t*)"d";
|
||||
TEST(WRITES(pb_encode(&s, PointerContainer_msg, &msg),
|
||||
"\x0A\x01\x61\x12\x01\x62"
|
||||
"\x2A\x01\x65\x32\x01\x66\x3A\x00"
|
||||
"\x42\x01\x63\x4A\x01\x64"));
|
||||
}
|
||||
|
||||
if (status != 0)
|
||||
fprintf(stdout, "\n\nSome tests FAILED!\n");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user