1// Copyright 2018 The Go Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5// Test Protobuf definitions with proto3 syntax.
6syntax = "proto3";
7
8package pb3;
9option go_package = "google.golang.org/protobuf/internal/testprotos/textpb3";
10
11// Scalars contains scalar field types.
12message Scalars {
13  bool s_bool = 1;
14  int32 s_int32 = 2;
15  int64 s_int64 = 3;
16  uint32 s_uint32 = 4;
17  uint64 s_uint64 = 5;
18  sint32 s_sint32 = 6;
19  sint64 s_sint64 = 7;
20  fixed32 s_fixed32 = 8;
21  fixed64 s_fixed64 = 9;
22  sfixed32 s_sfixed32 = 10;
23  sfixed64 s_sfixed64 = 11;
24
25  // Textproto marshal outputs fields in the same order as this proto
26  // definition regardless of field number. Following fields are intended to
27  // test that assumption.
28
29  float s_float = 20;
30  double s_double = 21;
31
32  bytes s_bytes = 14;
33  string s_string = 13;
34}
35
36// Message contains repeated fields.
37message Repeats {
38  repeated bool rpt_bool = 1;
39  repeated int32 rpt_int32 = 2;
40  repeated int64 rpt_int64 = 3;
41  repeated uint32 rpt_uint32 = 4;
42  repeated uint64 rpt_uint64 = 5;
43  repeated float rpt_float = 6;
44  repeated double rpt_double = 7;
45  repeated string rpt_string = 8;
46  repeated bytes rpt_bytes = 9;
47}
48
49message Proto3Optional {
50  optional bool opt_bool = 1;
51  optional int32 opt_int32 = 2;
52  optional int64 opt_int64 = 3;
53  optional uint32 opt_uint32 = 4;
54  optional uint64 opt_uint64 = 5;
55  optional float opt_float = 6;
56  optional double opt_double = 7;
57  optional string opt_string = 8;
58  optional bytes opt_bytes = 9;
59  optional Enum opt_enum = 10;
60  optional Nested opt_message = 11;
61}
62
63enum Enum {
64  ZERO = 0;
65  ONE = 1;
66  TWO = 2;
67  TEN = 10;
68}
69
70// Message contains enum fields.
71message Enums {
72  Enum s_enum = 1;
73
74  enum NestedEnum {
75  	CERO = 0;
76	UNO = 1;
77	DOS = 2;
78	DIEZ = 10;
79  }
80  NestedEnum s_nested_enum = 3;
81}
82
83// Message contains nested message field.
84message Nests {
85  Nested s_nested = 2;
86}
87
88// Message type used as submessage.
89message Nested {
90  string s_string = 1;
91  Nested s_nested = 2;
92}
93
94// Message contains oneof field.
95message Oneofs {
96  oneof union {
97    Enum oneof_enum = 1;
98    string oneof_string = 2;
99    Nested oneof_nested = 3;
100  }
101}
102
103// Message contains map fields.
104message Maps {
105  map<int32, string> int32_to_str = 1;
106  map<bool, uint32> bool_to_uint32 = 2;
107  map<uint64, Enum> uint64_to_enum = 3;
108  map<string, Nested> str_to_nested = 4;
109  map<string, Oneofs> str_to_oneofs = 5;
110}
111
112// Message for testing json_name option.
113message JSONNames {
114  string s_string = 1 [json_name = "foo_bar"];
115}
116