Create a message descriptor type.
This replaces the sentinel at the end of the pb_field_t array for each message type. git-svn-id: https://svn.kapsi.fi/jpa/nanopb-dev@1007 e3a754e5-d11d-0410-8d38-ebb782a927b9
This commit is contained in:
committed by
Petteri Aimonen
parent
dcf43a6416
commit
43b8e20744
@@ -193,13 +193,13 @@ int main()
|
||||
IntegerArray dest;
|
||||
|
||||
COMMENT("Testing pb_decode with repeated int32 field")
|
||||
TEST((s = S(""), pb_decode(&s, IntegerArray_fields, &dest) && dest.data_count == 0))
|
||||
TEST((s = S("\x08\x01\x08\x02"), pb_decode(&s, IntegerArray_fields, &dest)
|
||||
TEST((s = S(""), pb_decode(&s, IntegerArray_msg, &dest) && dest.data_count == 0))
|
||||
TEST((s = S("\x08\x01\x08\x02"), pb_decode(&s, IntegerArray_msg, &dest)
|
||||
&& dest.data_count == 2 && dest.data[0] == 1 && dest.data[1] == 2))
|
||||
s = S("\x08\x01\x08\x02\x08\x03\x08\x04\x08\x05\x08\x06\x08\x07\x08\x08\x08\x09\x08\x0A");
|
||||
TEST(pb_decode(&s, IntegerArray_fields, &dest) && dest.data_count == 10 && dest.data[9] == 10)
|
||||
TEST(pb_decode(&s, IntegerArray_msg, &dest) && dest.data_count == 10 && dest.data[9] == 10)
|
||||
s = S("\x08\x01\x08\x02\x08\x03\x08\x04\x08\x05\x08\x06\x08\x07\x08\x08\x08\x09\x08\x0A\x08\x0B");
|
||||
TEST(!pb_decode(&s, IntegerArray_fields, &dest))
|
||||
TEST(!pb_decode(&s, IntegerArray_msg, &dest))
|
||||
}
|
||||
|
||||
{
|
||||
@@ -207,17 +207,17 @@ int main()
|
||||
IntegerArray dest;
|
||||
|
||||
COMMENT("Testing pb_decode with packed int32 field")
|
||||
TEST((s = S("\x0A\x00"), pb_decode(&s, IntegerArray_fields, &dest)
|
||||
TEST((s = S("\x0A\x00"), pb_decode(&s, IntegerArray_msg, &dest)
|
||||
&& dest.data_count == 0))
|
||||
TEST((s = S("\x0A\x01\x01"), pb_decode(&s, IntegerArray_fields, &dest)
|
||||
TEST((s = S("\x0A\x01\x01"), pb_decode(&s, IntegerArray_msg, &dest)
|
||||
&& dest.data_count == 1 && dest.data[0] == 1))
|
||||
TEST((s = S("\x0A\x0A\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A"), pb_decode(&s, IntegerArray_fields, &dest)
|
||||
TEST((s = S("\x0A\x0A\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A"), pb_decode(&s, IntegerArray_msg, &dest)
|
||||
&& dest.data_count == 10 && dest.data[0] == 1 && dest.data[9] == 10))
|
||||
TEST((s = S("\x0A\x0B\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B"), !pb_decode(&s, IntegerArray_fields, &dest)))
|
||||
TEST((s = S("\x0A\x0B\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B"), !pb_decode(&s, IntegerArray_msg, &dest)))
|
||||
|
||||
/* Test invalid wire data */
|
||||
TEST((s = S("\x0A\xFF"), !pb_decode(&s, IntegerArray_fields, &dest)))
|
||||
TEST((s = S("\x0A\x01"), !pb_decode(&s, IntegerArray_fields, &dest)))
|
||||
TEST((s = S("\x0A\xFF"), !pb_decode(&s, IntegerArray_msg, &dest)))
|
||||
TEST((s = S("\x0A\x01"), !pb_decode(&s, IntegerArray_msg, &dest)))
|
||||
}
|
||||
|
||||
{
|
||||
@@ -225,14 +225,14 @@ int main()
|
||||
IntegerArray dest;
|
||||
|
||||
COMMENT("Testing pb_decode with unknown fields")
|
||||
TEST((s = S("\x18\x0F\x08\x01"), pb_decode(&s, IntegerArray_fields, &dest)
|
||||
TEST((s = S("\x18\x0F\x08\x01"), pb_decode(&s, IntegerArray_msg, &dest)
|
||||
&& dest.data_count == 1 && dest.data[0] == 1))
|
||||
TEST((s = S("\x19\x00\x00\x00\x00\x00\x00\x00\x00\x08\x01"), pb_decode(&s, IntegerArray_fields, &dest)
|
||||
TEST((s = S("\x19\x00\x00\x00\x00\x00\x00\x00\x00\x08\x01"), pb_decode(&s, IntegerArray_msg, &dest)
|
||||
&& dest.data_count == 1 && dest.data[0] == 1))
|
||||
TEST((s = S("\x1A\x00\x08\x01"), pb_decode(&s, IntegerArray_fields, &dest)
|
||||
TEST((s = S("\x1A\x00\x08\x01"), pb_decode(&s, IntegerArray_msg, &dest)
|
||||
&& dest.data_count == 1 && dest.data[0] == 1))
|
||||
TEST((s = S("\x1B\x08\x01"), !pb_decode(&s, IntegerArray_fields, &dest)))
|
||||
TEST((s = S("\x1D\x00\x00\x00\x00\x08\x01"), pb_decode(&s, IntegerArray_fields, &dest)
|
||||
TEST((s = S("\x1B\x08\x01"), !pb_decode(&s, IntegerArray_msg, &dest)))
|
||||
TEST((s = S("\x1D\x00\x00\x00\x00\x08\x01"), pb_decode(&s, IntegerArray_msg, &dest)
|
||||
&& dest.data_count == 1 && dest.data[0] == 1))
|
||||
}
|
||||
|
||||
@@ -246,25 +246,25 @@ int main()
|
||||
COMMENT("Testing pb_decode with callbacks")
|
||||
/* Single varint */
|
||||
ref.size = 1; ref.bytes[0] = 0x55;
|
||||
TEST((s = S("\x08\x55"), pb_decode(&s, CallbackArray_fields, &dest)))
|
||||
TEST((s = S("\x08\x55"), pb_decode(&s, CallbackArray_msg, &dest)))
|
||||
/* Packed varint */
|
||||
ref.size = 3; ref.bytes[0] = ref.bytes[1] = ref.bytes[2] = 0x55;
|
||||
TEST((s = S("\x0A\x03\x55\x55\x55"), pb_decode(&s, CallbackArray_fields, &dest)))
|
||||
TEST((s = S("\x0A\x03\x55\x55\x55"), pb_decode(&s, CallbackArray_msg, &dest)))
|
||||
/* Packed varint with loop */
|
||||
ref.size = 1; ref.bytes[0] = 0x55;
|
||||
TEST((s = S("\x0A\x03\x55\x55\x55"), pb_decode(&s, CallbackArray_fields, &dest)))
|
||||
TEST((s = S("\x0A\x03\x55\x55\x55"), pb_decode(&s, CallbackArray_msg, &dest)))
|
||||
/* Single fixed32 */
|
||||
ref.size = 4; ref.bytes[0] = ref.bytes[1] = ref.bytes[2] = ref.bytes[3] = 0xAA;
|
||||
TEST((s = S("\x0D\xAA\xAA\xAA\xAA"), pb_decode(&s, CallbackArray_fields, &dest)))
|
||||
TEST((s = S("\x0D\xAA\xAA\xAA\xAA"), pb_decode(&s, CallbackArray_msg, &dest)))
|
||||
/* Single fixed64 */
|
||||
ref.size = 8; memset(ref.bytes, 0xAA, 8);
|
||||
TEST((s = S("\x09\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA"), pb_decode(&s, CallbackArray_fields, &dest)))
|
||||
TEST((s = S("\x09\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA"), pb_decode(&s, CallbackArray_msg, &dest)))
|
||||
/* Unsupported field type */
|
||||
TEST((s = S("\x0B\x00"), !pb_decode(&s, CallbackArray_fields, &dest)))
|
||||
TEST((s = S("\x0B\x00"), !pb_decode(&s, CallbackArray_msg, &dest)))
|
||||
|
||||
/* Just make sure that our test function works */
|
||||
ref.size = 1; ref.bytes[0] = 0x56;
|
||||
TEST((s = S("\x08\x55"), !pb_decode(&s, CallbackArray_fields, &dest)))
|
||||
TEST((s = S("\x08\x55"), !pb_decode(&s, CallbackArray_msg, &dest)))
|
||||
}
|
||||
|
||||
{
|
||||
@@ -272,11 +272,11 @@ int main()
|
||||
IntegerArray dest;
|
||||
|
||||
COMMENT("Testing pb_decode message termination")
|
||||
TEST((s = S(""), pb_decode(&s, IntegerArray_fields, &dest)))
|
||||
TEST((s = S("\x00"), pb_decode(&s, IntegerArray_fields, &dest)))
|
||||
TEST((s = S("\x08\x01"), pb_decode(&s, IntegerArray_fields, &dest)))
|
||||
TEST((s = S("\x08\x01\x00"), pb_decode(&s, IntegerArray_fields, &dest)))
|
||||
TEST((s = S("\x08"), !pb_decode(&s, IntegerArray_fields, &dest)))
|
||||
TEST((s = S(""), pb_decode(&s, IntegerArray_msg, &dest)))
|
||||
TEST((s = S("\x00"), pb_decode(&s, IntegerArray_msg, &dest)))
|
||||
TEST((s = S("\x08\x01"), pb_decode(&s, IntegerArray_msg, &dest)))
|
||||
TEST((s = S("\x08\x01\x00"), pb_decode(&s, IntegerArray_msg, &dest)))
|
||||
TEST((s = S("\x08"), !pb_decode(&s, IntegerArray_msg, &dest)))
|
||||
}
|
||||
|
||||
if (status != 0)
|
||||
|
||||
@@ -196,13 +196,13 @@ int main()
|
||||
|
||||
COMMENT("Test pb_encode with int32 array")
|
||||
|
||||
TEST(WRITES(pb_encode(&s, IntegerArray_fields, &msg), "\x0A\x05\x01\x02\x03\x04\x05"))
|
||||
TEST(WRITES(pb_encode(&s, IntegerArray_msg, &msg), "\x0A\x05\x01\x02\x03\x04\x05"))
|
||||
|
||||
msg.data_count = 0;
|
||||
TEST(WRITES(pb_encode(&s, IntegerArray_fields, &msg), ""))
|
||||
TEST(WRITES(pb_encode(&s, IntegerArray_msg, &msg), ""))
|
||||
|
||||
msg.data_count = 10;
|
||||
TEST(!pb_encode(&s, IntegerArray_fields, &msg))
|
||||
TEST(!pb_encode(&s, IntegerArray_msg, &msg))
|
||||
}
|
||||
|
||||
{
|
||||
@@ -212,14 +212,14 @@ int main()
|
||||
|
||||
COMMENT("Test pb_encode with float array")
|
||||
|
||||
TEST(WRITES(pb_encode(&s, FloatArray_fields, &msg),
|
||||
TEST(WRITES(pb_encode(&s, FloatArray_msg, &msg),
|
||||
"\x0A\x04\x00\x00\xc6\x42"))
|
||||
|
||||
msg.data_count = 0;
|
||||
TEST(WRITES(pb_encode(&s, FloatArray_fields, &msg), ""))
|
||||
TEST(WRITES(pb_encode(&s, FloatArray_msg, &msg), ""))
|
||||
|
||||
msg.data_count = 3;
|
||||
TEST(!pb_encode(&s, FloatArray_fields, &msg))
|
||||
TEST(!pb_encode(&s, FloatArray_msg, &msg))
|
||||
}
|
||||
|
||||
{
|
||||
@@ -230,7 +230,7 @@ int main()
|
||||
msg.data.funcs.encode = &fieldcallback;
|
||||
|
||||
COMMENT("Test pb_encode with callback field.")
|
||||
TEST(WRITES(pb_encode(&s, CallbackArray_fields, &msg), "\x08\x55"))
|
||||
TEST(WRITES(pb_encode(&s, CallbackArray_msg, &msg), "\x08\x55"))
|
||||
}
|
||||
|
||||
{
|
||||
@@ -239,7 +239,7 @@ int main()
|
||||
IntegerContainer msg = {{5, {1,2,3,4,5}}};
|
||||
|
||||
COMMENT("Test pb_encode with packed array in a submessage.")
|
||||
TEST(WRITES(pb_encode(&s, IntegerContainer_fields, &msg),
|
||||
TEST(WRITES(pb_encode(&s, IntegerContainer_msg, &msg),
|
||||
"\x0A\x07\x0A\x05\x01\x02\x03\x04\x05"))
|
||||
}
|
||||
|
||||
@@ -254,8 +254,8 @@ int main()
|
||||
msg2.submsg.submsg.data.funcs.encode = &fieldcallback;
|
||||
|
||||
COMMENT("Test pb_encode with callback field in a submessage.")
|
||||
TEST(WRITES(pb_encode(&s, CallbackContainer_fields, &msg), "\x0A\x02\x08\x55"))
|
||||
TEST(WRITES(pb_encode(&s, CallbackContainerContainer_fields, &msg2),
|
||||
TEST(WRITES(pb_encode(&s, CallbackContainer_msg, &msg), "\x0A\x02\x08\x55"))
|
||||
TEST(WRITES(pb_encode(&s, CallbackContainerContainer_msg, &msg2),
|
||||
"\x0A\x04\x0A\x02\x08\x55"))
|
||||
|
||||
/* Misbehaving callback: varying output between calls */
|
||||
@@ -264,9 +264,9 @@ int main()
|
||||
msg2.submsg.submsg.data.funcs.encode = &crazyfieldcallback;
|
||||
msg2.submsg.submsg.data.arg = &state;
|
||||
|
||||
TEST(!pb_encode(&s, CallbackContainer_fields, &msg))
|
||||
TEST(!pb_encode(&s, CallbackContainer_msg, &msg))
|
||||
state = 1;
|
||||
TEST(!pb_encode(&s, CallbackContainerContainer_fields, &msg2))
|
||||
TEST(!pb_encode(&s, CallbackContainerContainer_msg, &msg2))
|
||||
}
|
||||
|
||||
if (status != 0)
|
||||
|
||||
@@ -17,7 +17,7 @@ bool print_person(pb_istream_t *stream)
|
||||
int i;
|
||||
Person person;
|
||||
|
||||
if (!pb_decode(stream, Person_fields, &person))
|
||||
if (!pb_decode(stream, Person_msg, &person))
|
||||
return false;
|
||||
|
||||
/* Now the decoding is done, rest is just to print stuff out. */
|
||||
|
||||
@@ -84,8 +84,8 @@ int main()
|
||||
testmessage.fixed64value.funcs.decode = &print_fixed64;
|
||||
testmessage.fixed64value.arg = "fixed64value: %lld\n";
|
||||
|
||||
if (!pb_decode(&stream, TestMessage_fields, &testmessage))
|
||||
if (!pb_decode(&stream, TestMessage_msg, &testmessage))
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ int main()
|
||||
pb_ostream_t stream = {&streamcallback, stdout, SIZE_MAX, 0};
|
||||
|
||||
/* Now encode it and check if we succeeded. */
|
||||
if (pb_encode(&stream, Person_fields, &person))
|
||||
if (pb_encode(&stream, Person_msg, &person))
|
||||
return 0; /* Success */
|
||||
else
|
||||
return 1; /* Failure */
|
||||
|
||||
@@ -58,7 +58,7 @@ int main()
|
||||
testmessage.submsg.fixed32value.funcs.encode = &encode_fixed32;
|
||||
testmessage.submsg.fixed64value.funcs.encode = &encode_fixed64;
|
||||
|
||||
if (!pb_encode(&stream, TestMessage_fields, &testmessage))
|
||||
if (!pb_encode(&stream, TestMessage_msg, &testmessage))
|
||||
return 1;
|
||||
|
||||
if (fwrite(buffer, stream.bytes_written, 1, stdout) != 1)
|
||||
|
||||
Reference in New Issue
Block a user