aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorPetteri Aimonen <jpa@npb.mail.kapsi.fi>2011-08-11 19:22:36 +0000
committerPetteri Aimonen <jpa@npb.mail.kapsi.fi>2011-08-11 19:22:36 +0000
commit6dfba365b00175eae7e8b83aaf5d29ce190fd9eb (patch)
treef7908f61cb8606a281aa709d187f3b8329385821 /tests
parent09f92bafa59460ea4597c557e469e982386c9e3b (diff)
Documenting and improving stream behaviour
git-svn-id: https://svn.kapsi.fi/jpa/nanopb@954 e3a754e5-d11d-0410-8d38-ebb782a927b9
Diffstat (limited to 'tests')
-rw-r--r--tests/test_decode1.c24
-rw-r--r--tests/test_encode1.c7
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);