aboutsummaryrefslogtreecommitdiffstats
path: root/Software/External Repositories/Protobuf/protobuf-c-master/t/generated-code/test-generated-code.c
diff options
context:
space:
mode:
Diffstat (limited to 'Software/External Repositories/Protobuf/protobuf-c-master/t/generated-code/test-generated-code.c')
-rw-r--r--Software/External Repositories/Protobuf/protobuf-c-master/t/generated-code/test-generated-code.c71
1 files changed, 71 insertions, 0 deletions
diff --git a/Software/External Repositories/Protobuf/protobuf-c-master/t/generated-code/test-generated-code.c b/Software/External Repositories/Protobuf/protobuf-c-master/t/generated-code/test-generated-code.c
new file mode 100644
index 000000000..ab5660d85
--- /dev/null
+++ b/Software/External Repositories/Protobuf/protobuf-c-master/t/generated-code/test-generated-code.c
@@ -0,0 +1,71 @@
+#ifdef PROTO3
+#include "t/test-proto3.pb-c.h"
+#else
+#include "t/test.pb-c.h"
+#endif
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+int main(void)
+{
+ Foo__Person__PhoneNumber__Comment comment = FOO__PERSON__PHONE_NUMBER__COMMENT__INIT;
+ Foo__Person__PhoneNumber phone = FOO__PERSON__PHONE_NUMBER__INIT;
+ Foo__Person__PhoneNumber *phone_numbers[1];
+ Foo__Person person = FOO__PERSON__INIT;
+ Foo__Person *person2;
+ unsigned char simple_pad[8];
+ size_t size, size2;
+ unsigned char *packed;
+ ProtobufCBufferSimple bs = PROTOBUF_C_BUFFER_SIMPLE_INIT (simple_pad);
+
+ comment.comment = "protobuf-c guy";
+
+ phone.number = "1234";
+#ifndef PROTO3
+ phone.has_type = 1;
+#endif
+ phone.type = FOO__PERSON__PHONE_TYPE__WORK;
+ phone.comment = &comment;
+
+ phone_numbers[0] = &phone;
+
+ person.name = "dave b";
+ person.id = 42;
+ person.n_phone = 1;
+ person.phone = phone_numbers;
+
+ size = foo__person__get_packed_size (&person);
+ packed = malloc (size);
+ assert (packed);
+
+ size2 = foo__person__pack (&person, packed);
+
+ assert (size == size2);
+ foo__person__pack_to_buffer (&person, &bs.base);
+ assert (bs.len == size);
+ assert (memcmp (bs.data, packed, size) == 0);
+
+ PROTOBUF_C_BUFFER_SIMPLE_CLEAR (&bs);
+
+ person2 = foo__person__unpack (NULL, size, packed);
+ assert (person2 != NULL);
+ assert (person2->id == 42);
+#ifndef PROTO3
+ assert (person2->email == NULL);
+#else
+ assert (strcmp (person2->email, "") == 0);
+#endif
+ assert (strcmp (person2->name, "dave b") == 0);
+ assert (person2->n_phone == 1);
+ assert (strcmp (person2->phone[0]->number, "1234") == 0);
+ assert (person2->phone[0]->type == FOO__PERSON__PHONE_TYPE__WORK);
+ assert (strcmp (person2->phone[0]->comment->comment, "protobuf-c guy") == 0);
+
+ foo__person__free_unpacked (person2, NULL);
+ free (packed);
+
+ printf ("test succeeded.\n");
+
+ return 0;
+}