1*1b3f573fSAndroid Build Coastguard Worker// Protocol Buffers - Google's data interchange format 2*1b3f573fSAndroid Build Coastguard Worker// Copyright 2008 Google Inc. All rights reserved. 3*1b3f573fSAndroid Build Coastguard Worker// https://developers.google.com/protocol-buffers/ 4*1b3f573fSAndroid Build Coastguard Worker// 5*1b3f573fSAndroid Build Coastguard Worker// Redistribution and use in source and binary forms, with or without 6*1b3f573fSAndroid Build Coastguard Worker// modification, are permitted provided that the following conditions are 7*1b3f573fSAndroid Build Coastguard Worker// met: 8*1b3f573fSAndroid Build Coastguard Worker// 9*1b3f573fSAndroid Build Coastguard Worker// * Redistributions of source code must retain the above copyright 10*1b3f573fSAndroid Build Coastguard Worker// notice, this list of conditions and the following disclaimer. 11*1b3f573fSAndroid Build Coastguard Worker// * Redistributions in binary form must reproduce the above 12*1b3f573fSAndroid Build Coastguard Worker// copyright notice, this list of conditions and the following disclaimer 13*1b3f573fSAndroid Build Coastguard Worker// in the documentation and/or other materials provided with the 14*1b3f573fSAndroid Build Coastguard Worker// distribution. 15*1b3f573fSAndroid Build Coastguard Worker// * Neither the name of Google Inc. nor the names of its 16*1b3f573fSAndroid Build Coastguard Worker// contributors may be used to endorse or promote products derived from 17*1b3f573fSAndroid Build Coastguard Worker// this software without specific prior written permission. 18*1b3f573fSAndroid Build Coastguard Worker// 19*1b3f573fSAndroid Build Coastguard Worker// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20*1b3f573fSAndroid Build Coastguard Worker// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21*1b3f573fSAndroid Build Coastguard Worker// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22*1b3f573fSAndroid Build Coastguard Worker// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23*1b3f573fSAndroid Build Coastguard Worker// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24*1b3f573fSAndroid Build Coastguard Worker// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25*1b3f573fSAndroid Build Coastguard Worker// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26*1b3f573fSAndroid Build Coastguard Worker// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27*1b3f573fSAndroid Build Coastguard Worker// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28*1b3f573fSAndroid Build Coastguard Worker// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29*1b3f573fSAndroid Build Coastguard Worker// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30*1b3f573fSAndroid Build Coastguard Worker 31*1b3f573fSAndroid Build Coastguard Worker// Author: [email protected] (Kenton Varda) 32*1b3f573fSAndroid Build Coastguard Worker// Based on original Protocol Buffers design by 33*1b3f573fSAndroid Build Coastguard Worker// Sanjay Ghemawat, Jeff Dean, and others. 34*1b3f573fSAndroid Build Coastguard Worker// 35*1b3f573fSAndroid Build Coastguard Worker// A proto file we will use for unit testing. 36*1b3f573fSAndroid Build Coastguard Worker 37*1b3f573fSAndroid Build Coastguard Workersyntax = "proto3"; 38*1b3f573fSAndroid Build Coastguard Worker 39*1b3f573fSAndroid Build Coastguard Workeroption csharp_namespace = "Google.Protobuf.TestProtos"; 40*1b3f573fSAndroid Build Coastguard Worker 41*1b3f573fSAndroid Build Coastguard Worker// Only present so we can test that we can read it (as an example 42*1b3f573fSAndroid Build Coastguard Worker// of a non-C# option) 43*1b3f573fSAndroid Build Coastguard Workeroption java_outer_classname = "UnittestProto"; 44*1b3f573fSAndroid Build Coastguard Worker 45*1b3f573fSAndroid Build Coastguard Workerimport "unittest_import_proto3.proto"; 46*1b3f573fSAndroid Build Coastguard Worker 47*1b3f573fSAndroid Build Coastguard Workerpackage protobuf_unittest3; 48*1b3f573fSAndroid Build Coastguard Worker 49*1b3f573fSAndroid Build Coastguard Worker// This proto includes every type of field in both singular and repeated 50*1b3f573fSAndroid Build Coastguard Worker// forms. 51*1b3f573fSAndroid Build Coastguard Workermessage TestAllTypes { 52*1b3f573fSAndroid Build Coastguard Worker message NestedMessage { 53*1b3f573fSAndroid Build Coastguard Worker // The field name "b" fails to compile in proto1 because it conflicts with 54*1b3f573fSAndroid Build Coastguard Worker // a local variable named "b" in one of the generated methods. Doh. 55*1b3f573fSAndroid Build Coastguard Worker // This file needs to compile in proto1 to test backwards-compatibility. 56*1b3f573fSAndroid Build Coastguard Worker int32 bb = 1; 57*1b3f573fSAndroid Build Coastguard Worker } 58*1b3f573fSAndroid Build Coastguard Worker 59*1b3f573fSAndroid Build Coastguard Worker enum NestedEnum { 60*1b3f573fSAndroid Build Coastguard Worker NESTED_ENUM_UNSPECIFIED = 0; 61*1b3f573fSAndroid Build Coastguard Worker FOO = 1; 62*1b3f573fSAndroid Build Coastguard Worker BAR = 2; 63*1b3f573fSAndroid Build Coastguard Worker BAZ = 3; 64*1b3f573fSAndroid Build Coastguard Worker NEG = -1; // Intentionally negative. 65*1b3f573fSAndroid Build Coastguard Worker } 66*1b3f573fSAndroid Build Coastguard Worker 67*1b3f573fSAndroid Build Coastguard Worker // Singular 68*1b3f573fSAndroid Build Coastguard Worker int32 single_int32 = 1; 69*1b3f573fSAndroid Build Coastguard Worker int64 single_int64 = 2; 70*1b3f573fSAndroid Build Coastguard Worker uint32 single_uint32 = 3; 71*1b3f573fSAndroid Build Coastguard Worker uint64 single_uint64 = 4; 72*1b3f573fSAndroid Build Coastguard Worker sint32 single_sint32 = 5; 73*1b3f573fSAndroid Build Coastguard Worker sint64 single_sint64 = 6; 74*1b3f573fSAndroid Build Coastguard Worker fixed32 single_fixed32 = 7; 75*1b3f573fSAndroid Build Coastguard Worker fixed64 single_fixed64 = 8; 76*1b3f573fSAndroid Build Coastguard Worker sfixed32 single_sfixed32 = 9; 77*1b3f573fSAndroid Build Coastguard Worker sfixed64 single_sfixed64 = 10; 78*1b3f573fSAndroid Build Coastguard Worker float single_float = 11; 79*1b3f573fSAndroid Build Coastguard Worker double single_double = 12; 80*1b3f573fSAndroid Build Coastguard Worker bool single_bool = 13; 81*1b3f573fSAndroid Build Coastguard Worker string single_string = 14; 82*1b3f573fSAndroid Build Coastguard Worker bytes single_bytes = 15; 83*1b3f573fSAndroid Build Coastguard Worker 84*1b3f573fSAndroid Build Coastguard Worker NestedMessage single_nested_message = 18; 85*1b3f573fSAndroid Build Coastguard Worker ForeignMessage single_foreign_message = 19; 86*1b3f573fSAndroid Build Coastguard Worker protobuf_unittest_import.ImportMessage single_import_message = 20; 87*1b3f573fSAndroid Build Coastguard Worker 88*1b3f573fSAndroid Build Coastguard Worker NestedEnum single_nested_enum = 21; 89*1b3f573fSAndroid Build Coastguard Worker ForeignEnum single_foreign_enum = 22; 90*1b3f573fSAndroid Build Coastguard Worker protobuf_unittest_import.ImportEnum single_import_enum = 23; 91*1b3f573fSAndroid Build Coastguard Worker 92*1b3f573fSAndroid Build Coastguard Worker // Defined in unittest_import_public.proto 93*1b3f573fSAndroid Build Coastguard Worker protobuf_unittest_import.PublicImportMessage 94*1b3f573fSAndroid Build Coastguard Worker single_public_import_message = 26; 95*1b3f573fSAndroid Build Coastguard Worker 96*1b3f573fSAndroid Build Coastguard Worker // Repeated 97*1b3f573fSAndroid Build Coastguard Worker repeated int32 repeated_int32 = 31; 98*1b3f573fSAndroid Build Coastguard Worker repeated int64 repeated_int64 = 32; 99*1b3f573fSAndroid Build Coastguard Worker repeated uint32 repeated_uint32 = 33; 100*1b3f573fSAndroid Build Coastguard Worker repeated uint64 repeated_uint64 = 34; 101*1b3f573fSAndroid Build Coastguard Worker repeated sint32 repeated_sint32 = 35; 102*1b3f573fSAndroid Build Coastguard Worker repeated sint64 repeated_sint64 = 36; 103*1b3f573fSAndroid Build Coastguard Worker repeated fixed32 repeated_fixed32 = 37; 104*1b3f573fSAndroid Build Coastguard Worker repeated fixed64 repeated_fixed64 = 38; 105*1b3f573fSAndroid Build Coastguard Worker repeated sfixed32 repeated_sfixed32 = 39; 106*1b3f573fSAndroid Build Coastguard Worker repeated sfixed64 repeated_sfixed64 = 40; 107*1b3f573fSAndroid Build Coastguard Worker repeated float repeated_float = 41; 108*1b3f573fSAndroid Build Coastguard Worker repeated double repeated_double = 42; 109*1b3f573fSAndroid Build Coastguard Worker repeated bool repeated_bool = 43; 110*1b3f573fSAndroid Build Coastguard Worker repeated string repeated_string = 44; 111*1b3f573fSAndroid Build Coastguard Worker repeated bytes repeated_bytes = 45; 112*1b3f573fSAndroid Build Coastguard Worker 113*1b3f573fSAndroid Build Coastguard Worker repeated NestedMessage repeated_nested_message = 48; 114*1b3f573fSAndroid Build Coastguard Worker repeated ForeignMessage repeated_foreign_message = 49; 115*1b3f573fSAndroid Build Coastguard Worker repeated protobuf_unittest_import.ImportMessage repeated_import_message = 50; 116*1b3f573fSAndroid Build Coastguard Worker 117*1b3f573fSAndroid Build Coastguard Worker repeated NestedEnum repeated_nested_enum = 51; 118*1b3f573fSAndroid Build Coastguard Worker repeated ForeignEnum repeated_foreign_enum = 52; 119*1b3f573fSAndroid Build Coastguard Worker repeated protobuf_unittest_import.ImportEnum repeated_import_enum = 53; 120*1b3f573fSAndroid Build Coastguard Worker // Defined in unittest_import_public.proto 121*1b3f573fSAndroid Build Coastguard Worker repeated protobuf_unittest_import.PublicImportMessage 122*1b3f573fSAndroid Build Coastguard Worker repeated_public_import_message = 54; 123*1b3f573fSAndroid Build Coastguard Worker 124*1b3f573fSAndroid Build Coastguard Worker // For oneof test 125*1b3f573fSAndroid Build Coastguard Worker oneof oneof_field { 126*1b3f573fSAndroid Build Coastguard Worker uint32 oneof_uint32 = 111; 127*1b3f573fSAndroid Build Coastguard Worker NestedMessage oneof_nested_message = 112; 128*1b3f573fSAndroid Build Coastguard Worker string oneof_string = 113; 129*1b3f573fSAndroid Build Coastguard Worker bytes oneof_bytes = 114; 130*1b3f573fSAndroid Build Coastguard Worker } 131*1b3f573fSAndroid Build Coastguard Worker} 132*1b3f573fSAndroid Build Coastguard Worker 133*1b3f573fSAndroid Build Coastguard Worker// This proto includes a recursively nested message. 134*1b3f573fSAndroid Build Coastguard Workermessage NestedTestAllTypes { 135*1b3f573fSAndroid Build Coastguard Worker NestedTestAllTypes child = 1; 136*1b3f573fSAndroid Build Coastguard Worker TestAllTypes payload = 2; 137*1b3f573fSAndroid Build Coastguard Worker repeated NestedTestAllTypes repeated_child = 3; 138*1b3f573fSAndroid Build Coastguard Worker} 139*1b3f573fSAndroid Build Coastguard Worker 140*1b3f573fSAndroid Build Coastguard Workermessage TestDeprecatedFields { 141*1b3f573fSAndroid Build Coastguard Worker int32 deprecated_int32 = 1 [deprecated=true]; 142*1b3f573fSAndroid Build Coastguard Worker} 143*1b3f573fSAndroid Build Coastguard Worker 144*1b3f573fSAndroid Build Coastguard Worker// Define these after TestAllTypes to make sure the compiler can handle 145*1b3f573fSAndroid Build Coastguard Worker// that. 146*1b3f573fSAndroid Build Coastguard Workermessage ForeignMessage { 147*1b3f573fSAndroid Build Coastguard Worker int32 c = 1; 148*1b3f573fSAndroid Build Coastguard Worker} 149*1b3f573fSAndroid Build Coastguard Worker 150*1b3f573fSAndroid Build Coastguard Workerenum ForeignEnum { 151*1b3f573fSAndroid Build Coastguard Worker FOREIGN_UNSPECIFIED = 0; 152*1b3f573fSAndroid Build Coastguard Worker FOREIGN_FOO = 4; 153*1b3f573fSAndroid Build Coastguard Worker FOREIGN_BAR = 5; 154*1b3f573fSAndroid Build Coastguard Worker FOREIGN_BAZ = 6; 155*1b3f573fSAndroid Build Coastguard Worker} 156*1b3f573fSAndroid Build Coastguard Worker 157*1b3f573fSAndroid Build Coastguard Workermessage TestReservedFields { 158*1b3f573fSAndroid Build Coastguard Worker reserved 2, 15, 9 to 11; 159*1b3f573fSAndroid Build Coastguard Worker reserved "bar", "baz"; 160*1b3f573fSAndroid Build Coastguard Worker} 161*1b3f573fSAndroid Build Coastguard Worker 162*1b3f573fSAndroid Build Coastguard Worker 163*1b3f573fSAndroid Build Coastguard Worker// Test that we can use NestedMessage from outside TestAllTypes. 164*1b3f573fSAndroid Build Coastguard Workermessage TestForeignNested { 165*1b3f573fSAndroid Build Coastguard Worker TestAllTypes.NestedMessage foreign_nested = 1; 166*1b3f573fSAndroid Build Coastguard Worker} 167*1b3f573fSAndroid Build Coastguard Worker 168*1b3f573fSAndroid Build Coastguard Worker// Test that really large tag numbers don't break anything. 169*1b3f573fSAndroid Build Coastguard Workermessage TestReallyLargeTagNumber { 170*1b3f573fSAndroid Build Coastguard Worker // The largest possible tag number is 2^28 - 1, since the wire format uses 171*1b3f573fSAndroid Build Coastguard Worker // three bits to communicate wire type. 172*1b3f573fSAndroid Build Coastguard Worker int32 a = 1; 173*1b3f573fSAndroid Build Coastguard Worker int32 bb = 268435455; 174*1b3f573fSAndroid Build Coastguard Worker} 175*1b3f573fSAndroid Build Coastguard Worker 176*1b3f573fSAndroid Build Coastguard Workermessage TestRecursiveMessage { 177*1b3f573fSAndroid Build Coastguard Worker TestRecursiveMessage a = 1; 178*1b3f573fSAndroid Build Coastguard Worker int32 i = 2; 179*1b3f573fSAndroid Build Coastguard Worker} 180*1b3f573fSAndroid Build Coastguard Worker 181*1b3f573fSAndroid Build Coastguard Worker// Test that mutual recursion works. 182*1b3f573fSAndroid Build Coastguard Workermessage TestMutualRecursionA { 183*1b3f573fSAndroid Build Coastguard Worker TestMutualRecursionB bb = 1; 184*1b3f573fSAndroid Build Coastguard Worker} 185*1b3f573fSAndroid Build Coastguard Worker 186*1b3f573fSAndroid Build Coastguard Workermessage TestMutualRecursionB { 187*1b3f573fSAndroid Build Coastguard Worker TestMutualRecursionA a = 1; 188*1b3f573fSAndroid Build Coastguard Worker int32 optional_int32 = 2; 189*1b3f573fSAndroid Build Coastguard Worker} 190*1b3f573fSAndroid Build Coastguard Worker 191*1b3f573fSAndroid Build Coastguard Workermessage TestEnumAllowAlias { 192*1b3f573fSAndroid Build Coastguard Worker TestEnumWithDupValue value = 1; 193*1b3f573fSAndroid Build Coastguard Worker} 194*1b3f573fSAndroid Build Coastguard Worker 195*1b3f573fSAndroid Build Coastguard Worker// Test an enum that has multiple values with the same number. 196*1b3f573fSAndroid Build Coastguard Workerenum TestEnumWithDupValue { 197*1b3f573fSAndroid Build Coastguard Worker TEST_ENUM_WITH_DUP_VALUE_UNSPECIFIED = 0; 198*1b3f573fSAndroid Build Coastguard Worker option allow_alias = true; 199*1b3f573fSAndroid Build Coastguard Worker 200*1b3f573fSAndroid Build Coastguard Worker FOO1 = 1; 201*1b3f573fSAndroid Build Coastguard Worker BAR1 = 2; 202*1b3f573fSAndroid Build Coastguard Worker BAZ = 3; 203*1b3f573fSAndroid Build Coastguard Worker FOO2 = 1; 204*1b3f573fSAndroid Build Coastguard Worker BAR2 = 2; 205*1b3f573fSAndroid Build Coastguard Worker} 206*1b3f573fSAndroid Build Coastguard Worker 207*1b3f573fSAndroid Build Coastguard Worker// Test an enum with large, unordered values. 208*1b3f573fSAndroid Build Coastguard Workerenum TestSparseEnum { 209*1b3f573fSAndroid Build Coastguard Worker TEST_SPARSE_ENUM_UNSPECIFIED = 0; 210*1b3f573fSAndroid Build Coastguard Worker SPARSE_A = 123; 211*1b3f573fSAndroid Build Coastguard Worker SPARSE_B = 62374; 212*1b3f573fSAndroid Build Coastguard Worker SPARSE_C = 12589234; 213*1b3f573fSAndroid Build Coastguard Worker SPARSE_D = -15; 214*1b3f573fSAndroid Build Coastguard Worker SPARSE_E = -53452; 215*1b3f573fSAndroid Build Coastguard Worker // In proto3, value 0 must be the first one specified 216*1b3f573fSAndroid Build Coastguard Worker // SPARSE_F = 0; 217*1b3f573fSAndroid Build Coastguard Worker SPARSE_G = 2; 218*1b3f573fSAndroid Build Coastguard Worker} 219*1b3f573fSAndroid Build Coastguard Worker 220*1b3f573fSAndroid Build Coastguard Worker// Test message with CamelCase field names. This violates Protocol Buffer 221*1b3f573fSAndroid Build Coastguard Worker// standard style. 222*1b3f573fSAndroid Build Coastguard Workermessage TestCamelCaseFieldNames { 223*1b3f573fSAndroid Build Coastguard Worker int32 PrimitiveField = 1; 224*1b3f573fSAndroid Build Coastguard Worker string StringField = 2; 225*1b3f573fSAndroid Build Coastguard Worker ForeignEnum EnumField = 3; 226*1b3f573fSAndroid Build Coastguard Worker ForeignMessage MessageField = 4; 227*1b3f573fSAndroid Build Coastguard Worker 228*1b3f573fSAndroid Build Coastguard Worker repeated int32 RepeatedPrimitiveField = 7; 229*1b3f573fSAndroid Build Coastguard Worker repeated string RepeatedStringField = 8; 230*1b3f573fSAndroid Build Coastguard Worker repeated ForeignEnum RepeatedEnumField = 9; 231*1b3f573fSAndroid Build Coastguard Worker repeated ForeignMessage RepeatedMessageField = 10; 232*1b3f573fSAndroid Build Coastguard Worker} 233*1b3f573fSAndroid Build Coastguard Worker 234*1b3f573fSAndroid Build Coastguard Worker 235*1b3f573fSAndroid Build Coastguard Worker// We list fields out of order, to ensure that we're using field number and not 236*1b3f573fSAndroid Build Coastguard Worker// field index to determine serialization order. 237*1b3f573fSAndroid Build Coastguard Workermessage TestFieldOrderings { 238*1b3f573fSAndroid Build Coastguard Worker string my_string = 11; 239*1b3f573fSAndroid Build Coastguard Worker int64 my_int = 1; 240*1b3f573fSAndroid Build Coastguard Worker float my_float = 101; 241*1b3f573fSAndroid Build Coastguard Worker message NestedMessage { 242*1b3f573fSAndroid Build Coastguard Worker int64 oo = 2; 243*1b3f573fSAndroid Build Coastguard Worker // The field name "b" fails to compile in proto1 because it conflicts with 244*1b3f573fSAndroid Build Coastguard Worker // a local variable named "b" in one of the generated methods. Doh. 245*1b3f573fSAndroid Build Coastguard Worker // This file needs to compile in proto1 to test backwards-compatibility. 246*1b3f573fSAndroid Build Coastguard Worker int32 bb = 1; 247*1b3f573fSAndroid Build Coastguard Worker } 248*1b3f573fSAndroid Build Coastguard Worker 249*1b3f573fSAndroid Build Coastguard Worker NestedMessage single_nested_message = 200; 250*1b3f573fSAndroid Build Coastguard Worker} 251*1b3f573fSAndroid Build Coastguard Worker 252*1b3f573fSAndroid Build Coastguard Workermessage SparseEnumMessage { 253*1b3f573fSAndroid Build Coastguard Worker TestSparseEnum sparse_enum = 1; 254*1b3f573fSAndroid Build Coastguard Worker} 255*1b3f573fSAndroid Build Coastguard Worker 256*1b3f573fSAndroid Build Coastguard Worker// Test String and Bytes: string is for valid UTF-8 strings 257*1b3f573fSAndroid Build Coastguard Workermessage OneString { 258*1b3f573fSAndroid Build Coastguard Worker string data = 1; 259*1b3f573fSAndroid Build Coastguard Worker} 260*1b3f573fSAndroid Build Coastguard Worker 261*1b3f573fSAndroid Build Coastguard Workermessage MoreString { 262*1b3f573fSAndroid Build Coastguard Worker repeated string data = 1; 263*1b3f573fSAndroid Build Coastguard Worker} 264*1b3f573fSAndroid Build Coastguard Worker 265*1b3f573fSAndroid Build Coastguard Workermessage OneBytes { 266*1b3f573fSAndroid Build Coastguard Worker bytes data = 1; 267*1b3f573fSAndroid Build Coastguard Worker} 268*1b3f573fSAndroid Build Coastguard Worker 269*1b3f573fSAndroid Build Coastguard Workermessage MoreBytes { 270*1b3f573fSAndroid Build Coastguard Worker bytes data = 1; 271*1b3f573fSAndroid Build Coastguard Worker} 272*1b3f573fSAndroid Build Coastguard Worker 273*1b3f573fSAndroid Build Coastguard Worker// Test int32, uint32, int64, uint64, and bool are all compatible 274*1b3f573fSAndroid Build Coastguard Workermessage Int32Message { 275*1b3f573fSAndroid Build Coastguard Worker int32 data = 1; 276*1b3f573fSAndroid Build Coastguard Worker} 277*1b3f573fSAndroid Build Coastguard Worker 278*1b3f573fSAndroid Build Coastguard Workermessage Uint32Message { 279*1b3f573fSAndroid Build Coastguard Worker uint32 data = 1; 280*1b3f573fSAndroid Build Coastguard Worker} 281*1b3f573fSAndroid Build Coastguard Worker 282*1b3f573fSAndroid Build Coastguard Workermessage Int64Message { 283*1b3f573fSAndroid Build Coastguard Worker int64 data = 1; 284*1b3f573fSAndroid Build Coastguard Worker} 285*1b3f573fSAndroid Build Coastguard Worker 286*1b3f573fSAndroid Build Coastguard Workermessage Uint64Message { 287*1b3f573fSAndroid Build Coastguard Worker uint64 data = 1; 288*1b3f573fSAndroid Build Coastguard Worker} 289*1b3f573fSAndroid Build Coastguard Worker 290*1b3f573fSAndroid Build Coastguard Workermessage BoolMessage { 291*1b3f573fSAndroid Build Coastguard Worker bool data = 1; 292*1b3f573fSAndroid Build Coastguard Worker} 293*1b3f573fSAndroid Build Coastguard Worker 294*1b3f573fSAndroid Build Coastguard Worker// Test oneofs. 295*1b3f573fSAndroid Build Coastguard Workermessage TestOneof { 296*1b3f573fSAndroid Build Coastguard Worker oneof foo { 297*1b3f573fSAndroid Build Coastguard Worker int32 foo_int = 1; 298*1b3f573fSAndroid Build Coastguard Worker string foo_string = 2; 299*1b3f573fSAndroid Build Coastguard Worker TestAllTypes foo_message = 3; 300*1b3f573fSAndroid Build Coastguard Worker } 301*1b3f573fSAndroid Build Coastguard Worker} 302*1b3f573fSAndroid Build Coastguard Worker 303*1b3f573fSAndroid Build Coastguard Worker// Test messages for packed fields 304*1b3f573fSAndroid Build Coastguard Worker 305*1b3f573fSAndroid Build Coastguard Workermessage TestPackedTypes { 306*1b3f573fSAndroid Build Coastguard Worker repeated int32 packed_int32 = 90 [packed = true]; 307*1b3f573fSAndroid Build Coastguard Worker repeated int64 packed_int64 = 91 [packed = true]; 308*1b3f573fSAndroid Build Coastguard Worker repeated uint32 packed_uint32 = 92 [packed = true]; 309*1b3f573fSAndroid Build Coastguard Worker repeated uint64 packed_uint64 = 93 [packed = true]; 310*1b3f573fSAndroid Build Coastguard Worker repeated sint32 packed_sint32 = 94 [packed = true]; 311*1b3f573fSAndroid Build Coastguard Worker repeated sint64 packed_sint64 = 95 [packed = true]; 312*1b3f573fSAndroid Build Coastguard Worker repeated fixed32 packed_fixed32 = 96 [packed = true]; 313*1b3f573fSAndroid Build Coastguard Worker repeated fixed64 packed_fixed64 = 97 [packed = true]; 314*1b3f573fSAndroid Build Coastguard Worker repeated sfixed32 packed_sfixed32 = 98 [packed = true]; 315*1b3f573fSAndroid Build Coastguard Worker repeated sfixed64 packed_sfixed64 = 99 [packed = true]; 316*1b3f573fSAndroid Build Coastguard Worker repeated float packed_float = 100 [packed = true]; 317*1b3f573fSAndroid Build Coastguard Worker repeated double packed_double = 101 [packed = true]; 318*1b3f573fSAndroid Build Coastguard Worker repeated bool packed_bool = 102 [packed = true]; 319*1b3f573fSAndroid Build Coastguard Worker repeated ForeignEnum packed_enum = 103 [packed = true]; 320*1b3f573fSAndroid Build Coastguard Worker} 321*1b3f573fSAndroid Build Coastguard Worker 322*1b3f573fSAndroid Build Coastguard Worker// A message with the same fields as TestPackedTypes, but without packing. Used 323*1b3f573fSAndroid Build Coastguard Worker// to test packed <-> unpacked wire compatibility. 324*1b3f573fSAndroid Build Coastguard Workermessage TestUnpackedTypes { 325*1b3f573fSAndroid Build Coastguard Worker repeated int32 unpacked_int32 = 90 [packed = false]; 326*1b3f573fSAndroid Build Coastguard Worker repeated int64 unpacked_int64 = 91 [packed = false]; 327*1b3f573fSAndroid Build Coastguard Worker repeated uint32 unpacked_uint32 = 92 [packed = false]; 328*1b3f573fSAndroid Build Coastguard Worker repeated uint64 unpacked_uint64 = 93 [packed = false]; 329*1b3f573fSAndroid Build Coastguard Worker repeated sint32 unpacked_sint32 = 94 [packed = false]; 330*1b3f573fSAndroid Build Coastguard Worker repeated sint64 unpacked_sint64 = 95 [packed = false]; 331*1b3f573fSAndroid Build Coastguard Worker repeated fixed32 unpacked_fixed32 = 96 [packed = false]; 332*1b3f573fSAndroid Build Coastguard Worker repeated fixed64 unpacked_fixed64 = 97 [packed = false]; 333*1b3f573fSAndroid Build Coastguard Worker repeated sfixed32 unpacked_sfixed32 = 98 [packed = false]; 334*1b3f573fSAndroid Build Coastguard Worker repeated sfixed64 unpacked_sfixed64 = 99 [packed = false]; 335*1b3f573fSAndroid Build Coastguard Worker repeated float unpacked_float = 100 [packed = false]; 336*1b3f573fSAndroid Build Coastguard Worker repeated double unpacked_double = 101 [packed = false]; 337*1b3f573fSAndroid Build Coastguard Worker repeated bool unpacked_bool = 102 [packed = false]; 338*1b3f573fSAndroid Build Coastguard Worker repeated ForeignEnum unpacked_enum = 103 [packed = false]; 339*1b3f573fSAndroid Build Coastguard Worker} 340*1b3f573fSAndroid Build Coastguard Worker 341*1b3f573fSAndroid Build Coastguard Workermessage TestRepeatedScalarDifferentTagSizes { 342*1b3f573fSAndroid Build Coastguard Worker // Parsing repeated fixed size values used to fail. This message needs to be 343*1b3f573fSAndroid Build Coastguard Worker // used in order to get a tag of the right size; all of the repeated fields 344*1b3f573fSAndroid Build Coastguard Worker // in TestAllTypes didn't trigger the check. 345*1b3f573fSAndroid Build Coastguard Worker repeated fixed32 repeated_fixed32 = 12; 346*1b3f573fSAndroid Build Coastguard Worker // Check for a varint type, just for good measure. 347*1b3f573fSAndroid Build Coastguard Worker repeated int32 repeated_int32 = 13; 348*1b3f573fSAndroid Build Coastguard Worker 349*1b3f573fSAndroid Build Coastguard Worker // These have two-byte tags. 350*1b3f573fSAndroid Build Coastguard Worker repeated fixed64 repeated_fixed64 = 2046; 351*1b3f573fSAndroid Build Coastguard Worker repeated int64 repeated_int64 = 2047; 352*1b3f573fSAndroid Build Coastguard Worker 353*1b3f573fSAndroid Build Coastguard Worker // Three byte tags. 354*1b3f573fSAndroid Build Coastguard Worker repeated float repeated_float = 262142; 355*1b3f573fSAndroid Build Coastguard Worker repeated uint64 repeated_uint64 = 262143; 356*1b3f573fSAndroid Build Coastguard Worker} 357*1b3f573fSAndroid Build Coastguard Worker 358*1b3f573fSAndroid Build Coastguard Workermessage TestCommentInjectionMessage { 359*1b3f573fSAndroid Build Coastguard Worker // */ <- This should not close the generated doc comment 360*1b3f573fSAndroid Build Coastguard Worker string a = 1; 361*1b3f573fSAndroid Build Coastguard Worker} 362*1b3f573fSAndroid Build Coastguard Worker 363*1b3f573fSAndroid Build Coastguard Worker 364*1b3f573fSAndroid Build Coastguard Worker// Test that RPC services work. 365*1b3f573fSAndroid Build Coastguard Workermessage FooRequest {} 366*1b3f573fSAndroid Build Coastguard Workermessage FooResponse {} 367*1b3f573fSAndroid Build Coastguard Worker 368*1b3f573fSAndroid Build Coastguard Workermessage FooClientMessage {} 369*1b3f573fSAndroid Build Coastguard Workermessage FooServerMessage{} 370*1b3f573fSAndroid Build Coastguard Worker 371*1b3f573fSAndroid Build Coastguard Worker// This is a test service 372*1b3f573fSAndroid Build Coastguard Workerservice TestService { 373*1b3f573fSAndroid Build Coastguard Worker // This is a test method 374*1b3f573fSAndroid Build Coastguard Worker rpc Foo(FooRequest) returns (FooResponse); 375*1b3f573fSAndroid Build Coastguard Worker rpc Bar(BarRequest) returns (BarResponse); 376*1b3f573fSAndroid Build Coastguard Worker} 377*1b3f573fSAndroid Build Coastguard Worker 378*1b3f573fSAndroid Build Coastguard Worker 379*1b3f573fSAndroid Build Coastguard Workermessage BarRequest {} 380*1b3f573fSAndroid Build Coastguard Workermessage BarResponse {} 381*1b3f573fSAndroid Build Coastguard Worker 382*1b3f573fSAndroid Build Coastguard Workermessage TestEmptyMessage {} 383*1b3f573fSAndroid Build Coastguard Worker 384*1b3f573fSAndroid Build Coastguard Worker// This is leading detached comment 1 385*1b3f573fSAndroid Build Coastguard Worker 386*1b3f573fSAndroid Build Coastguard Worker// This is leading detached comment 2 387*1b3f573fSAndroid Build Coastguard Worker 388*1b3f573fSAndroid Build Coastguard Worker// This is a leading comment 389*1b3f573fSAndroid Build Coastguard Workermessage CommentMessage { 390*1b3f573fSAndroid Build Coastguard Worker // Leading nested message comment 391*1b3f573fSAndroid Build Coastguard Worker message NestedCommentMessage { 392*1b3f573fSAndroid Build Coastguard Worker // Leading nested message field comment 393*1b3f573fSAndroid Build Coastguard Worker string nested_text = 1; 394*1b3f573fSAndroid Build Coastguard Worker } 395*1b3f573fSAndroid Build Coastguard Worker 396*1b3f573fSAndroid Build Coastguard Worker // Leading nested enum comment 397*1b3f573fSAndroid Build Coastguard Worker enum NestedCommentEnum { 398*1b3f573fSAndroid Build Coastguard Worker // Zero value comment 399*1b3f573fSAndroid Build Coastguard Worker ZERO_VALUE = 0; 400*1b3f573fSAndroid Build Coastguard Worker } 401*1b3f573fSAndroid Build Coastguard Worker 402*1b3f573fSAndroid Build Coastguard Worker // Leading field comment 403*1b3f573fSAndroid Build Coastguard Worker string text = 1; // Trailing field comment 404*1b3f573fSAndroid Build Coastguard Worker} 405*1b3f573fSAndroid Build Coastguard Worker 406*1b3f573fSAndroid Build Coastguard Worker// Leading enum comment 407*1b3f573fSAndroid Build Coastguard Workerenum CommentEnum { 408*1b3f573fSAndroid Build Coastguard Worker // Zero value comment 409*1b3f573fSAndroid Build Coastguard Worker ZERO_VALUE = 0; 410*1b3f573fSAndroid Build Coastguard Worker} 411