xref: /aosp_15_r20/external/protobuf/csharp/protos/unittest_proto3.proto (revision 1b3f573f81763fcece89efc2b6a5209149e44ab8)
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