diff options
Diffstat (limited to 'tests/regression/issue_322/defaults.c')
-rw-r--r-- | tests/regression/issue_322/defaults.c | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/tests/regression/issue_322/defaults.c b/tests/regression/issue_322/defaults.c new file mode 100644 index 0000000..b285754 --- /dev/null +++ b/tests/regression/issue_322/defaults.c @@ -0,0 +1,44 @@ +#include "defaults.pb.h" +#include <unittests.h> +#include <pb_decode.h> + +int check_defaults(const DefaultsMsg *msg) +{ + int status = 0; + + TEST(msg->b1[0] == 0xDE && msg->b1[1] == 0xAD && msg->b1[2] == 0x00 && + msg->b1[3] == 0xBE && msg->b1[4] == 0xEF); + TEST(msg->b2.bytes[0] == 0xDE && msg->b2.bytes[1] == 0xAD && + msg->b2.bytes[2] == 0x00 && msg->b2.bytes[3] == 0xBE && + msg->b2.bytes[4] == 0xEF && msg->b2.size == 5); + TEST(msg->b3.bytes[0] == 0xDE && msg->b3.bytes[1] == 0xAD && + msg->b3.bytes[2] == 0x00 && msg->b3.bytes[3] == 0xBE && + msg->b3.bytes[4] == 0xEF && msg->b2.size == 5); + TEST(msg->s1[0] == (char)0xC3 && msg->s1[1] == (char)0xA4 && + msg->s1[2] == (char)0xC3 && msg->s1[3] == (char)0xB6 && + msg->s1[4] == '\0'); + + return status; +} + +int main() +{ + int status = 0; + + { + DefaultsMsg msg = DefaultsMsg_init_default; + COMMENT("Checking defaults from static initializer"); + status += check_defaults(&msg); + } + + { + DefaultsMsg msg = DefaultsMsg_init_zero; + pb_istream_t empty = {0,0,0}; + pb_decode(&empty, DefaultsMsg_fields, &msg); + COMMENT("Checking defaults set at runtime"); + status += check_defaults(&msg); + } + + return status; +} + |