mirror of
https://github.com/google/pebble.git
synced 2025-08-13 18:08:10 -04:00
Import of the watch repository from Pebble
This commit is contained in:
commit
3b92768480
10334 changed files with 2564465 additions and 0 deletions
19
third_party/nanopb/tests/anonymous_oneof/SConscript
vendored
Normal file
19
third_party/nanopb/tests/anonymous_oneof/SConscript
vendored
Normal file
|
@ -0,0 +1,19 @@
|
|||
# Test anonymous_oneof generator option
|
||||
|
||||
Import('env')
|
||||
|
||||
# Anonymous oneofs are supported by clang and gcc
|
||||
if 'clang' in env['CC'] or 'gcc' in env['CC']:
|
||||
env2 = env.Clone()
|
||||
if '-pedantic' in env2['CFLAGS']:
|
||||
env2['CFLAGS'].remove('-pedantic')
|
||||
env2.NanopbProto('oneof')
|
||||
|
||||
dec = env2.Program(['decode_oneof.c',
|
||||
'oneof.pb.c',
|
||||
'$COMMON/pb_decode.o',
|
||||
'$COMMON/pb_common.o'])
|
||||
|
||||
env2.RunTest("message1.txt", [dec, '$BUILD/oneof/message1.pb'], ARGS = ['1'])
|
||||
env2.RunTest("message2.txt", [dec, '$BUILD/oneof/message2.pb'], ARGS = ['2'])
|
||||
env2.RunTest("message3.txt", [dec, '$BUILD/oneof/message3.pb'], ARGS = ['3'])
|
88
third_party/nanopb/tests/anonymous_oneof/decode_oneof.c
vendored
Normal file
88
third_party/nanopb/tests/anonymous_oneof/decode_oneof.c
vendored
Normal file
|
@ -0,0 +1,88 @@
|
|||
/* Decode a message using oneof fields */
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <pb_decode.h>
|
||||
#include "oneof.pb.h"
|
||||
#include "test_helpers.h"
|
||||
#include "unittests.h"
|
||||
|
||||
/* Test the 'AnonymousOneOfMessage' */
|
||||
int test_oneof_1(pb_istream_t *stream, int option)
|
||||
{
|
||||
AnonymousOneOfMessage msg;
|
||||
int status = 0;
|
||||
|
||||
/* To better catch initialization errors */
|
||||
memset(&msg, 0xAA, sizeof(msg));
|
||||
|
||||
if (!pb_decode(stream, AnonymousOneOfMessage_fields, &msg))
|
||||
{
|
||||
printf("Decoding failed: %s\n", PB_GET_ERROR(stream));
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Check that the basic fields work normally */
|
||||
TEST(msg.prefix == 123);
|
||||
TEST(msg.suffix == 321);
|
||||
|
||||
/* Check that we got the right oneof according to command line */
|
||||
if (option == 1)
|
||||
{
|
||||
TEST(msg.which_values == AnonymousOneOfMessage_first_tag);
|
||||
TEST(msg.first == 999);
|
||||
}
|
||||
else if (option == 2)
|
||||
{
|
||||
TEST(msg.which_values == AnonymousOneOfMessage_second_tag);
|
||||
TEST(strcmp(msg.second, "abcd") == 0);
|
||||
}
|
||||
else if (option == 3)
|
||||
{
|
||||
TEST(msg.which_values == AnonymousOneOfMessage_third_tag);
|
||||
TEST(msg.third.array[0] == 1);
|
||||
TEST(msg.third.array[1] == 2);
|
||||
TEST(msg.third.array[2] == 3);
|
||||
TEST(msg.third.array[3] == 4);
|
||||
TEST(msg.third.array[4] == 5);
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
uint8_t buffer[AnonymousOneOfMessage_size];
|
||||
size_t count;
|
||||
int option;
|
||||
|
||||
if (argc != 2)
|
||||
{
|
||||
fprintf(stderr, "Usage: decode_oneof [number]\n");
|
||||
return 1;
|
||||
}
|
||||
option = atoi(argv[1]);
|
||||
|
||||
SET_BINARY_MODE(stdin);
|
||||
count = fread(buffer, 1, sizeof(buffer), stdin);
|
||||
|
||||
if (!feof(stdin))
|
||||
{
|
||||
printf("Message does not fit in buffer\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
{
|
||||
int status = 0;
|
||||
pb_istream_t stream;
|
||||
|
||||
stream = pb_istream_from_buffer(buffer, count);
|
||||
status = test_oneof_1(&stream, option);
|
||||
|
||||
if (status != 0)
|
||||
return status;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
23
third_party/nanopb/tests/anonymous_oneof/oneof.proto
vendored
Normal file
23
third_party/nanopb/tests/anonymous_oneof/oneof.proto
vendored
Normal file
|
@ -0,0 +1,23 @@
|
|||
syntax = "proto2";
|
||||
|
||||
import 'nanopb.proto';
|
||||
|
||||
message SubMessage
|
||||
{
|
||||
repeated int32 array = 1 [(nanopb).max_count = 8];
|
||||
}
|
||||
|
||||
/* Oneof in a message with other fields */
|
||||
message AnonymousOneOfMessage
|
||||
{
|
||||
option (nanopb_msgopt).anonymous_oneof = true;
|
||||
required int32 prefix = 1;
|
||||
oneof values
|
||||
{
|
||||
int32 first = 5;
|
||||
string second = 6 [(nanopb).max_size = 8];
|
||||
SubMessage third = 7;
|
||||
}
|
||||
required int32 suffix = 99;
|
||||
}
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue