diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/test_decode1.c | 24 | ||||
-rw-r--r-- | tests/test_encode1.c | 7 |
2 files changed, 24 insertions, 7 deletions
diff --git a/tests/test_decode1.c b/tests/test_decode1.c index cc4688dc..a2c7f428 100644 --- a/tests/test_decode1.c +++ b/tests/test_decode1.c @@ -24,12 +24,28 @@ bool print_person(pb_istream_t *stream) return true; } -int main() +bool callback(pb_istream_t *stream, uint8_t *buf, size_t count) { - uint8_t buffer[512]; - size_t size = fread(buffer, 1, 512, stdin); + FILE *file = (FILE*)stream->state; + bool status; + + if (buf == NULL) + { + while (count-- && fgetc(file) != EOF); + return count == 0; + } + + status = (fread(buf, 1, count, file) == count); - pb_istream_t stream = pb_istream_from_buffer(buffer, size); + if (feof(file)) + stream->bytes_left = 0; + + return status; +} + +int main() +{ + pb_istream_t stream = {&callback, stdin, SIZE_MAX}; if (!print_person(&stream)) printf("Parsing failed.\n"); diff --git a/tests/test_encode1.c b/tests/test_encode1.c index b4998f47..99be7cb5 100644 --- a/tests/test_encode1.c +++ b/tests/test_encode1.c @@ -5,9 +5,10 @@ /* This test has only one source file anyway.. */ #include "person.c" -bool callback(pb_ostream_t *stream, const uint8_t *buf, size_t count) +bool streamcallback(pb_ostream_t *stream, const uint8_t *buf, size_t count) { - return fwrite(buf, 1, count, stdout) == count; + FILE *file = (FILE*) stream->state; + return fwrite(buf, 1, count, file) == count; } int main() @@ -15,7 +16,7 @@ int main() Person person = {"Test Person 99", 99, true, "test@person.com", 1, {{"555-12345678", true, Person_PhoneType_MOBILE}}}; - pb_ostream_t stream = {&callback, 0, SIZE_MAX, 0}; + pb_ostream_t stream = {&streamcallback, stdout, SIZE_MAX, 0}; pb_encode(&stream, Person_fields, &person); |