Code Review
/
apps
/
agl-service-can-low-level.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
Fixed a bug related to submessage encoding into memory buffer.
[apps/agl-service-can-low-level.git]
/
tests
/
test_encode1.c
diff --git
a/tests/test_encode1.c
b/tests/test_encode1.c
index
df1ec4f
..
c5131e4
100644
(file)
--- a/
tests/test_encode1.c
+++ b/
tests/test_encode1.c
@@
-1,25
+1,32
@@
/* A very simple encoding test case using person.proto.
/* A very simple encoding test case using person.proto.
- * Just puts constant data in the fields.
+ * Just puts constant data in the fields and encodes into
+ * buffer, which is then written to stdout.
*/
#include <stdio.h>
#include <pb_encode.h>
#include "person.pb.h"
*/
#include <stdio.h>
#include <pb_encode.h>
#include "person.pb.h"
-bool streamcallback(pb_ostream_t *stream, const uint8_t *buf, size_t count)
-{
- FILE *file = (FILE*) stream->state;
- return fwrite(buf, 1, count, file) == count;
-}
-
int main()
{
int main()
{
+ /* Initialize the structure with constants */
Person person = {"Test Person 99", 99, true, "test@person.com",
Person person = {"Test Person 99", 99, true, "test@person.com",
- 1, {{"555-12345678", true, Person_PhoneType_MOBILE}}};
-
- pb_ostream_t stream = {&streamcallback, stdout, SIZE_MAX, 0};
-
- pb_encode(&stream, Person_fields, &person);
+ 3, {{"555-12345678", true, Person_PhoneType_MOBILE},
+ {"99-2342", false, 0},
+ {"1234-5678", true, Person_PhoneType_WORK},
+ }};
+
+ uint8_t buffer[512];
+ pb_ostream_t stream = pb_ostream_from_buffer(buffer, sizeof(buffer));
- return 0;
+ /* Now encode it and check if we succeeded. */
+ if (pb_encode(&stream, Person_fields, &person))
+ {
+ fwrite(buffer, stream.bytes_written, 1, stdout);
+ return 0; /* Success */
+ }
+ else
+ {
+ return 1; /* Failure */
+ }
}
}