xref: /aosp_15_r20/external/golang-protobuf/internal/testprotos/test/test.proto (revision 1c12ee1efe575feb122dbf939ff15148a3b3e8f2)
1*1c12ee1eSDan Willemsen// Copyright 2018 The Go Authors. All rights reserved.
2*1c12ee1eSDan Willemsen// Use of this source code is governed by a BSD-style
3*1c12ee1eSDan Willemsen// license that can be found in the LICENSE file.
4*1c12ee1eSDan Willemsen
5*1c12ee1eSDan Willemsensyntax = "proto2";
6*1c12ee1eSDan Willemsen
7*1c12ee1eSDan Willemsenpackage goproto.proto.test;
8*1c12ee1eSDan Willemsen
9*1c12ee1eSDan Willemsenimport "internal/testprotos/enums/enums.proto";
10*1c12ee1eSDan Willemsenimport "internal/testprotos/test/test_import.proto";
11*1c12ee1eSDan Willemsenimport public "internal/testprotos/test/test_public.proto";
12*1c12ee1eSDan Willemsenimport weak "internal/testprotos/test/weak1/test_weak.proto";
13*1c12ee1eSDan Willemsenimport weak "internal/testprotos/test/weak2/test_weak.proto";
14*1c12ee1eSDan Willemsen
15*1c12ee1eSDan Willemsenoption go_package = "google.golang.org/protobuf/internal/testprotos/test";
16*1c12ee1eSDan Willemsen
17*1c12ee1eSDan Willemsenmessage TestAllTypes {
18*1c12ee1eSDan Willemsen  message NestedMessage {
19*1c12ee1eSDan Willemsen    optional int32 a = 1;
20*1c12ee1eSDan Willemsen    optional TestAllTypes corecursive = 2;
21*1c12ee1eSDan Willemsen  }
22*1c12ee1eSDan Willemsen
23*1c12ee1eSDan Willemsen  enum NestedEnum {
24*1c12ee1eSDan Willemsen    FOO = 0;
25*1c12ee1eSDan Willemsen    BAR = 1;
26*1c12ee1eSDan Willemsen    BAZ = 2;
27*1c12ee1eSDan Willemsen    NEG = -1;  // Intentionally negative.
28*1c12ee1eSDan Willemsen  }
29*1c12ee1eSDan Willemsen
30*1c12ee1eSDan Willemsen  optional int32         optional_int32    =  1;
31*1c12ee1eSDan Willemsen  optional int64         optional_int64    =  2;
32*1c12ee1eSDan Willemsen  optional uint32        optional_uint32   =  3;
33*1c12ee1eSDan Willemsen  optional uint64        optional_uint64   =  4;
34*1c12ee1eSDan Willemsen  optional sint32        optional_sint32   =  5;
35*1c12ee1eSDan Willemsen  optional sint64        optional_sint64   =  6;
36*1c12ee1eSDan Willemsen  optional fixed32       optional_fixed32  =  7;
37*1c12ee1eSDan Willemsen  optional fixed64       optional_fixed64  =  8;
38*1c12ee1eSDan Willemsen  optional sfixed32      optional_sfixed32 =  9;
39*1c12ee1eSDan Willemsen  optional sfixed64      optional_sfixed64 = 10;
40*1c12ee1eSDan Willemsen  optional float         optional_float    = 11;
41*1c12ee1eSDan Willemsen  optional double        optional_double   = 12;
42*1c12ee1eSDan Willemsen  optional bool          optional_bool     = 13;
43*1c12ee1eSDan Willemsen  optional string        optional_string   = 14;
44*1c12ee1eSDan Willemsen  optional bytes         optional_bytes    = 15;
45*1c12ee1eSDan Willemsen  optional group OptionalGroup = 16 {
46*1c12ee1eSDan Willemsen    optional int32 a = 17;
47*1c12ee1eSDan Willemsen    optional NestedMessage optional_nested_message = 1000;
48*1c12ee1eSDan Willemsen    optional int32 same_field_number = 16;
49*1c12ee1eSDan Willemsen  }
50*1c12ee1eSDan Willemsen  optional NestedMessage  optional_nested_message  = 18;
51*1c12ee1eSDan Willemsen  optional ForeignMessage optional_foreign_message = 19;
52*1c12ee1eSDan Willemsen  optional ImportMessage  optional_import_message  = 20;
53*1c12ee1eSDan Willemsen  optional NestedEnum     optional_nested_enum     = 21;
54*1c12ee1eSDan Willemsen  optional ForeignEnum    optional_foreign_enum    = 22;
55*1c12ee1eSDan Willemsen  optional ImportEnum     optional_import_enum     = 23;
56*1c12ee1eSDan Willemsen
57*1c12ee1eSDan Willemsen  repeated int32         repeated_int32    = 31;
58*1c12ee1eSDan Willemsen  repeated int64         repeated_int64    = 32;
59*1c12ee1eSDan Willemsen  repeated uint32        repeated_uint32   = 33;
60*1c12ee1eSDan Willemsen  repeated uint64        repeated_uint64   = 34;
61*1c12ee1eSDan Willemsen  repeated sint32        repeated_sint32   = 35;
62*1c12ee1eSDan Willemsen  repeated sint64        repeated_sint64   = 36;
63*1c12ee1eSDan Willemsen  repeated fixed32       repeated_fixed32  = 37;
64*1c12ee1eSDan Willemsen  repeated fixed64       repeated_fixed64  = 38;
65*1c12ee1eSDan Willemsen  repeated sfixed32      repeated_sfixed32 = 39;
66*1c12ee1eSDan Willemsen  repeated sfixed64      repeated_sfixed64 = 40;
67*1c12ee1eSDan Willemsen  repeated float         repeated_float    = 41;
68*1c12ee1eSDan Willemsen  repeated double        repeated_double   = 42;
69*1c12ee1eSDan Willemsen  repeated bool          repeated_bool     = 43;
70*1c12ee1eSDan Willemsen  repeated string        repeated_string   = 44;
71*1c12ee1eSDan Willemsen  repeated bytes         repeated_bytes    = 45;
72*1c12ee1eSDan Willemsen  repeated group RepeatedGroup = 46 {
73*1c12ee1eSDan Willemsen    optional int32 a = 47;
74*1c12ee1eSDan Willemsen    optional NestedMessage optional_nested_message = 1001;
75*1c12ee1eSDan Willemsen  }
76*1c12ee1eSDan Willemsen  repeated NestedMessage  repeated_nested_message  = 48;
77*1c12ee1eSDan Willemsen  repeated ForeignMessage repeated_foreign_message = 49;
78*1c12ee1eSDan Willemsen  repeated ImportMessage  repeated_importmessage   = 50;
79*1c12ee1eSDan Willemsen  repeated NestedEnum     repeated_nested_enum     = 51;
80*1c12ee1eSDan Willemsen  repeated ForeignEnum    repeated_foreign_enum    = 52;
81*1c12ee1eSDan Willemsen  repeated ImportEnum     repeated_importenum      = 53;
82*1c12ee1eSDan Willemsen
83*1c12ee1eSDan Willemsen  map <   int32, int32>         map_int32_int32           = 56;
84*1c12ee1eSDan Willemsen  map <   int64, int64>         map_int64_int64           = 57;
85*1c12ee1eSDan Willemsen  map <  uint32, uint32>        map_uint32_uint32         = 58;
86*1c12ee1eSDan Willemsen  map <  uint64, uint64>        map_uint64_uint64         = 59;
87*1c12ee1eSDan Willemsen  map <  sint32, sint32>        map_sint32_sint32         = 60;
88*1c12ee1eSDan Willemsen  map <  sint64, sint64>        map_sint64_sint64         = 61;
89*1c12ee1eSDan Willemsen  map < fixed32, fixed32>       map_fixed32_fixed32       = 62;
90*1c12ee1eSDan Willemsen  map < fixed64, fixed64>       map_fixed64_fixed64       = 63;
91*1c12ee1eSDan Willemsen  map <sfixed32, sfixed32>      map_sfixed32_sfixed32     = 64;
92*1c12ee1eSDan Willemsen  map <sfixed64, sfixed64>      map_sfixed64_sfixed64     = 65;
93*1c12ee1eSDan Willemsen  map <   int32, float>         map_int32_float           = 66;
94*1c12ee1eSDan Willemsen  map <   int32, double>        map_int32_double          = 67;
95*1c12ee1eSDan Willemsen  map <    bool, bool>          map_bool_bool             = 68;
96*1c12ee1eSDan Willemsen  map <  string, string>        map_string_string         = 69;
97*1c12ee1eSDan Willemsen  map <  string, bytes>         map_string_bytes          = 70;
98*1c12ee1eSDan Willemsen  map <  string, NestedMessage> map_string_nested_message = 71;
99*1c12ee1eSDan Willemsen  map <  string, NestedEnum>    map_string_nested_enum    = 73;
100*1c12ee1eSDan Willemsen
101*1c12ee1eSDan Willemsen  // Singular with defaults
102*1c12ee1eSDan Willemsen  optional    int32 default_int32    = 81 [default =  81    ];
103*1c12ee1eSDan Willemsen  optional    int64 default_int64    = 82 [default =  82    ];
104*1c12ee1eSDan Willemsen  optional   uint32 default_uint32   = 83 [default =  83    ];
105*1c12ee1eSDan Willemsen  optional   uint64 default_uint64   = 84 [default =  84    ];
106*1c12ee1eSDan Willemsen  optional   sint32 default_sint32   = 85 [default = -85    ];
107*1c12ee1eSDan Willemsen  optional   sint64 default_sint64   = 86 [default =  86    ];
108*1c12ee1eSDan Willemsen  optional  fixed32 default_fixed32  = 87 [default =  87    ];
109*1c12ee1eSDan Willemsen  optional  fixed64 default_fixed64  = 88 [default =  88    ];
110*1c12ee1eSDan Willemsen  optional sfixed32 default_sfixed32 = 89 [default =  89    ];
111*1c12ee1eSDan Willemsen  optional sfixed64 default_sfixed64 = 80 [default = -90    ];
112*1c12ee1eSDan Willemsen  optional    float default_float    = 91 [default =  91.5  ];
113*1c12ee1eSDan Willemsen  optional   double default_double   = 92 [default =  92e3  ];
114*1c12ee1eSDan Willemsen  optional     bool default_bool     = 93 [default = true   ];
115*1c12ee1eSDan Willemsen  optional   string default_string   = 94 [default = "hello"];
116*1c12ee1eSDan Willemsen  optional    bytes default_bytes    = 95 [default = "world"];
117*1c12ee1eSDan Willemsen  optional NestedEnum  default_nested_enum  = 96 [default = BAR        ];
118*1c12ee1eSDan Willemsen  optional ForeignEnum default_foreign_enum = 97 [default = FOREIGN_BAR];
119*1c12ee1eSDan Willemsen
120*1c12ee1eSDan Willemsen  oneof oneof_field {
121*1c12ee1eSDan Willemsen    uint32        oneof_uint32         = 111;
122*1c12ee1eSDan Willemsen    NestedMessage oneof_nested_message = 112;
123*1c12ee1eSDan Willemsen    string        oneof_string         = 113;
124*1c12ee1eSDan Willemsen    bytes         oneof_bytes          = 114;
125*1c12ee1eSDan Willemsen    bool          oneof_bool           = 115;
126*1c12ee1eSDan Willemsen    uint64        oneof_uint64         = 116;
127*1c12ee1eSDan Willemsen    float         oneof_float          = 117;
128*1c12ee1eSDan Willemsen    double        oneof_double         = 118;
129*1c12ee1eSDan Willemsen    NestedEnum    oneof_enum           = 119;
130*1c12ee1eSDan Willemsen    group OneofGroup = 121 {
131*1c12ee1eSDan Willemsen      optional int32 a = 1;
132*1c12ee1eSDan Willemsen      optional int32 b = 2;
133*1c12ee1eSDan Willemsen    }
134*1c12ee1eSDan Willemsen  }
135*1c12ee1eSDan Willemsen
136*1c12ee1eSDan Willemsen  // A oneof with exactly one field.
137*1c12ee1eSDan Willemsen  oneof oneof_optional {
138*1c12ee1eSDan Willemsen    uint32 oneof_optional_uint32 = 120;
139*1c12ee1eSDan Willemsen  }
140*1c12ee1eSDan Willemsen}
141*1c12ee1eSDan Willemsen
142*1c12ee1eSDan Willemsenmessage TestDeprecatedMessage {
143*1c12ee1eSDan Willemsen  option deprecated = true;
144*1c12ee1eSDan Willemsen  optional int32 deprecated_int32 = 1 [deprecated=true];
145*1c12ee1eSDan Willemsen  enum DeprecatedEnum {
146*1c12ee1eSDan Willemsen    option deprecated = true;
147*1c12ee1eSDan Willemsen    DEPRECATED = 0 [deprecated=true];
148*1c12ee1eSDan Willemsen  }
149*1c12ee1eSDan Willemsen  oneof deprecated_oneof {
150*1c12ee1eSDan Willemsen    int32 deprecated_oneof_field = 2 [deprecated = true];
151*1c12ee1eSDan Willemsen  }
152*1c12ee1eSDan Willemsen}
153*1c12ee1eSDan Willemsen
154*1c12ee1eSDan Willemsenmessage ForeignMessage {
155*1c12ee1eSDan Willemsen  optional int32 c = 1;
156*1c12ee1eSDan Willemsen  optional int32 d = 2;
157*1c12ee1eSDan Willemsen}
158*1c12ee1eSDan Willemsen
159*1c12ee1eSDan Willemsenenum ForeignEnum {
160*1c12ee1eSDan Willemsen  FOREIGN_FOO = 4;
161*1c12ee1eSDan Willemsen  FOREIGN_BAR = 5;
162*1c12ee1eSDan Willemsen  FOREIGN_BAZ = 6;
163*1c12ee1eSDan Willemsen}
164*1c12ee1eSDan Willemsen
165*1c12ee1eSDan Willemsenmessage TestReservedFields {
166*1c12ee1eSDan Willemsen  reserved 2, 15, 9 to 11;
167*1c12ee1eSDan Willemsen  reserved "bar", "baz";
168*1c12ee1eSDan Willemsen}
169*1c12ee1eSDan Willemsen
170*1c12ee1eSDan Willemsenenum TestReservedEnumFields {
171*1c12ee1eSDan Willemsen  RESERVED_ENUM = 0;
172*1c12ee1eSDan Willemsen  reserved 2, 15, 9 to 11;
173*1c12ee1eSDan Willemsen  reserved "BAR", "BAZ";
174*1c12ee1eSDan Willemsen}
175*1c12ee1eSDan Willemsen
176*1c12ee1eSDan Willemsenmessage TestAllExtensions {
177*1c12ee1eSDan Willemsen  message NestedMessage {
178*1c12ee1eSDan Willemsen    optional int32 a = 1;
179*1c12ee1eSDan Willemsen    optional TestAllExtensions corecursive = 2;
180*1c12ee1eSDan Willemsen  }
181*1c12ee1eSDan Willemsen
182*1c12ee1eSDan Willemsen  extensions 1 to max;
183*1c12ee1eSDan Willemsen}
184*1c12ee1eSDan Willemsen
185*1c12ee1eSDan Willemsenextend TestAllExtensions {
186*1c12ee1eSDan Willemsen  optional int32    optional_int32    =  1;
187*1c12ee1eSDan Willemsen  optional int64    optional_int64    =  2;
188*1c12ee1eSDan Willemsen  optional uint32   optional_uint32   =  3;
189*1c12ee1eSDan Willemsen  optional uint64   optional_uint64   =  4;
190*1c12ee1eSDan Willemsen  optional sint32   optional_sint32   =  5;
191*1c12ee1eSDan Willemsen  optional sint64   optional_sint64   =  6;
192*1c12ee1eSDan Willemsen  optional fixed32  optional_fixed32  =  7;
193*1c12ee1eSDan Willemsen  optional fixed64  optional_fixed64  =  8;
194*1c12ee1eSDan Willemsen  optional sfixed32 optional_sfixed32 =  9;
195*1c12ee1eSDan Willemsen  optional sfixed64 optional_sfixed64 = 10;
196*1c12ee1eSDan Willemsen  optional float    optional_float    = 11;
197*1c12ee1eSDan Willemsen  optional double   optional_double   = 12;
198*1c12ee1eSDan Willemsen  optional bool     optional_bool     = 13;
199*1c12ee1eSDan Willemsen  optional string   optional_string   = 14;
200*1c12ee1eSDan Willemsen  optional bytes    optional_bytes    = 15;
201*1c12ee1eSDan Willemsen
202*1c12ee1eSDan Willemsen  optional group OptionalGroup = 16 {
203*1c12ee1eSDan Willemsen    optional int32 a = 17;
204*1c12ee1eSDan Willemsen    optional int32 same_field_number = 16;
205*1c12ee1eSDan Willemsen    optional TestAllExtensions.NestedMessage optional_nested_message = 1000;
206*1c12ee1eSDan Willemsen  }
207*1c12ee1eSDan Willemsen
208*1c12ee1eSDan Willemsen  optional TestAllExtensions.NestedMessage optional_nested_message = 18;
209*1c12ee1eSDan Willemsen  optional TestAllTypes.NestedEnum optional_nested_enum = 21;
210*1c12ee1eSDan Willemsen
211*1c12ee1eSDan Willemsen  repeated int32    repeated_int32    = 31;
212*1c12ee1eSDan Willemsen  repeated int64    repeated_int64    = 32;
213*1c12ee1eSDan Willemsen  repeated uint32   repeated_uint32   = 33;
214*1c12ee1eSDan Willemsen  repeated uint64   repeated_uint64   = 34;
215*1c12ee1eSDan Willemsen  repeated sint32   repeated_sint32   = 35;
216*1c12ee1eSDan Willemsen  repeated sint64   repeated_sint64   = 36;
217*1c12ee1eSDan Willemsen  repeated fixed32  repeated_fixed32  = 37;
218*1c12ee1eSDan Willemsen  repeated fixed64  repeated_fixed64  = 38;
219*1c12ee1eSDan Willemsen  repeated sfixed32 repeated_sfixed32 = 39;
220*1c12ee1eSDan Willemsen  repeated sfixed64 repeated_sfixed64 = 40;
221*1c12ee1eSDan Willemsen  repeated float    repeated_float    = 41;
222*1c12ee1eSDan Willemsen  repeated double   repeated_double   = 42;
223*1c12ee1eSDan Willemsen  repeated bool     repeated_bool     = 43;
224*1c12ee1eSDan Willemsen  repeated string   repeated_string   = 44;
225*1c12ee1eSDan Willemsen  repeated bytes    repeated_bytes    = 45;
226*1c12ee1eSDan Willemsen
227*1c12ee1eSDan Willemsen  repeated group RepeatedGroup = 46 {
228*1c12ee1eSDan Willemsen    optional int32 a = 47;
229*1c12ee1eSDan Willemsen    optional TestAllExtensions.NestedMessage optional_nested_message = 1001;
230*1c12ee1eSDan Willemsen  }
231*1c12ee1eSDan Willemsen
232*1c12ee1eSDan Willemsen  repeated TestAllExtensions.NestedMessage repeated_nested_message = 48;
233*1c12ee1eSDan Willemsen  repeated TestAllTypes.NestedEnum repeated_nested_enum = 51;
234*1c12ee1eSDan Willemsen
235*1c12ee1eSDan Willemsen  optional int32    default_int32    = 81 [default =  81    ];
236*1c12ee1eSDan Willemsen  optional int64    default_int64    = 82 [default =  82    ];
237*1c12ee1eSDan Willemsen  optional uint32   default_uint32   = 83 [default =  83    ];
238*1c12ee1eSDan Willemsen  optional uint64   default_uint64   = 84 [default =  84    ];
239*1c12ee1eSDan Willemsen  optional sint32   default_sint32   = 85 [default = -85    ];
240*1c12ee1eSDan Willemsen  optional sint64   default_sint64   = 86 [default =  86    ];
241*1c12ee1eSDan Willemsen  optional fixed32  default_fixed32  = 87 [default =  87    ];
242*1c12ee1eSDan Willemsen  optional fixed64  default_fixed64  = 88 [default =  88    ];
243*1c12ee1eSDan Willemsen  optional sfixed32 default_sfixed32 = 89 [default =  89    ];
244*1c12ee1eSDan Willemsen  optional sfixed64 default_sfixed64 = 80 [default = -90    ];
245*1c12ee1eSDan Willemsen  optional float    default_float    = 91 [default =  91.5  ];
246*1c12ee1eSDan Willemsen  optional double   default_double   = 92 [default =  92e3  ];
247*1c12ee1eSDan Willemsen  optional bool     default_bool     = 93 [default = true   ];
248*1c12ee1eSDan Willemsen  optional string   default_string   = 94 [default = "hello"];
249*1c12ee1eSDan Willemsen  optional bytes    default_bytes    = 95 [default = "world"];
250*1c12ee1eSDan Willemsen}
251*1c12ee1eSDan Willemsen
252*1c12ee1eSDan Willemsenmessage TestNestedExtension {
253*1c12ee1eSDan Willemsen  extend TestAllExtensions {
254*1c12ee1eSDan Willemsen    optional string nested_string_extension = 1003;
255*1c12ee1eSDan Willemsen  }
256*1c12ee1eSDan Willemsen}
257*1c12ee1eSDan Willemsen
258*1c12ee1eSDan Willemsenmessage TestRequired {
259*1c12ee1eSDan Willemsen  required int32 required_field = 1;
260*1c12ee1eSDan Willemsen
261*1c12ee1eSDan Willemsen  extend TestAllExtensions {
262*1c12ee1eSDan Willemsen    optional TestRequired single = 1000;
263*1c12ee1eSDan Willemsen    repeated TestRequired multi  = 1001;
264*1c12ee1eSDan Willemsen  }
265*1c12ee1eSDan Willemsen}
266*1c12ee1eSDan Willemsen
267*1c12ee1eSDan Willemsenmessage TestRequiredForeign {
268*1c12ee1eSDan Willemsen  optional TestRequired    optional_message = 1;
269*1c12ee1eSDan Willemsen  repeated TestRequired    repeated_message = 2;
270*1c12ee1eSDan Willemsen  map<int32, TestRequired> map_message = 3;
271*1c12ee1eSDan Willemsen  oneof oneof_field {
272*1c12ee1eSDan Willemsen    TestRequired oneof_message = 4;
273*1c12ee1eSDan Willemsen  }
274*1c12ee1eSDan Willemsen}
275*1c12ee1eSDan Willemsen
276*1c12ee1eSDan Willemsenmessage TestRequiredGroupFields {
277*1c12ee1eSDan Willemsen  optional group OptionalGroup = 1 {
278*1c12ee1eSDan Willemsen    required int32 a = 2;
279*1c12ee1eSDan Willemsen  }
280*1c12ee1eSDan Willemsen  repeated group RepeatedGroup = 3 {
281*1c12ee1eSDan Willemsen    required int32 a = 4;
282*1c12ee1eSDan Willemsen  }
283*1c12ee1eSDan Willemsen}
284*1c12ee1eSDan Willemsen
285*1c12ee1eSDan Willemsenmessage TestWeak {
286*1c12ee1eSDan Willemsen  optional goproto.proto.test.weak.WeakImportMessage1 weak_message1 = 1 [weak=true];
287*1c12ee1eSDan Willemsen  optional goproto.proto.test.weak.WeakImportMessage2 weak_message2 = 2 [weak=true];
288*1c12ee1eSDan Willemsen}
289*1c12ee1eSDan Willemsen
290*1c12ee1eSDan Willemsenmessage TestPackedTypes {
291*1c12ee1eSDan Willemsen  repeated    int32 packed_int32    =  90 [packed = true];
292*1c12ee1eSDan Willemsen  repeated    int64 packed_int64    =  91 [packed = true];
293*1c12ee1eSDan Willemsen  repeated   uint32 packed_uint32   =  92 [packed = true];
294*1c12ee1eSDan Willemsen  repeated   uint64 packed_uint64   =  93 [packed = true];
295*1c12ee1eSDan Willemsen  repeated   sint32 packed_sint32   =  94 [packed = true];
296*1c12ee1eSDan Willemsen  repeated   sint64 packed_sint64   =  95 [packed = true];
297*1c12ee1eSDan Willemsen  repeated  fixed32 packed_fixed32  =  96 [packed = true];
298*1c12ee1eSDan Willemsen  repeated  fixed64 packed_fixed64  =  97 [packed = true];
299*1c12ee1eSDan Willemsen  repeated sfixed32 packed_sfixed32 =  98 [packed = true];
300*1c12ee1eSDan Willemsen  repeated sfixed64 packed_sfixed64 =  99 [packed = true];
301*1c12ee1eSDan Willemsen  repeated    float packed_float    = 100 [packed = true];
302*1c12ee1eSDan Willemsen  repeated   double packed_double   = 101 [packed = true];
303*1c12ee1eSDan Willemsen  repeated     bool packed_bool     = 102 [packed = true];
304*1c12ee1eSDan Willemsen  repeated ForeignEnum packed_enum  = 103 [packed = true];
305*1c12ee1eSDan Willemsen}
306*1c12ee1eSDan Willemsen
307*1c12ee1eSDan Willemsenmessage TestUnpackedTypes {
308*1c12ee1eSDan Willemsen  repeated    int32 unpacked_int32    =  90 [packed = false];
309*1c12ee1eSDan Willemsen  repeated    int64 unpacked_int64    =  91 [packed = false];
310*1c12ee1eSDan Willemsen  repeated   uint32 unpacked_uint32   =  92 [packed = false];
311*1c12ee1eSDan Willemsen  repeated   uint64 unpacked_uint64   =  93 [packed = false];
312*1c12ee1eSDan Willemsen  repeated   sint32 unpacked_sint32   =  94 [packed = false];
313*1c12ee1eSDan Willemsen  repeated   sint64 unpacked_sint64   =  95 [packed = false];
314*1c12ee1eSDan Willemsen  repeated  fixed32 unpacked_fixed32  =  96 [packed = false];
315*1c12ee1eSDan Willemsen  repeated  fixed64 unpacked_fixed64  =  97 [packed = false];
316*1c12ee1eSDan Willemsen  repeated sfixed32 unpacked_sfixed32 =  98 [packed = false];
317*1c12ee1eSDan Willemsen  repeated sfixed64 unpacked_sfixed64 =  99 [packed = false];
318*1c12ee1eSDan Willemsen  repeated    float unpacked_float    = 100 [packed = false];
319*1c12ee1eSDan Willemsen  repeated   double unpacked_double   = 101 [packed = false];
320*1c12ee1eSDan Willemsen  repeated     bool unpacked_bool     = 102 [packed = false];
321*1c12ee1eSDan Willemsen  repeated ForeignEnum unpacked_enum  = 103 [packed = false];
322*1c12ee1eSDan Willemsen}
323*1c12ee1eSDan Willemsen
324*1c12ee1eSDan Willemsenmessage TestPackedExtensions {
325*1c12ee1eSDan Willemsen  extensions 1 to max;
326*1c12ee1eSDan Willemsen}
327*1c12ee1eSDan Willemsen
328*1c12ee1eSDan Willemsenextend TestPackedExtensions {
329*1c12ee1eSDan Willemsen  repeated    int32 packed_int32    =  90 [packed = true];
330*1c12ee1eSDan Willemsen  repeated    int64 packed_int64    =  91 [packed = true];
331*1c12ee1eSDan Willemsen  repeated   uint32 packed_uint32   =  92 [packed = true];
332*1c12ee1eSDan Willemsen  repeated   uint64 packed_uint64   =  93 [packed = true];
333*1c12ee1eSDan Willemsen  repeated   sint32 packed_sint32   =  94 [packed = true];
334*1c12ee1eSDan Willemsen  repeated   sint64 packed_sint64   =  95 [packed = true];
335*1c12ee1eSDan Willemsen  repeated  fixed32 packed_fixed32  =  96 [packed = true];
336*1c12ee1eSDan Willemsen  repeated  fixed64 packed_fixed64  =  97 [packed = true];
337*1c12ee1eSDan Willemsen  repeated sfixed32 packed_sfixed32 =  98 [packed = true];
338*1c12ee1eSDan Willemsen  repeated sfixed64 packed_sfixed64 =  99 [packed = true];
339*1c12ee1eSDan Willemsen  repeated    float packed_float    = 100 [packed = true];
340*1c12ee1eSDan Willemsen  repeated   double packed_double   = 101 [packed = true];
341*1c12ee1eSDan Willemsen  repeated     bool packed_bool     = 102 [packed = true];
342*1c12ee1eSDan Willemsen  repeated ForeignEnum packed_enum  = 103 [packed = true];
343*1c12ee1eSDan Willemsen}
344*1c12ee1eSDan Willemsen
345*1c12ee1eSDan Willemsenmessage TestUnpackedExtensions {
346*1c12ee1eSDan Willemsen  extensions 1 to max;
347*1c12ee1eSDan Willemsen}
348*1c12ee1eSDan Willemsen
349*1c12ee1eSDan Willemsenextend TestUnpackedExtensions {
350*1c12ee1eSDan Willemsen  repeated    int32 unpacked_int32    =  90 [packed = false];
351*1c12ee1eSDan Willemsen  repeated    int64 unpacked_int64    =  91 [packed = false];
352*1c12ee1eSDan Willemsen  repeated   uint32 unpacked_uint32   =  92 [packed = false];
353*1c12ee1eSDan Willemsen  repeated   uint64 unpacked_uint64   =  93 [packed = false];
354*1c12ee1eSDan Willemsen  repeated   sint32 unpacked_sint32   =  94 [packed = false];
355*1c12ee1eSDan Willemsen  repeated   sint64 unpacked_sint64   =  95 [packed = false];
356*1c12ee1eSDan Willemsen  repeated  fixed32 unpacked_fixed32  =  96 [packed = false];
357*1c12ee1eSDan Willemsen  repeated  fixed64 unpacked_fixed64  =  97 [packed = false];
358*1c12ee1eSDan Willemsen  repeated sfixed32 unpacked_sfixed32 =  98 [packed = false];
359*1c12ee1eSDan Willemsen  repeated sfixed64 unpacked_sfixed64 =  99 [packed = false];
360*1c12ee1eSDan Willemsen  repeated    float unpacked_float    = 100 [packed = false];
361*1c12ee1eSDan Willemsen  repeated   double unpacked_double   = 101 [packed = false];
362*1c12ee1eSDan Willemsen  repeated     bool unpacked_bool     = 102 [packed = false];
363*1c12ee1eSDan Willemsen  repeated ForeignEnum unpacked_enum  = 103 [packed = false];
364*1c12ee1eSDan Willemsen}
365*1c12ee1eSDan Willemsen
366*1c12ee1eSDan Willemsen// Test that RPC services work.
367*1c12ee1eSDan Willemsenmessage FooRequest  {}
368*1c12ee1eSDan Willemsenmessage FooResponse {}
369*1c12ee1eSDan Willemsen
370*1c12ee1eSDan Willemsenservice TestService {
371*1c12ee1eSDan Willemsen  rpc Foo(FooRequest) returns (FooResponse);
372*1c12ee1eSDan Willemsen  rpc TestStream(stream FooRequest) returns (stream FooResponse);
373*1c12ee1eSDan Willemsen}
374*1c12ee1eSDan Willemsen
375*1c12ee1eSDan Willemsenservice TestDeprecatedService {
376*1c12ee1eSDan Willemsen  option deprecated = true;
377*1c12ee1eSDan Willemsen  rpc Deprecated(TestDeprecatedMessage) returns (TestDeprecatedMessage) {
378*1c12ee1eSDan Willemsen    option deprecated = true;
379*1c12ee1eSDan Willemsen  }
380*1c12ee1eSDan Willemsen}
381*1c12ee1eSDan Willemsen
382*1c12ee1eSDan Willemsenmessage WeirdDefault {
383*1c12ee1eSDan Willemsen  optional bytes weird_default = 1 [default = "hello, \"world!\"\ndead\xde\xad\xbe\xefbeef`"];
384*1c12ee1eSDan Willemsen}
385*1c12ee1eSDan Willemsen
386*1c12ee1eSDan Willemsenmessage RemoteDefault {
387*1c12ee1eSDan Willemsen  optional goproto.proto.enums.Enum default = 1;
388*1c12ee1eSDan Willemsen  optional goproto.proto.enums.Enum zero = 2 [default = ZERO];
389*1c12ee1eSDan Willemsen  optional goproto.proto.enums.Enum one = 3 [default = ONE];
390*1c12ee1eSDan Willemsen  optional goproto.proto.enums.Enum elevent = 4 [default = ELEVENT];
391*1c12ee1eSDan Willemsen  optional goproto.proto.enums.Enum seventeen = 5 [default = SEVENTEEN];
392*1c12ee1eSDan Willemsen  optional goproto.proto.enums.Enum thirtyseven = 6 [default = THIRTYSEVEN];
393*1c12ee1eSDan Willemsen  optional goproto.proto.enums.Enum sixtyseven = 7 [default = SIXTYSEVEN];
394*1c12ee1eSDan Willemsen  optional goproto.proto.enums.Enum negative = 8 [default = NEGATIVE];
395*1c12ee1eSDan Willemsen}
396