xref: /aosp_15_r20/external/cronet/third_party/protobuf/php/tests/proto/test.proto (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1syntax = "proto3";
2
3import 'google/protobuf/any.proto';
4import 'google/protobuf/wrappers.proto';
5import 'google/protobuf/struct.proto';
6import 'proto/test_include.proto';
7import 'proto/test_no_namespace.proto';
8import 'proto/test_php_namespace.proto';
9import 'proto/test_empty_php_namespace.proto';
10import 'proto/test_prefix.proto';
11
12package foo;
13
14message TestMessage {
15  // Singular
16  int32 optional_int32 = 1;
17  int64 optional_int64 = 2;
18  uint32 optional_uint32 = 3;
19  uint64 optional_uint64 = 4;
20  sint32 optional_sint32 = 5;
21  sint64 optional_sint64 = 6;
22  fixed32 optional_fixed32 = 7;
23  fixed64 optional_fixed64 = 8;
24  sfixed32 optional_sfixed32 = 9;
25  sfixed64 optional_sfixed64 = 10;
26  float optional_float = 11;
27  double optional_double = 12;
28  bool optional_bool = 13;
29  string optional_string = 14;
30  bytes optional_bytes = 15;
31
32  TestEnum optional_enum = 16;
33  Sub optional_message = 17;
34  bar.TestInclude optional_included_message = 18;
35  TestMessage recursive = 19;
36
37  // True optional
38  optional int32 true_optional_int32 = 201;
39  optional int64 true_optional_int64 = 202;
40  optional uint32 true_optional_uint32 = 203;
41  optional uint64 true_optional_uint64 = 204;
42  optional sint32 true_optional_sint32 = 205;
43  optional sint64 true_optional_sint64 = 206;
44  optional fixed32 true_optional_fixed32 = 207;
45  optional fixed64 true_optional_fixed64 = 208;
46  optional sfixed32 true_optional_sfixed32 = 209;
47  optional sfixed64 true_optional_sfixed64 = 210;
48  optional float true_optional_float = 211;
49  optional double true_optional_double = 212;
50  optional bool true_optional_bool = 213;
51  optional string true_optional_string = 214;
52  optional bytes true_optional_bytes = 215;
53
54  optional TestEnum true_optional_enum = 216;
55  optional Sub true_optional_message = 217;
56  optional bar.TestInclude true_optional_included_message = 218;
57
58  // Repeated
59  repeated    int32 repeated_int32    = 31;
60  repeated    int64 repeated_int64    = 32;
61  repeated   uint32 repeated_uint32   = 33;
62  repeated   uint64 repeated_uint64   = 34;
63  repeated   sint32 repeated_sint32   = 35;
64  repeated   sint64 repeated_sint64   = 36;
65  repeated  fixed32 repeated_fixed32  = 37;
66  repeated  fixed64 repeated_fixed64  = 38;
67  repeated sfixed32 repeated_sfixed32 = 39;
68  repeated sfixed64 repeated_sfixed64 = 40;
69  repeated    float repeated_float    = 41;
70  repeated   double repeated_double   = 42;
71  repeated     bool repeated_bool     = 43;
72  repeated   string repeated_string   = 44;
73  repeated    bytes repeated_bytes    = 45;
74
75  repeated TestEnum repeated_enum = 46;
76  repeated Sub repeated_message = 47;
77  repeated TestMessage repeated_recursive = 48;
78
79  oneof my_oneof {
80    int32  oneof_int32    = 51;
81    int64  oneof_int64    = 52;
82    uint32 oneof_uint32   = 53;
83    uint64 oneof_uint64   = 54;
84    uint32 oneof_sint32   = 55;
85    uint64 oneof_sint64   = 56;
86    uint32 oneof_fixed32  = 57;
87    uint64 oneof_fixed64  = 58;
88    uint32 oneof_sfixed32 = 59;
89    uint64 oneof_sfixed64 = 60;
90    double oneof_double   = 61;
91    float  oneof_float    = 62;
92    bool   oneof_bool     = 63;
93    string oneof_string   = 64;
94    bytes  oneof_bytes    = 65;
95    TestEnum oneof_enum   = 66;
96    Sub    oneof_message  = 67;
97  }
98
99  map<int32,       int32> map_int32_int32       = 71;
100  map<int64,       int64> map_int64_int64       = 72;
101  map<uint32,     uint32> map_uint32_uint32     = 73;
102  map<uint64,     uint64> map_uint64_uint64     = 74;
103  map<sint32,     sint32> map_sint32_sint32     = 75;
104  map<sint64,     sint64> map_sint64_sint64     = 76;
105  map<fixed32,   fixed32> map_fixed32_fixed32   = 77;
106  map<fixed64,   fixed64> map_fixed64_fixed64   = 78;
107  map<sfixed32, sfixed32> map_sfixed32_sfixed32 = 79;
108  map<sfixed64, sfixed64> map_sfixed64_sfixed64 = 80;
109  map<int32,       float> map_int32_float       = 81;
110  map<int32,      double> map_int32_double      = 82;
111  map<bool,         bool> map_bool_bool         = 83;
112  map<string,     string> map_string_string     = 84;
113  map<int32,       bytes> map_int32_bytes       = 85;
114  map<int32,    TestEnum> map_int32_enum        = 86;
115  map<int32,         Sub> map_int32_message     = 87;
116
117  map<int32, TestMessage> map_recursive = 88;
118
119  message Sub {
120    int32 a = 1;
121    repeated int32 b = 2;
122  }
123
124  // Reserved for non-existing field test.
125  // int32 non_exist = 89;
126
127  NoNamespaceMessage optional_no_namespace_message = 91;
128  NoNamespaceEnum optional_no_namespace_enum = 92;
129  repeated NoNamespaceMessage repeated_no_namespace_message = 93;
130  repeated NoNamespaceEnum repeated_no_namespace_enum = 94;
131
132  enum NestedEnum {
133    ZERO = 0;
134  }
135
136  NestedEnum optional_nested_enum = 101;
137
138  // Test prefix for reserved words.
139  message Empty {
140    int32 a = 1;
141  }
142
143  reserved 111;
144
145  // Test map with missing message value
146  map<string, TestMessage> map_string_message = 121;
147  map<string, google.protobuf.Any> map_string_any = 122;
148  map<string, google.protobuf.ListValue> map_string_list = 123;
149  map<string, google.protobuf.Struct> map_string_struct = 124;
150
151  // deprecated field
152  int32 deprecated_optional_int32 = 125 [deprecated=true];
153}
154
155enum TestEnum {
156  ZERO = 0;
157  ONE  = 1;
158  TWO  = 2;
159  ECHO = 3;  // Test reserved name.
160}
161
162// Test prefix for reserved words.
163message Empty {
164  int32 a = 1;
165}
166
167message ARRAY {
168  int32 a = 1;
169}
170
171message TestPackedMessage {
172  repeated int32    repeated_int32    = 90  [packed = true];
173  repeated int64    repeated_int64    = 91  [packed = true];
174  repeated uint32   repeated_uint32   = 92  [packed = true];
175  repeated uint64   repeated_uint64   = 93  [packed = true];
176  repeated sint32   repeated_sint32   = 94  [packed = true];
177  repeated sint64   repeated_sint64   = 95  [packed = true];
178  repeated fixed32  repeated_fixed32  = 96  [packed = true];
179  repeated fixed64  repeated_fixed64  = 97  [packed = true];
180  repeated sfixed32 repeated_sfixed32 = 98  [packed = true];
181  repeated sfixed64 repeated_sfixed64 = 99  [packed = true];
182  repeated float    repeated_float    = 100 [packed = true];
183  repeated double   repeated_double   = 101 [packed = true];
184  repeated bool     repeated_bool     = 102 [packed = true];
185  repeated TestEnum repeated_enum     = 103 [packed = true];
186}
187
188// Need to be in sync with TestPackedMessage.
189message TestUnpackedMessage {
190  repeated int32    repeated_int32    = 90  [packed = false];
191  repeated int64    repeated_int64    = 91  [packed = false];
192  repeated uint32   repeated_uint32   = 92  [packed = false];
193  repeated uint64   repeated_uint64   = 93  [packed = false];
194  repeated sint32   repeated_sint32   = 94  [packed = false];
195  repeated sint64   repeated_sint64   = 95  [packed = false];
196  repeated fixed32  repeated_fixed32  = 96  [packed = false];
197  repeated fixed64  repeated_fixed64  = 97  [packed = false];
198  repeated sfixed32 repeated_sfixed32 = 98  [packed = false];
199  repeated sfixed64 repeated_sfixed64 = 99  [packed = false];
200  repeated float    repeated_float    = 100 [packed = false];
201  repeated double   repeated_double   = 101 [packed = false];
202  repeated bool     repeated_bool     = 102 [packed = false];
203  repeated TestEnum repeated_enum     = 103 [packed = false];
204}
205
206// /**/@<>&\{
207message TestPhpDoc {
208  int32 a = 1;
209}
210
211message TestIncludePrefixMessage {
212  TestPrefix prefix_message = 1;
213}
214
215message TestIncludeNamespaceMessage {
216  TestNamespace namespace_message = 1;
217  TestEmptyNamespace empty_namespace_message = 2;
218}
219
220// This will cause upb fields not ordered by the order in the generated code.
221message TestRandomFieldOrder {
222  int64 tag13 = 150;
223  string tag14 = 160;
224}
225
226message TestLargeFieldNumber {
227  int32 large_field_number = 536870911;
228}
229
230message TestReverseFieldOrder {
231  repeated int32 a = 2;
232  string b = 1;
233}
234
235message testLowerCaseMessage {
236}
237
238enum testLowerCaseEnum {
239  VALUE = 0;
240}
241
242message TestAny {
243  google.protobuf.Any any = 1;
244}
245
246message TestInt32Value {
247  google.protobuf.Int32Value field = 1;
248  repeated google.protobuf.Int32Value repeated_field = 2;
249  oneof oneof_fields {
250    google.protobuf.Int32Value oneof_field = 3;
251    int32 int32_field = 4;
252  }
253}
254
255message TestInt64Value {
256  google.protobuf.Int64Value field = 1;
257  repeated google.protobuf.Int64Value repeated_field = 2;
258  oneof oneof_fields {
259    google.protobuf.Int64Value oneof_field = 3;
260    int32 int32_field = 4;
261  }
262}
263
264message TestUInt32Value {
265  google.protobuf.UInt32Value field = 1;
266  repeated google.protobuf.UInt32Value repeated_field = 2;
267  oneof oneof_fields {
268    google.protobuf.UInt32Value oneof_field = 3;
269    int32 int32_field = 4;
270  }
271}
272
273message TestUInt64Value {
274  google.protobuf.UInt64Value field = 1;
275  repeated google.protobuf.UInt64Value repeated_field = 2;
276  oneof oneof_fields {
277    google.protobuf.UInt64Value oneof_field = 3;
278    int32 int32_field = 4;
279  }
280}
281
282message TestBoolValue {
283  google.protobuf.BoolValue field = 1;
284  repeated google.protobuf.BoolValue repeated_field = 2;
285  oneof oneof_fields {
286    google.protobuf.BoolValue oneof_field = 3;
287    int32 int32_field = 4;
288  }
289}
290
291message TestStringValue {
292  google.protobuf.StringValue field = 1;
293  repeated google.protobuf.StringValue repeated_field = 2;
294  oneof oneof_fields {
295    google.protobuf.StringValue oneof_field = 3;
296    int32 int32_field = 4;
297  }
298  map<int32, google.protobuf.StringValue> map_field = 5;
299}
300
301message TestBytesValue {
302  google.protobuf.BytesValue field = 1;
303  repeated google.protobuf.BytesValue repeated_field = 2;
304  oneof oneof_fields {
305    google.protobuf.BytesValue oneof_field = 3;
306    int32 int32_field = 4;
307  }
308}
309
310message Test32Fields {
311  optional uint32 id = 1;
312  optional uint32 random_name_a0 = 2;
313  optional uint32 random_name_a1 = 3;
314  optional uint32 random_name_a2 = 4;
315  optional uint32 random_name_a3 = 5;
316  optional uint32 random_name_a4 = 6;
317  optional uint32 random_name_a5 = 7;
318  optional uint32 random_name_a6 = 8;
319  optional uint32 random_name_a7 = 9;
320  optional uint32 random_name_a8 = 10;
321  optional uint32 random_name_a9 = 11;
322  optional uint32 random_name_b0 = 12;
323  optional uint32 random_name_b1 = 13;
324  optional uint32 random_name_b2 = 14;
325  optional uint32 random_name_b3 = 15;
326  optional uint32 random_name_b4 = 16;
327  optional uint32 random_name_b5 = 17;
328  optional uint32 random_name_b6 = 18;
329  optional uint32 random_name_b7 = 19;
330  optional uint32 random_name_b8 = 20;
331  optional uint32 random_name_b9 = 21;
332  optional uint32 random_name_c0 = 22;
333  optional uint32 random_name_c1 = 23;
334  optional uint32 random_name_c2 = 24;
335  optional uint32 random_name_c3 = 25;
336  optional uint32 random_name_c4 = 26;
337  optional uint32 random_name_c5 = 27;
338  optional uint32 random_name_c6 = 28;
339  optional uint32 random_name_c7 = 29;
340  optional uint32 random_name_c8 = 30;
341  optional uint32 random_name_c9 = 31;
342  optional string version = 32;
343}
344