File: test-generated-code.c

package info (click to toggle)
protobuf-c 1.3.1-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 2,500 kB
  • sloc: ansic: 5,070; sh: 4,241; cpp: 3,647; makefile: 218; xml: 181
file content (71 lines) | stat: -rw-r--r-- 1,855 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
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;
}