test.proto 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280
  1. syntax = "proto3";
  2. import 'google/protobuf/any.proto';
  3. import 'google/protobuf/wrappers.proto';
  4. import 'google/protobuf/struct.proto';
  5. import 'proto/test_include.proto';
  6. import 'proto/test_no_namespace.proto';
  7. import 'proto/test_php_namespace.proto';
  8. import 'proto/test_empty_php_namespace.proto';
  9. import 'proto/test_prefix.proto';
  10. package foo;
  11. message TestMessage {
  12. // Singular
  13. int32 optional_int32 = 1;
  14. int64 optional_int64 = 2;
  15. uint32 optional_uint32 = 3;
  16. uint64 optional_uint64 = 4;
  17. sint32 optional_sint32 = 5;
  18. sint64 optional_sint64 = 6;
  19. fixed32 optional_fixed32 = 7;
  20. fixed64 optional_fixed64 = 8;
  21. sfixed32 optional_sfixed32 = 9;
  22. sfixed64 optional_sfixed64 = 10;
  23. float optional_float = 11;
  24. double optional_double = 12;
  25. bool optional_bool = 13;
  26. string optional_string = 14;
  27. bytes optional_bytes = 15;
  28. TestEnum optional_enum = 16;
  29. Sub optional_message = 17;
  30. bar.TestInclude optional_included_message = 18;
  31. TestMessage recursive = 19;
  32. // Repeated
  33. repeated int32 repeated_int32 = 31;
  34. repeated int64 repeated_int64 = 32;
  35. repeated uint32 repeated_uint32 = 33;
  36. repeated uint64 repeated_uint64 = 34;
  37. repeated sint32 repeated_sint32 = 35;
  38. repeated sint64 repeated_sint64 = 36;
  39. repeated fixed32 repeated_fixed32 = 37;
  40. repeated fixed64 repeated_fixed64 = 38;
  41. repeated sfixed32 repeated_sfixed32 = 39;
  42. repeated sfixed64 repeated_sfixed64 = 40;
  43. repeated float repeated_float = 41;
  44. repeated double repeated_double = 42;
  45. repeated bool repeated_bool = 43;
  46. repeated string repeated_string = 44;
  47. repeated bytes repeated_bytes = 45;
  48. repeated TestEnum repeated_enum = 46;
  49. repeated Sub repeated_message = 47;
  50. repeated TestMessage repeated_recursive = 48;
  51. oneof my_oneof {
  52. int32 oneof_int32 = 51;
  53. int64 oneof_int64 = 52;
  54. uint32 oneof_uint32 = 53;
  55. uint64 oneof_uint64 = 54;
  56. uint32 oneof_sint32 = 55;
  57. uint64 oneof_sint64 = 56;
  58. uint32 oneof_fixed32 = 57;
  59. uint64 oneof_fixed64 = 58;
  60. uint32 oneof_sfixed32 = 59;
  61. uint64 oneof_sfixed64 = 60;
  62. double oneof_double = 61;
  63. float oneof_float = 62;
  64. bool oneof_bool = 63;
  65. string oneof_string = 64;
  66. bytes oneof_bytes = 65;
  67. TestEnum oneof_enum = 66;
  68. Sub oneof_message = 67;
  69. }
  70. map<int32, int32> map_int32_int32 = 71;
  71. map<int64, int64> map_int64_int64 = 72;
  72. map<uint32, uint32> map_uint32_uint32 = 73;
  73. map<uint64, uint64> map_uint64_uint64 = 74;
  74. map<sint32, sint32> map_sint32_sint32 = 75;
  75. map<sint64, sint64> map_sint64_sint64 = 76;
  76. map<fixed32, fixed32> map_fixed32_fixed32 = 77;
  77. map<fixed64, fixed64> map_fixed64_fixed64 = 78;
  78. map<sfixed32, sfixed32> map_sfixed32_sfixed32 = 79;
  79. map<sfixed64, sfixed64> map_sfixed64_sfixed64 = 80;
  80. map<int32, float> map_int32_float = 81;
  81. map<int32, double> map_int32_double = 82;
  82. map<bool, bool> map_bool_bool = 83;
  83. map<string, string> map_string_string = 84;
  84. map<int32, bytes> map_int32_bytes = 85;
  85. map<int32, TestEnum> map_int32_enum = 86;
  86. map<int32, Sub> map_int32_message = 87;
  87. map<int32, TestMessage> map_recursive = 88;
  88. message Sub {
  89. int32 a = 1;
  90. repeated int32 b = 2;
  91. }
  92. // Reserved for non-existing field test.
  93. // int32 non_exist = 89;
  94. NoNamespaceMessage optional_no_namespace_message = 91;
  95. NoNamespaceEnum optional_no_namespace_enum = 92;
  96. repeated NoNamespaceMessage repeated_no_namespace_message = 93;
  97. repeated NoNamespaceEnum repeated_no_namespace_enum = 94;
  98. enum NestedEnum {
  99. ZERO = 0;
  100. }
  101. NestedEnum optional_nested_enum = 101;
  102. // Test prefix for reserved words.
  103. message Empty {
  104. int32 a = 1;
  105. }
  106. reserved 111;
  107. // Test map with missing message value
  108. map<string, TestMessage> map_string_message = 121;
  109. map<string, google.protobuf.Any> map_string_any = 122;
  110. map<string, google.protobuf.ListValue> map_string_list = 123;
  111. map<string, google.protobuf.Struct> map_string_struct = 124;
  112. }
  113. enum TestEnum {
  114. ZERO = 0;
  115. ONE = 1;
  116. TWO = 2;
  117. ECHO = 3; // Test reserved name.
  118. }
  119. // Test prefix for reserved words.
  120. message Empty {
  121. int32 a = 1;
  122. }
  123. message ARRAY {
  124. int32 a = 1;
  125. }
  126. message TestPackedMessage {
  127. repeated int32 repeated_int32 = 90 [packed = true];
  128. repeated int64 repeated_int64 = 91 [packed = true];
  129. repeated uint32 repeated_uint32 = 92 [packed = true];
  130. repeated uint64 repeated_uint64 = 93 [packed = true];
  131. repeated sint32 repeated_sint32 = 94 [packed = true];
  132. repeated sint64 repeated_sint64 = 95 [packed = true];
  133. repeated fixed32 repeated_fixed32 = 96 [packed = true];
  134. repeated fixed64 repeated_fixed64 = 97 [packed = true];
  135. repeated sfixed32 repeated_sfixed32 = 98 [packed = true];
  136. repeated sfixed64 repeated_sfixed64 = 99 [packed = true];
  137. repeated float repeated_float = 100 [packed = true];
  138. repeated double repeated_double = 101 [packed = true];
  139. repeated bool repeated_bool = 102 [packed = true];
  140. repeated TestEnum repeated_enum = 103 [packed = true];
  141. }
  142. // Need to be in sync with TestPackedMessage.
  143. message TestUnpackedMessage {
  144. repeated int32 repeated_int32 = 90 [packed = false];
  145. repeated int64 repeated_int64 = 91 [packed = false];
  146. repeated uint32 repeated_uint32 = 92 [packed = false];
  147. repeated uint64 repeated_uint64 = 93 [packed = false];
  148. repeated sint32 repeated_sint32 = 94 [packed = false];
  149. repeated sint64 repeated_sint64 = 95 [packed = false];
  150. repeated fixed32 repeated_fixed32 = 96 [packed = false];
  151. repeated fixed64 repeated_fixed64 = 97 [packed = false];
  152. repeated sfixed32 repeated_sfixed32 = 98 [packed = false];
  153. repeated sfixed64 repeated_sfixed64 = 99 [packed = false];
  154. repeated float repeated_float = 100 [packed = false];
  155. repeated double repeated_double = 101 [packed = false];
  156. repeated bool repeated_bool = 102 [packed = false];
  157. repeated TestEnum repeated_enum = 103 [packed = false];
  158. }
  159. // /**/@<>&\{
  160. message TestPhpDoc {
  161. int32 a = 1;
  162. }
  163. message TestIncludePrefixMessage {
  164. TestPrefix prefix_message = 1;
  165. }
  166. message TestIncludeNamespaceMessage {
  167. TestNamespace namespace_message = 1;
  168. TestEmptyNamespace empty_namespace_message = 2;
  169. }
  170. // This will cause upb fields not ordered by the order in the generated code.
  171. message TestRandomFieldOrder {
  172. int64 tag13 = 150;
  173. string tag14 = 160;
  174. }
  175. message TestReverseFieldOrder {
  176. repeated int32 a = 2;
  177. string b = 1;
  178. }
  179. message testLowerCaseMessage {
  180. }
  181. enum testLowerCaseEnum {
  182. VALUE = 0;
  183. }
  184. message TestAny {
  185. google.protobuf.Any any = 1;
  186. }
  187. message TestInt32Value {
  188. google.protobuf.Int32Value field = 1;
  189. repeated google.protobuf.Int32Value repeated_field = 2;
  190. oneof oneof_fields {
  191. google.protobuf.Int32Value oneof_field = 3;
  192. int32 int32_field = 4;
  193. }
  194. }
  195. message TestInt64Value {
  196. google.protobuf.Int64Value field = 1;
  197. repeated google.protobuf.Int64Value repeated_field = 2;
  198. oneof oneof_fields {
  199. google.protobuf.Int64Value oneof_field = 3;
  200. int32 int32_field = 4;
  201. }
  202. }
  203. message TestUInt32Value {
  204. google.protobuf.UInt32Value field = 1;
  205. repeated google.protobuf.UInt32Value repeated_field = 2;
  206. oneof oneof_fields {
  207. google.protobuf.UInt32Value oneof_field = 3;
  208. int32 int32_field = 4;
  209. }
  210. }
  211. message TestUInt64Value {
  212. google.protobuf.UInt64Value field = 1;
  213. repeated google.protobuf.UInt64Value repeated_field = 2;
  214. oneof oneof_fields {
  215. google.protobuf.UInt64Value oneof_field = 3;
  216. int32 int32_field = 4;
  217. }
  218. }
  219. message TestBoolValue {
  220. google.protobuf.BoolValue field = 1;
  221. repeated google.protobuf.BoolValue repeated_field = 2;
  222. oneof oneof_fields {
  223. google.protobuf.BoolValue oneof_field = 3;
  224. int32 int32_field = 4;
  225. }
  226. }
  227. message TestStringValue {
  228. google.protobuf.StringValue field = 1;
  229. repeated google.protobuf.StringValue repeated_field = 2;
  230. oneof oneof_fields {
  231. google.protobuf.StringValue oneof_field = 3;
  232. int32 int32_field = 4;
  233. }
  234. map<int32, google.protobuf.StringValue> map_field = 5;
  235. }
  236. message TestBytesValue {
  237. google.protobuf.BytesValue field = 1;
  238. repeated google.protobuf.BytesValue repeated_field = 2;
  239. oneof oneof_fields {
  240. google.protobuf.BytesValue oneof_field = 3;
  241. int32 int32_field = 4;
  242. }
  243. }