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