encoding/textpb: move test protos under encoding/testprotos

These test proto definitions will be reused for encoding/jsonpb package
and hence move these one directory up.

Also, add and simplify some tests.

Change-Id: I5297546fd9b853a7fd3e72dfab2fdc7237332c9c
Reviewed-on: https://go-review.googlesource.com/c/162537
Reviewed-by: Damien Neil <dneil@google.com>
This commit is contained in:
Herbie Ong 2019-02-13 14:13:21 -08:00
parent 3fa6d3f003
commit 8170d69313
9 changed files with 1845 additions and 1820 deletions

View File

@ -1,4 +1,4 @@
// Copyright 2018 The Go Authors. All rights reserved.
// Copyright 2019 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
@ -6,7 +6,7 @@
syntax = "proto2";
package pb2;
option go_package = "github.com/golang/protobuf/v2/encoding/textpb/testprotos/pb2";
option go_package = "github.com/golang/protobuf/v2/encoding/testprotos/pb2";
import "google/protobuf/any.proto";
import "google/protobuf/empty.proto";
@ -18,7 +18,6 @@ import "google/protobuf/wrappers.proto";
// Scalars contains optional scalar fields.
message Scalars {
optional bool opt_bool = 1;
optional int32 opt_int32 = 2;
optional int64 opt_int64 = 3;
optional uint32 opt_uint32 = 4;
@ -30,6 +29,10 @@ message Scalars {
optional sfixed32 opt_sfixed32 = 10;
optional sfixed64 opt_sfixed64 = 11;
// Textproto marshal outputs fields in the same order as this proto
// definition regardless of field number. Following fields are intended to
// test that assumption.
optional float opt_float = 20;
optional double opt_double = 21;
@ -37,24 +40,10 @@ message Scalars {
optional string opt_string = 13;
}
// Message contains repeated fields.
message Repeats {
repeated bool rpt_bool = 1;
repeated int32 rpt_int32 = 2;
repeated int64 rpt_int64 = 3;
repeated uint32 rpt_uint32 = 4;
repeated uint64 rpt_uint64 = 5;
repeated float rpt_float = 6;
repeated double rpt_double = 7;
repeated string rpt_string = 15;
repeated bytes rpt_bytes = 14;
}
enum Enum {
UNKNOWN = 0;
FIRST = 1;
SECOND = 2;
TENTH = 10;
ONE = 1;
TWO = 2;
TEN = 10;
}
// Message contains enum fields.
@ -71,25 +60,17 @@ message Enums {
repeated NestedEnum rpt_nested_enum = 4;
}
// Message contains message and group fields.
message Nests {
optional Nested opt_nested = 1;
optional group OptGroup = 2 {
optional bool opt_bool = 1;
optional string opt_string = 2;
optional Nested opt_nested = 3;
optional group OptNestedGroup = 4 {
optional Enum opt_enum = 1;
}
}
repeated Nested rpt_nested = 3;
repeated group RptGroup = 4 {
repeated bool rpt_bool = 1;
}
reserved "reserved_field";
// Message contains repeated fields.
message Repeats {
repeated bool rpt_bool = 1;
repeated int32 rpt_int32 = 2;
repeated int64 rpt_int64 = 3;
repeated uint32 rpt_uint32 = 4;
repeated uint64 rpt_uint64 = 5;
repeated float rpt_float = 6;
repeated double rpt_double = 7;
repeated string rpt_string = 8;
repeated bytes rpt_bytes = 9;
}
// Message type used as submessage.
@ -98,19 +79,34 @@ message Nested {
optional Nested opt_nested = 2;
}
// Message contains message and group fields.
message Nests {
optional Nested opt_nested = 1;
optional group OptGroup = 2 {
optional string opt_string = 1;
optional Nested opt_nested = 2;
optional group OptNestedGroup = 3 {
optional fixed32 opt_fixed32 = 1;
}
}
repeated Nested rpt_nested = 4;
repeated group RptGroup = 5 {
repeated string rpt_string = 1;
}
reserved "reserved_field";
}
// Message contains required fields.
message Requireds {
required bool req_bool = 1;
required fixed32 req_fixed32 = 2;
required fixed64 req_fixed64 = 3;
required sfixed32 req_sfixed32 = 4;
required sfixed64 req_sfixed64 = 5;
required float req_float = 6;
required double req_double = 7;
required string req_string = 8;
required bytes req_bytes = 9;
required Enum req_enum = 10;
required Nested req_nested = 11;
required sfixed64 req_sfixed64 = 2;
required double req_double = 3;
required string req_string = 4;
required Enum req_enum = 5;
required Nested req_nested = 6;
}
// Message contains both required and optional fields.
@ -119,24 +115,6 @@ message PartialRequired {
optional string opt_string = 2;
}
// Message contains oneof field.
message Oneofs {
oneof union {
string str = 1;
Nested msg = 2;
}
}
// Message contains map fields.
message Maps {
map<int32, string> int32_to_str = 1;
map<sfixed64, bool> sfixed64_to_bool = 2;
map<bool, uint32> bool_to_uint32 = 3;
map<uint64, Enum> uint64_to_enum = 4;
map<string, Nested> str_to_nested = 5;
map<string, Oneofs> str_to_oneofs = 6;
}
// Following messages are for testing required field nested in optional, repeated and map fields.
message NestedWithRequired {
@ -147,6 +125,10 @@ message IndirectRequired {
optional NestedWithRequired opt_nested = 1;
repeated NestedWithRequired rpt_nested = 2;
map<string, NestedWithRequired> str_to_nested = 3;
oneof union {
NestedWithRequired oneof_nested = 4;
}
}
// Following messages are for testing extensions.

View File

@ -0,0 +1,760 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: encoding/testprotos/pb3/test.proto
package pb3
import (
bytes "bytes"
gzip "compress/gzip"
proto "github.com/golang/protobuf/proto"
protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
reflect "reflect"
)
// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
type Enum int32
const (
Enum_ZERO Enum = 0
Enum_ONE Enum = 1
Enum_TWO Enum = 2
Enum_TEN Enum = 10
)
func (e Enum) Type() protoreflect.EnumType {
return xxx_Test_protoFile_enumTypes[0]
}
func (e Enum) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(e)
}
var Enum_name = map[int32]string{
0: "ZERO",
1: "ONE",
2: "TWO",
10: "TEN",
}
var Enum_value = map[string]int32{
"ZERO": 0,
"ONE": 1,
"TWO": 2,
"TEN": 10,
}
func (x Enum) String() string {
return proto.EnumName(Enum_name, int32(x))
}
func (Enum) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_33e0a17922cde063_gzipped, []int{0}
}
type Enums_NestedEnum int32
const (
Enums_CERO Enums_NestedEnum = 0
Enums_UNO Enums_NestedEnum = 1
Enums_DOS Enums_NestedEnum = 2
Enums_DIEZ Enums_NestedEnum = 10
)
func (e Enums_NestedEnum) Type() protoreflect.EnumType {
return xxx_Test_protoFile_enumTypes[1]
}
func (e Enums_NestedEnum) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(e)
}
var Enums_NestedEnum_name = map[int32]string{
0: "CERO",
1: "UNO",
2: "DOS",
10: "DIEZ",
}
var Enums_NestedEnum_value = map[string]int32{
"CERO": 0,
"UNO": 1,
"DOS": 2,
"DIEZ": 10,
}
func (x Enums_NestedEnum) String() string {
return proto.EnumName(Enums_NestedEnum_name, int32(x))
}
func (Enums_NestedEnum) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_33e0a17922cde063_gzipped, []int{1, 0}
}
// Scalars contains scalar field types.
type Scalars struct {
SBool bool `protobuf:"varint,1,opt,name=s_bool,json=sBool,proto3" json:"s_bool,omitempty"`
SInt32 int32 `protobuf:"varint,2,opt,name=s_int32,json=sInt32,proto3" json:"s_int32,omitempty"`
SInt64 int64 `protobuf:"varint,3,opt,name=s_int64,json=sInt64,proto3" json:"s_int64,omitempty"`
SUint32 uint32 `protobuf:"varint,4,opt,name=s_uint32,json=sUint32,proto3" json:"s_uint32,omitempty"`
SUint64 uint64 `protobuf:"varint,5,opt,name=s_uint64,json=sUint64,proto3" json:"s_uint64,omitempty"`
SSint32 int32 `protobuf:"zigzag32,6,opt,name=s_sint32,json=sSint32,proto3" json:"s_sint32,omitempty"`
SSint64 int64 `protobuf:"zigzag64,7,opt,name=s_sint64,json=sSint64,proto3" json:"s_sint64,omitempty"`
SFixed32 uint32 `protobuf:"fixed32,8,opt,name=s_fixed32,json=sFixed32,proto3" json:"s_fixed32,omitempty"`
SFixed64 uint64 `protobuf:"fixed64,9,opt,name=s_fixed64,json=sFixed64,proto3" json:"s_fixed64,omitempty"`
SSfixed32 int32 `protobuf:"fixed32,10,opt,name=s_sfixed32,json=sSfixed32,proto3" json:"s_sfixed32,omitempty"`
SSfixed64 int64 `protobuf:"fixed64,11,opt,name=s_sfixed64,json=sSfixed64,proto3" json:"s_sfixed64,omitempty"`
SFloat float32 `protobuf:"fixed32,20,opt,name=s_float,json=sFloat,proto3" json:"s_float,omitempty"`
SDouble float64 `protobuf:"fixed64,21,opt,name=s_double,json=sDouble,proto3" json:"s_double,omitempty"`
SBytes []byte `protobuf:"bytes,14,opt,name=s_bytes,json=sBytes,proto3" json:"s_bytes,omitempty"`
SString string `protobuf:"bytes,13,opt,name=s_string,json=sString,proto3" json:"s_string,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Scalars) ProtoReflect() protoreflect.Message {
return xxx_Test_protoFile_messageTypes[0].MessageOf(m)
}
func (m *Scalars) Reset() { *m = Scalars{} }
func (m *Scalars) String() string { return proto.CompactTextString(m) }
func (*Scalars) ProtoMessage() {}
func (*Scalars) Descriptor() ([]byte, []int) {
return fileDescriptor_33e0a17922cde063_gzipped, []int{0}
}
func (m *Scalars) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Scalars.Unmarshal(m, b)
}
func (m *Scalars) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Scalars.Marshal(b, m, deterministic)
}
func (m *Scalars) XXX_Merge(src proto.Message) {
xxx_messageInfo_Scalars.Merge(m, src)
}
func (m *Scalars) XXX_Size() int {
return xxx_messageInfo_Scalars.Size(m)
}
func (m *Scalars) XXX_DiscardUnknown() {
xxx_messageInfo_Scalars.DiscardUnknown(m)
}
var xxx_messageInfo_Scalars proto.InternalMessageInfo
func (m *Scalars) GetSBool() bool {
if m != nil {
return m.SBool
}
return false
}
func (m *Scalars) GetSInt32() int32 {
if m != nil {
return m.SInt32
}
return 0
}
func (m *Scalars) GetSInt64() int64 {
if m != nil {
return m.SInt64
}
return 0
}
func (m *Scalars) GetSUint32() uint32 {
if m != nil {
return m.SUint32
}
return 0
}
func (m *Scalars) GetSUint64() uint64 {
if m != nil {
return m.SUint64
}
return 0
}
func (m *Scalars) GetSSint32() int32 {
if m != nil {
return m.SSint32
}
return 0
}
func (m *Scalars) GetSSint64() int64 {
if m != nil {
return m.SSint64
}
return 0
}
func (m *Scalars) GetSFixed32() uint32 {
if m != nil {
return m.SFixed32
}
return 0
}
func (m *Scalars) GetSFixed64() uint64 {
if m != nil {
return m.SFixed64
}
return 0
}
func (m *Scalars) GetSSfixed32() int32 {
if m != nil {
return m.SSfixed32
}
return 0
}
func (m *Scalars) GetSSfixed64() int64 {
if m != nil {
return m.SSfixed64
}
return 0
}
func (m *Scalars) GetSFloat() float32 {
if m != nil {
return m.SFloat
}
return 0
}
func (m *Scalars) GetSDouble() float64 {
if m != nil {
return m.SDouble
}
return 0
}
func (m *Scalars) GetSBytes() []byte {
if m != nil {
return m.SBytes
}
return nil
}
func (m *Scalars) GetSString() string {
if m != nil {
return m.SString
}
return ""
}
// Message contains enum fields.
type Enums struct {
SEnum Enum `protobuf:"varint,1,opt,name=s_enum,json=sEnum,proto3,enum=pb3.Enum" json:"s_enum,omitempty"`
SNestedEnum Enums_NestedEnum `protobuf:"varint,3,opt,name=s_nested_enum,json=sNestedEnum,proto3,enum=pb3.Enums_NestedEnum" json:"s_nested_enum,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Enums) ProtoReflect() protoreflect.Message {
return xxx_Test_protoFile_messageTypes[1].MessageOf(m)
}
func (m *Enums) Reset() { *m = Enums{} }
func (m *Enums) String() string { return proto.CompactTextString(m) }
func (*Enums) ProtoMessage() {}
func (*Enums) Descriptor() ([]byte, []int) {
return fileDescriptor_33e0a17922cde063_gzipped, []int{1}
}
func (m *Enums) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Enums.Unmarshal(m, b)
}
func (m *Enums) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Enums.Marshal(b, m, deterministic)
}
func (m *Enums) XXX_Merge(src proto.Message) {
xxx_messageInfo_Enums.Merge(m, src)
}
func (m *Enums) XXX_Size() int {
return xxx_messageInfo_Enums.Size(m)
}
func (m *Enums) XXX_DiscardUnknown() {
xxx_messageInfo_Enums.DiscardUnknown(m)
}
var xxx_messageInfo_Enums proto.InternalMessageInfo
func (m *Enums) GetSEnum() Enum {
if m != nil {
return m.SEnum
}
return Enum_ZERO
}
func (m *Enums) GetSNestedEnum() Enums_NestedEnum {
if m != nil {
return m.SNestedEnum
}
return Enums_CERO
}
// Message contains nested message field.
type Nests struct {
SNested *Nested `protobuf:"bytes,2,opt,name=s_nested,json=sNested,proto3" json:"s_nested,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Nests) ProtoReflect() protoreflect.Message {
return xxx_Test_protoFile_messageTypes[2].MessageOf(m)
}
func (m *Nests) Reset() { *m = Nests{} }
func (m *Nests) String() string { return proto.CompactTextString(m) }
func (*Nests) ProtoMessage() {}
func (*Nests) Descriptor() ([]byte, []int) {
return fileDescriptor_33e0a17922cde063_gzipped, []int{2}
}
func (m *Nests) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Nests.Unmarshal(m, b)
}
func (m *Nests) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Nests.Marshal(b, m, deterministic)
}
func (m *Nests) XXX_Merge(src proto.Message) {
xxx_messageInfo_Nests.Merge(m, src)
}
func (m *Nests) XXX_Size() int {
return xxx_messageInfo_Nests.Size(m)
}
func (m *Nests) XXX_DiscardUnknown() {
xxx_messageInfo_Nests.DiscardUnknown(m)
}
var xxx_messageInfo_Nests proto.InternalMessageInfo
func (m *Nests) GetSNested() *Nested {
if m != nil {
return m.SNested
}
return nil
}
// Message type used as submessage.
type Nested struct {
SString string `protobuf:"bytes,1,opt,name=s_string,json=sString,proto3" json:"s_string,omitempty"`
SNested *Nested `protobuf:"bytes,2,opt,name=s_nested,json=sNested,proto3" json:"s_nested,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Nested) ProtoReflect() protoreflect.Message {
return xxx_Test_protoFile_messageTypes[3].MessageOf(m)
}
func (m *Nested) Reset() { *m = Nested{} }
func (m *Nested) String() string { return proto.CompactTextString(m) }
func (*Nested) ProtoMessage() {}
func (*Nested) Descriptor() ([]byte, []int) {
return fileDescriptor_33e0a17922cde063_gzipped, []int{3}
}
func (m *Nested) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Nested.Unmarshal(m, b)
}
func (m *Nested) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Nested.Marshal(b, m, deterministic)
}
func (m *Nested) XXX_Merge(src proto.Message) {
xxx_messageInfo_Nested.Merge(m, src)
}
func (m *Nested) XXX_Size() int {
return xxx_messageInfo_Nested.Size(m)
}
func (m *Nested) XXX_DiscardUnknown() {
xxx_messageInfo_Nested.DiscardUnknown(m)
}
var xxx_messageInfo_Nested proto.InternalMessageInfo
func (m *Nested) GetSString() string {
if m != nil {
return m.SString
}
return ""
}
func (m *Nested) GetSNested() *Nested {
if m != nil {
return m.SNested
}
return nil
}
// Message contains oneof field.
type Oneofs struct {
// Types that are valid to be assigned to Union:
// *Oneofs_OneofEnum
// *Oneofs_OneofString
// *Oneofs_OneofNested
Union isOneofs_Union `protobuf_oneof:"union"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Oneofs) ProtoReflect() protoreflect.Message {
return xxx_Test_protoFile_messageTypes[4].MessageOf(m)
}
func (m *Oneofs) Reset() { *m = Oneofs{} }
func (m *Oneofs) String() string { return proto.CompactTextString(m) }
func (*Oneofs) ProtoMessage() {}
func (*Oneofs) Descriptor() ([]byte, []int) {
return fileDescriptor_33e0a17922cde063_gzipped, []int{4}
}
func (m *Oneofs) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Oneofs.Unmarshal(m, b)
}
func (m *Oneofs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Oneofs.Marshal(b, m, deterministic)
}
func (m *Oneofs) XXX_Merge(src proto.Message) {
xxx_messageInfo_Oneofs.Merge(m, src)
}
func (m *Oneofs) XXX_Size() int {
return xxx_messageInfo_Oneofs.Size(m)
}
func (m *Oneofs) XXX_DiscardUnknown() {
xxx_messageInfo_Oneofs.DiscardUnknown(m)
}
var xxx_messageInfo_Oneofs proto.InternalMessageInfo
type isOneofs_Union interface {
isOneofs_Union()
}
type Oneofs_OneofEnum struct {
OneofEnum Enum `protobuf:"varint,1,opt,name=oneof_enum,json=oneofEnum,proto3,enum=pb3.Enum,oneof"`
}
type Oneofs_OneofString struct {
OneofString string `protobuf:"bytes,2,opt,name=oneof_string,json=oneofString,proto3,oneof"`
}
type Oneofs_OneofNested struct {
OneofNested *Nested `protobuf:"bytes,3,opt,name=oneof_nested,json=oneofNested,proto3,oneof"`
}
func (*Oneofs_OneofEnum) isOneofs_Union() {}
func (*Oneofs_OneofString) isOneofs_Union() {}
func (*Oneofs_OneofNested) isOneofs_Union() {}
func (m *Oneofs) GetUnion() isOneofs_Union {
if m != nil {
return m.Union
}
return nil
}
func (m *Oneofs) GetOneofEnum() Enum {
if x, ok := m.GetUnion().(*Oneofs_OneofEnum); ok {
return x.OneofEnum
}
return Enum_ZERO
}
func (m *Oneofs) GetOneofString() string {
if x, ok := m.GetUnion().(*Oneofs_OneofString); ok {
return x.OneofString
}
return ""
}
func (m *Oneofs) GetOneofNested() *Nested {
if x, ok := m.GetUnion().(*Oneofs_OneofNested); ok {
return x.OneofNested
}
return nil
}
// XXX_OneofWrappers is for the internal use of the proto package.
func (*Oneofs) XXX_OneofWrappers() []interface{} {
return []interface{}{
(*Oneofs_OneofEnum)(nil),
(*Oneofs_OneofString)(nil),
(*Oneofs_OneofNested)(nil),
}
}
// Message contains map fields.
type Maps struct {
Int32ToStr map[int32]string `protobuf:"bytes,1,rep,name=int32_to_str,json=int32ToStr,proto3" json:"int32_to_str,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
BoolToUint32 map[bool]uint32 `protobuf:"bytes,2,rep,name=bool_to_uint32,json=boolToUint32,proto3" json:"bool_to_uint32,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
Uint64ToEnum map[uint64]Enum `protobuf:"bytes,3,rep,name=uint64_to_enum,json=uint64ToEnum,proto3" json:"uint64_to_enum,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3,enum=pb3.Enum"`
StrToNested map[string]*Nested `protobuf:"bytes,4,rep,name=str_to_nested,json=strToNested,proto3" json:"str_to_nested,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
StrToOneofs map[string]*Oneofs `protobuf:"bytes,5,rep,name=str_to_oneofs,json=strToOneofs,proto3" json:"str_to_oneofs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Maps) ProtoReflect() protoreflect.Message {
return xxx_Test_protoFile_messageTypes[5].MessageOf(m)
}
func (m *Maps) Reset() { *m = Maps{} }
func (m *Maps) String() string { return proto.CompactTextString(m) }
func (*Maps) ProtoMessage() {}
func (*Maps) Descriptor() ([]byte, []int) {
return fileDescriptor_33e0a17922cde063_gzipped, []int{5}
}
func (m *Maps) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Maps.Unmarshal(m, b)
}
func (m *Maps) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Maps.Marshal(b, m, deterministic)
}
func (m *Maps) XXX_Merge(src proto.Message) {
xxx_messageInfo_Maps.Merge(m, src)
}
func (m *Maps) XXX_Size() int {
return xxx_messageInfo_Maps.Size(m)
}
func (m *Maps) XXX_DiscardUnknown() {
xxx_messageInfo_Maps.DiscardUnknown(m)
}
var xxx_messageInfo_Maps proto.InternalMessageInfo
func (m *Maps) GetInt32ToStr() map[int32]string {
if m != nil {
return m.Int32ToStr
}
return nil
}
func (m *Maps) GetBoolToUint32() map[bool]uint32 {
if m != nil {
return m.BoolToUint32
}
return nil
}
func (m *Maps) GetUint64ToEnum() map[uint64]Enum {
if m != nil {
return m.Uint64ToEnum
}
return nil
}
func (m *Maps) GetStrToNested() map[string]*Nested {
if m != nil {
return m.StrToNested
}
return nil
}
func (m *Maps) GetStrToOneofs() map[string]*Oneofs {
if m != nil {
return m.StrToOneofs
}
return nil
}
func init() {
proto.RegisterFile("encoding/testprotos/pb3/test.proto", fileDescriptor_33e0a17922cde063_gzipped)
proto.RegisterEnum("pb3.Enum", Enum_name, Enum_value)
proto.RegisterEnum("pb3.Enums_NestedEnum", Enums_NestedEnum_name, Enums_NestedEnum_value)
proto.RegisterType((*Scalars)(nil), "pb3.Scalars")
proto.RegisterType((*Enums)(nil), "pb3.Enums")
proto.RegisterType((*Nests)(nil), "pb3.Nests")
proto.RegisterType((*Nested)(nil), "pb3.Nested")
proto.RegisterType((*Oneofs)(nil), "pb3.Oneofs")
proto.RegisterType((*Maps)(nil), "pb3.Maps")
proto.RegisterMapType((map[bool]uint32)(nil), "pb3.Maps.BoolToUint32Entry")
proto.RegisterMapType((map[int32]string)(nil), "pb3.Maps.Int32ToStrEntry")
proto.RegisterMapType((map[string]*Nested)(nil), "pb3.Maps.StrToNestedEntry")
proto.RegisterMapType((map[string]*Oneofs)(nil), "pb3.Maps.StrToOneofsEntry")
proto.RegisterMapType((map[uint64]Enum)(nil), "pb3.Maps.Uint64ToEnumEntry")
}
var fileDescriptor_33e0a17922cde063 = []byte{
// 1690 bytes of the wire-encoded FileDescriptorProto
0x0a, 0x22, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x70, 0x62, 0x33, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x12, 0x03, 0x70, 0x62, 0x33, 0x22, 0x9e, 0x03, 0x0a, 0x07, 0x53, 0x63,
0x61, 0x6c, 0x61, 0x72, 0x73, 0x12, 0x15, 0x0a, 0x06, 0x73, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18,
0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x73, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x17, 0x0a, 0x07,
0x73, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73,
0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34,
0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x73, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x19,
0x0a, 0x08, 0x73, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d,
0x52, 0x07, 0x73, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x5f, 0x75,
0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x73, 0x55, 0x69,
0x6e, 0x74, 0x36, 0x34, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32,
0x18, 0x06, 0x20, 0x01, 0x28, 0x11, 0x52, 0x07, 0x73, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12,
0x19, 0x0a, 0x08, 0x73, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x07, 0x20, 0x01, 0x28,
0x12, 0x52, 0x07, 0x73, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x5f,
0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x08, 0x20, 0x01, 0x28, 0x07, 0x52, 0x08, 0x73,
0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x5f, 0x66, 0x69, 0x78,
0x65, 0x64, 0x36, 0x34, 0x18, 0x09, 0x20, 0x01, 0x28, 0x06, 0x52, 0x08, 0x73, 0x46, 0x69, 0x78,
0x65, 0x64, 0x36, 0x34, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64,
0x33, 0x32, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0f, 0x52, 0x09, 0x73, 0x53, 0x66, 0x69, 0x78, 0x65,
0x64, 0x33, 0x32, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36,
0x34, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x10, 0x52, 0x09, 0x73, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64,
0x36, 0x34, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x14, 0x20,
0x01, 0x28, 0x02, 0x52, 0x06, 0x73, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73,
0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x73,
0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x5f, 0x62, 0x79, 0x74, 0x65,
0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x73, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12,
0x19, 0x0a, 0x08, 0x73, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28,
0x09, 0x52, 0x07, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x22, 0x98, 0x01, 0x0a, 0x05, 0x45,
0x6e, 0x75, 0x6d, 0x73, 0x12, 0x20, 0x0a, 0x06, 0x73, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x01,
0x20, 0x01, 0x28, 0x0e, 0x32, 0x09, 0x2e, 0x70, 0x62, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52,
0x05, 0x73, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x39, 0x0a, 0x0d, 0x73, 0x5f, 0x6e, 0x65, 0x73, 0x74,
0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e,
0x70, 0x62, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0b, 0x73, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75,
0x6d, 0x22, 0x32, 0x0a, 0x0a, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12,
0x08, 0x0a, 0x04, 0x43, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x55, 0x4e, 0x4f,
0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x44, 0x4f, 0x53, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x44,
0x49, 0x45, 0x5a, 0x10, 0x0a, 0x22, 0x2f, 0x0a, 0x05, 0x4e, 0x65, 0x73, 0x74, 0x73, 0x12, 0x26,
0x0a, 0x08, 0x73, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x0b, 0x2e, 0x70, 0x62, 0x33, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x07, 0x73,
0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x22, 0x4b, 0x0a, 0x06, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
0x12, 0x19, 0x0a, 0x08, 0x73, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x52, 0x07, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x26, 0x0a, 0x08, 0x73,
0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e,
0x70, 0x62, 0x33, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x07, 0x73, 0x4e, 0x65, 0x73,
0x74, 0x65, 0x64, 0x22, 0x94, 0x01, 0x0a, 0x06, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x73, 0x12, 0x2a,
0x0a, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01,
0x28, 0x0e, 0x32, 0x09, 0x2e, 0x70, 0x62, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52,
0x09, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x23, 0x0a, 0x0c, 0x6f, 0x6e,
0x65, 0x6f, 0x66, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
0x48, 0x00, 0x52, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12,
0x30, 0x0a, 0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18,
0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x33, 0x2e, 0x4e, 0x65, 0x73, 0x74,
0x65, 0x64, 0x48, 0x00, 0x52, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x4e, 0x65, 0x73, 0x74, 0x65,
0x64, 0x42, 0x07, 0x0a, 0x05, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x22, 0xaf, 0x05, 0x0a, 0x04, 0x4d,
0x61, 0x70, 0x73, 0x12, 0x3b, 0x0a, 0x0c, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x6f, 0x5f,
0x73, 0x74, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x62, 0x33, 0x2e,
0x4d, 0x61, 0x70, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x54, 0x6f, 0x53, 0x74, 0x72, 0x45,
0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x54, 0x6f, 0x53, 0x74, 0x72,
0x12, 0x41, 0x0a, 0x0e, 0x62, 0x6f, 0x6f, 0x6c, 0x5f, 0x74, 0x6f, 0x5f, 0x75, 0x69, 0x6e, 0x74,
0x33, 0x32, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x62, 0x33, 0x2e, 0x4d,
0x61, 0x70, 0x73, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x54, 0x6f, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32,
0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x62, 0x6f, 0x6f, 0x6c, 0x54, 0x6f, 0x55, 0x69, 0x6e,
0x74, 0x33, 0x32, 0x12, 0x41, 0x0a, 0x0e, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x6f,
0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x62,
0x33, 0x2e, 0x4d, 0x61, 0x70, 0x73, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x54, 0x6f, 0x45,
0x6e, 0x75, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34,
0x54, 0x6f, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x3e, 0x0a, 0x0d, 0x73, 0x74, 0x72, 0x5f, 0x74, 0x6f,
0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
0x70, 0x62, 0x33, 0x2e, 0x4d, 0x61, 0x70, 0x73, 0x2e, 0x53, 0x74, 0x72, 0x54, 0x6f, 0x4e, 0x65,
0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x54, 0x6f,
0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x3e, 0x0a, 0x0d, 0x73, 0x74, 0x72, 0x5f, 0x74, 0x6f,
0x5f, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
0x70, 0x62, 0x33, 0x2e, 0x4d, 0x61, 0x70, 0x73, 0x2e, 0x53, 0x74, 0x72, 0x54, 0x6f, 0x4f, 0x6e,
0x65, 0x6f, 0x66, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x54, 0x6f,
0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x54,
0x6f, 0x53, 0x74, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76,
0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3f, 0x0a, 0x11, 0x42, 0x6f, 0x6f, 0x6c, 0x54, 0x6f, 0x55,
0x69, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05,
0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c,
0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x4a, 0x0a, 0x11, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34,
0x54, 0x6f, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1f, 0x0a,
0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x09, 0x2e, 0x70,
0x62, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
0x38, 0x01, 0x1a, 0x4b, 0x0a, 0x10, 0x53, 0x74, 0x72, 0x54, 0x6f, 0x4e, 0x65, 0x73, 0x74, 0x65,
0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x21, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x33, 0x2e, 0x4e, 0x65,
0x73, 0x74, 0x65, 0x64, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
0x4b, 0x0a, 0x10, 0x53, 0x74, 0x72, 0x54, 0x6f, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x73, 0x45, 0x6e,
0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x21, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x33, 0x2e, 0x4f, 0x6e, 0x65, 0x6f, 0x66,
0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x2a, 0x2b, 0x0a, 0x04,
0x45, 0x6e, 0x75, 0x6d, 0x12, 0x08, 0x0a, 0x04, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x07,
0x0a, 0x03, 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x57, 0x4f, 0x10, 0x02,
0x12, 0x07, 0x0a, 0x03, 0x54, 0x45, 0x4e, 0x10, 0x0a, 0x42, 0x37, 0x5a, 0x35, 0x67, 0x69, 0x74,
0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2f, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x76, 0x32, 0x2f, 0x65, 0x6e, 0x63, 0x6f, 0x64,
0x69, 0x6e, 0x67, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x70,
0x62, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var fileDescriptor_33e0a17922cde063_gzipped = func() []byte {
bb := new(bytes.Buffer)
zw, _ := gzip.NewWriterLevel(bb, gzip.NoCompression)
zw.Write(fileDescriptor_33e0a17922cde063)
zw.Close()
return bb.Bytes()
}()
const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
var Test_protoFile protoreflect.FileDescriptor
var xxx_Test_protoFile_enumTypes [2]protoreflect.EnumType
var xxx_Test_protoFile_messageTypes [11]protoimpl.MessageType
var xxx_Test_protoFile_goTypes = []interface{}{
(Enum)(0), // 0: pb3.Enum
(Enums_NestedEnum)(0), // 1: pb3.Enums.NestedEnum
(*Scalars)(nil), // 2: pb3.Scalars
(*Enums)(nil), // 3: pb3.Enums
(*Nests)(nil), // 4: pb3.Nests
(*Nested)(nil), // 5: pb3.Nested
(*Oneofs)(nil), // 6: pb3.Oneofs
(*Maps)(nil), // 7: pb3.Maps
nil, // 8: pb3.Maps.Int32ToStrEntry
nil, // 9: pb3.Maps.BoolToUint32Entry
nil, // 10: pb3.Maps.Uint64ToEnumEntry
nil, // 11: pb3.Maps.StrToNestedEntry
nil, // 12: pb3.Maps.StrToOneofsEntry
}
var xxx_Test_protoFile_depIdxs = []int32{
0, // pb3.Enums.s_enum:type_name -> pb3.Enum
1, // pb3.Enums.s_nested_enum:type_name -> pb3.Enums.NestedEnum
5, // pb3.Nests.s_nested:type_name -> pb3.Nested
5, // pb3.Nested.s_nested:type_name -> pb3.Nested
0, // pb3.Oneofs.oneof_enum:type_name -> pb3.Enum
5, // pb3.Oneofs.oneof_nested:type_name -> pb3.Nested
8, // pb3.Maps.int32_to_str:type_name -> pb3.Maps.Int32ToStrEntry
9, // pb3.Maps.bool_to_uint32:type_name -> pb3.Maps.BoolToUint32Entry
10, // pb3.Maps.uint64_to_enum:type_name -> pb3.Maps.Uint64ToEnumEntry
11, // pb3.Maps.str_to_nested:type_name -> pb3.Maps.StrToNestedEntry
12, // pb3.Maps.str_to_oneofs:type_name -> pb3.Maps.StrToOneofsEntry
0, // pb3.Maps.Uint64ToEnumEntry.value:type_name -> pb3.Enum
5, // pb3.Maps.StrToNestedEntry.value:type_name -> pb3.Nested
6, // pb3.Maps.StrToOneofsEntry.value:type_name -> pb3.Oneofs
}
func init() {
var messageTypes [11]protoreflect.MessageType
Test_protoFile = protoimpl.FileBuilder{
RawDescriptor: fileDescriptor_33e0a17922cde063,
GoTypes: xxx_Test_protoFile_goTypes,
DependencyIndexes: xxx_Test_protoFile_depIdxs,
EnumOutputTypes: xxx_Test_protoFile_enumTypes[:],
MessageOutputTypes: messageTypes[:],
}.Init()
messageGoTypes := xxx_Test_protoFile_goTypes[2:][:11]
for i, mt := range messageTypes[:] {
xxx_Test_protoFile_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
xxx_Test_protoFile_messageTypes[i].PBType = mt
}
xxx_Test_protoFile_goTypes = nil
xxx_Test_protoFile_depIdxs = nil
}

View File

@ -6,12 +6,11 @@
syntax = "proto3";
package pb3;
option go_package = "github.com/golang/protobuf/v2/encoding/textpb/testprotos/pb3";
option go_package = "github.com/golang/protobuf/v2/encoding/testprotos/pb3";
// Scalars contains scalar field types.
message Scalars {
bool s_bool = 1;
int32 s_int32 = 2;
int64 s_int64 = 3;
uint32 s_uint32 = 4;
@ -56,7 +55,7 @@ message Enums {
// Message contains nested message field.
message Nests {
Nested s_nested = 1;
Nested s_nested = 2;
}
// Message type used as submessage.
@ -64,3 +63,21 @@ message Nested {
string s_string = 1;
Nested s_nested = 2;
}
// Message contains oneof field.
message Oneofs {
oneof union {
Enum oneof_enum = 1;
string oneof_string = 2;
Nested oneof_nested = 3;
}
}
// Message contains map fields.
message Maps {
map<int32, string> int32_to_str = 1;
map<bool, uint32> bool_to_uint32 = 2;
map<uint64, Enum> uint64_to_enum = 3;
map<string, Nested> str_to_nested = 4;
map<string, Oneofs> str_to_oneofs = 5;
}

View File

@ -21,12 +21,13 @@ import (
// TODO: Remove this when protoV1 registers these hooks for you.
_ "github.com/golang/protobuf/v2/internal/legacy"
"github.com/golang/protobuf/v2/encoding/textpb/testprotos/pb2"
"github.com/golang/protobuf/v2/encoding/textpb/testprotos/pb3"
"github.com/golang/protobuf/v2/encoding/testprotos/pb2"
"github.com/golang/protobuf/v2/encoding/testprotos/pb3"
)
func init() {
// TODO: remove this when generated code registers to V2 global registry.
// TODO: remove these registerExtension calls when generated code registers
// to V2 global registry.
registerExtension(pb2.E_OptExtBool)
registerExtension(pb2.E_OptExtString)
registerExtension(pb2.E_OptExtEnum)
@ -66,7 +67,7 @@ func TestUnmarshal(t *testing.T) {
inputMessage: &pb2.Scalars{},
wantMessage: &pb2.Scalars{},
}, {
desc: "proto2 optional scalar fields set to zero values",
desc: "proto2 optional scalars set to zero values",
inputMessage: &pb2.Scalars{},
inputText: `opt_bool: false
opt_int32: 0
@ -102,7 +103,7 @@ opt_string: ""
OptString: scalar.String(""),
},
}, {
desc: "proto3 scalar fields set to zero values",
desc: "proto3 scalars set to zero values",
inputMessage: &pb3.Scalars{},
inputText: `s_bool: false
s_int32: 0
@ -122,7 +123,7 @@ s_string: ""
`,
wantMessage: &pb3.Scalars{},
}, {
desc: "proto2 optional scalar fields",
desc: "proto2 optional scalars",
inputMessage: &pb2.Scalars{},
inputText: `opt_bool: true
opt_int32: 255
@ -154,7 +155,7 @@ opt_string: "谷歌"
OptString: scalar.String("谷歌"),
},
}, {
desc: "proto3 scalar fields",
desc: "proto3 scalars",
inputMessage: &pb3.Scalars{},
inputText: `s_bool: true
s_int32: 255
@ -261,28 +262,28 @@ s_string: "谷歌"
inputText: "s_sfixed64: bad",
wantErr: true,
}, {
desc: "float32 positive infinity",
desc: "float positive infinity",
inputMessage: &pb3.Scalars{},
inputText: "s_float: inf",
wantMessage: &pb3.Scalars{
SFloat: float32(math.Inf(1)),
},
}, {
desc: "float32 negative infinity",
desc: "float negative infinity",
inputMessage: &pb3.Scalars{},
inputText: "s_float: -inf",
wantMessage: &pb3.Scalars{
SFloat: float32(math.Inf(-1)),
},
}, {
desc: "float64 positive infinity",
desc: "double positive infinity",
inputMessage: &pb3.Scalars{},
inputText: "s_double: inf",
wantMessage: &pb3.Scalars{
SDouble: math.Inf(1),
},
}, {
desc: "float64 negative infinity",
desc: "double negative infinity",
inputMessage: &pb3.Scalars{},
inputText: "s_double: -inf",
wantMessage: &pb3.Scalars{
@ -311,13 +312,6 @@ s_string: "谷歌"
inputText: `
opt_bool: true
opt_bool: false
`,
wantErr: true,
}, {
desc: "proto2 invalid singular field",
inputMessage: &pb2.Scalars{},
inputText: `
opt_bool: [true, false]
`,
wantErr: true,
}, {
@ -327,6 +321,13 @@ opt_bool: [true, false]
opt_bool: true
opt_string: "hello"
opt_bool: false
`,
wantErr: true,
}, {
desc: "proto2 invalid singular field",
inputMessage: &pb2.Scalars{},
inputText: `
opt_bool: [true, false]
`,
wantErr: true,
}, {
@ -350,22 +351,22 @@ s_bool: true
desc: "proto2 enum",
inputMessage: &pb2.Enums{},
inputText: `
opt_enum: FIRST
opt_enum: ONE
opt_nested_enum: UNO
`,
wantMessage: &pb2.Enums{
OptEnum: pb2.Enum_FIRST.Enum(),
OptEnum: pb2.Enum_ONE.Enum(),
OptNestedEnum: pb2.Enums_UNO.Enum(),
},
}, {
desc: "proto2 enum set to numeric values",
inputMessage: &pb2.Enums{},
inputText: `
opt_enum: 1
opt_enum: 2
opt_nested_enum: 2
`,
wantMessage: &pb2.Enums{
OptEnum: pb2.Enum_FIRST.Enum(),
OptEnum: pb2.Enum_TWO.Enum(),
OptNestedEnum: pb2.Enums_DOS.Enum(),
},
}, {
@ -383,7 +384,7 @@ opt_nested_enum: -101
desc: "proto2 enum set to invalid named",
inputMessage: &pb2.Enums{},
inputText: `
opt_enum: UNNAMED
opt_enum: UNNAMED
opt_nested_enum: UNNAMED_TOO
`,
wantErr: true,
@ -403,11 +404,11 @@ s_nested_enum: DIEZ
inputMessage: &pb3.Enums{},
inputText: `
s_enum: 2
s_nested_enum: 1
s_nested_enum: 2
`,
wantMessage: &pb3.Enums{
SEnum: pb3.Enum_TWO,
SNestedEnum: pb3.Enums_UNO,
SNestedEnum: pb3.Enums_DOS,
},
}, {
desc: "proto3 enum unnamed numeric value",
@ -477,57 +478,67 @@ s_nested: {
},
},
}, {
desc: "oneof field set to empty string",
inputMessage: &pb2.Oneofs{},
inputText: "str: ''",
wantMessage: &pb2.Oneofs{
Union: &pb2.Oneofs_Str{},
desc: "oneof set to empty string",
inputMessage: &pb3.Oneofs{},
inputText: "oneof_string: ''",
wantMessage: &pb3.Oneofs{
Union: &pb3.Oneofs_OneofString{},
},
}, {
desc: "oneof field set to string",
inputMessage: &pb2.Oneofs{},
inputText: "str: 'hello'",
wantMessage: &pb2.Oneofs{
Union: &pb2.Oneofs_Str{
Str: "hello",
desc: "oneof set to string",
inputMessage: &pb3.Oneofs{},
inputText: "oneof_string: 'hello'",
wantMessage: &pb3.Oneofs{
Union: &pb3.Oneofs_OneofString{
OneofString: "hello",
},
},
}, {
desc: "oneof field set to empty message",
inputMessage: &pb2.Oneofs{},
inputText: "msg: {}",
wantMessage: &pb2.Oneofs{
Union: &pb2.Oneofs_Msg{
Msg: &pb2.Nested{},
desc: "oneof set to enum",
inputMessage: &pb3.Oneofs{},
inputText: "oneof_enum: TEN",
wantMessage: &pb3.Oneofs{
Union: &pb3.Oneofs_OneofEnum{
OneofEnum: pb3.Enum_TEN,
},
},
}, {
desc: "oneof field set to message",
inputMessage: &pb2.Oneofs{},
desc: "oneof set to empty message",
inputMessage: &pb3.Oneofs{},
inputText: "oneof_nested: {}",
wantMessage: &pb3.Oneofs{
Union: &pb3.Oneofs_OneofNested{
OneofNested: &pb3.Nested{},
},
},
}, {
desc: "oneof set to message",
inputMessage: &pb3.Oneofs{},
inputText: `
msg: {
opt_string: "nested message"
oneof_nested: {
s_string: "nested message"
}
`,
wantMessage: &pb2.Oneofs{
Union: &pb2.Oneofs_Msg{
Msg: &pb2.Nested{
OptString: scalar.String("nested message"),
wantMessage: &pb3.Oneofs{
Union: &pb3.Oneofs_OneofNested{
OneofNested: &pb3.Nested{
SString: "nested message",
},
},
},
}, {
desc: "oneof field set to last value",
inputMessage: &pb2.Oneofs{},
desc: "oneof set to last value",
inputMessage: &pb3.Oneofs{},
inputText: `
msg: {
opt_string: "nested message"
oneof_nested: {
s_string: "nested message"
}
str: "wins"
oneof_enum: TEN
oneof_string: "wins"
`,
wantMessage: &pb2.Oneofs{
Union: &pb2.Oneofs_Str{
Str: "wins",
wantMessage: &pb3.Oneofs{
Union: &pb3.Oneofs_OneofString{
OneofString: "wins",
},
},
}, {
@ -564,14 +575,14 @@ rpt_string: "b"
desc: "repeated enums",
inputMessage: &pb2.Enums{},
inputText: `
rpt_enum: TENTH
rpt_enum: TEN
rpt_enum: 1
rpt_nested_enum: [DOS, 2]
rpt_enum: 42
rpt_nested_enum: -47
`,
wantMessage: &pb2.Enums{
RptEnum: []pb2.Enum{pb2.Enum_TENTH, pb2.Enum_FIRST, 42},
RptEnum: []pb2.Enum{pb2.Enum_TEN, pb2.Enum_ONE, 42},
RptNestedEnum: []pb2.Enums_NestedEnum{pb2.Enums_DOS, pb2.Enums_DOS, -47},
},
}, {
@ -608,22 +619,22 @@ rpt_nested: {}
inputMessage: &pb2.Nests{},
inputText: `
RptGroup: {
rpt_bool: true
rpt_bool: false
rpt_string: "hello"
rpt_string: "world"
}
RptGroup: {}
`,
wantMessage: &pb2.Nests{
Rptgroup: []*pb2.Nests_RptGroup{
{
RptBool: []bool{true, false},
RptString: []string{"hello", "world"},
},
{},
},
},
}, {
desc: "map fields 1",
inputMessage: &pb2.Maps{},
inputMessage: &pb3.Maps{},
inputText: `
int32_to_str: {
key: -101
@ -633,37 +644,25 @@ int32_to_str: {
key: 0
value: "zero"
}
sfixed64_to_bool: {
key: 0
value: false
bool_to_uint32: {
key: false
value: 101
}
int32_to_str: {
key: 255
value: "0xff"
}
bool_to_uint32: {
key: false
value: 101
}
sfixed64_to_bool: {
key: 51966
value: true
}
bool_to_uint32: {
key: true
value: 42
}
`,
wantMessage: &pb2.Maps{
wantMessage: &pb3.Maps{
Int32ToStr: map[int32]string{
-101: "-101",
0xff: "0xff",
0: "zero",
},
Sfixed64ToBool: map[int64]bool{
0xcafe: true,
0: false,
},
BoolToUint32: map[bool]uint32{
true: 42,
false: 101,
@ -671,76 +670,76 @@ bool_to_uint32: {
},
}, {
desc: "map fields 2",
inputMessage: &pb2.Maps{},
inputMessage: &pb3.Maps{},
inputText: `
uint64_to_enum: {
key: 1
value: FIRST
value: ONE
}
uint64_to_enum: {
key: 2
value: SECOND
value: 2
}
uint64_to_enum: {
key: 10
value: TENTH
value: 101
}
`,
wantMessage: &pb2.Maps{
Uint64ToEnum: map[uint64]pb2.Enum{
1: pb2.Enum_FIRST,
2: pb2.Enum_SECOND,
10: pb2.Enum_TENTH,
wantMessage: &pb3.Maps{
Uint64ToEnum: map[uint64]pb3.Enum{
1: pb3.Enum_ONE,
2: pb3.Enum_TWO,
10: 101,
},
},
}, {
desc: "map fields 3",
inputMessage: &pb2.Maps{},
inputMessage: &pb3.Maps{},
inputText: `
str_to_nested: {
key: "nested_one"
value: {
opt_string: "nested in a map"
s_string: "nested in a map"
}
}
`,
wantMessage: &pb2.Maps{
StrToNested: map[string]*pb2.Nested{
"nested_one": &pb2.Nested{
OptString: scalar.String("nested in a map"),
wantMessage: &pb3.Maps{
StrToNested: map[string]*pb3.Nested{
"nested_one": &pb3.Nested{
SString: "nested in a map",
},
},
},
}, {
desc: "map fields 4",
inputMessage: &pb2.Maps{},
inputMessage: &pb3.Maps{},
inputText: `
str_to_oneofs: {
key: "nested"
value: {
msg: {
opt_string: "nested oneof in map field value"
oneof_nested: {
s_string: "nested oneof in map field value"
}
}
}
str_to_oneofs: {
key: "string"
value: {
str: "hello"
oneof_string: "hello"
}
}
`,
wantMessage: &pb2.Maps{
StrToOneofs: map[string]*pb2.Oneofs{
"string": &pb2.Oneofs{
Union: &pb2.Oneofs_Str{
Str: "hello",
wantMessage: &pb3.Maps{
StrToOneofs: map[string]*pb3.Oneofs{
"string": &pb3.Oneofs{
Union: &pb3.Oneofs_OneofString{
OneofString: "hello",
},
},
"nested": &pb2.Oneofs{
Union: &pb2.Oneofs_Msg{
Msg: &pb2.Nested{
OptString: scalar.String("nested oneof in map field value"),
"nested": &pb3.Oneofs{
Union: &pb3.Oneofs_OneofNested{
OneofNested: &pb3.Nested{
SString: "nested oneof in map field value",
},
},
},
@ -748,7 +747,7 @@ str_to_oneofs: {
},
}, {
desc: "map contains duplicate keys",
inputMessage: &pb2.Maps{},
inputMessage: &pb3.Maps{},
inputText: `
int32_to_str: {
key: 0
@ -759,14 +758,14 @@ int32_to_str: {
value: "zero"
}
`,
wantMessage: &pb2.Maps{
wantMessage: &pb3.Maps{
Int32ToStr: map[int32]string{
0: "zero",
},
},
}, {
desc: "map contains duplicate key fields",
inputMessage: &pb2.Maps{},
inputMessage: &pb3.Maps{},
inputText: `
int32_to_str: {
key: 0
@ -777,7 +776,7 @@ int32_to_str: {
wantErr: true,
}, {
desc: "map contains duplicate value fields",
inputMessage: &pb2.Maps{},
inputMessage: &pb3.Maps{},
inputText: `
int32_to_str: {
key: 1
@ -788,44 +787,103 @@ int32_to_str: {
wantErr: true,
}, {
desc: "map contains missing key",
inputMessage: &pb2.Maps{},
inputMessage: &pb3.Maps{},
inputText: `
int32_to_str: {
value: "zero"
}
bool_to_uint32: {
value: 47
}
str_to_nested: {
value: {}
}
`,
wantMessage: &pb2.Maps{
wantMessage: &pb3.Maps{
Int32ToStr: map[int32]string{
0: "zero",
},
BoolToUint32: map[bool]uint32{
false: 47,
},
StrToNested: map[string]*pb3.Nested{
"": {},
},
},
}, {
desc: "map contains missing value",
inputMessage: &pb2.Maps{},
inputMessage: &pb3.Maps{},
inputText: `
int32_to_str: {
key: 100
}
bool_to_uint32: {
key: true
}
uint64_to_enum: {
key: 101
}
str_to_nested: {
key: "hello"
}
`,
wantMessage: &pb2.Maps{
wantMessage: &pb3.Maps{
Int32ToStr: map[int32]string{
100: "",
},
BoolToUint32: map[bool]uint32{
true: 0,
},
Uint64ToEnum: map[uint64]pb3.Enum{
101: pb3.Enum_ZERO,
},
StrToNested: map[string]*pb3.Nested{
"hello": {},
},
},
}, {
desc: "map contains missing key and value",
inputMessage: &pb2.Maps{},
inputMessage: &pb3.Maps{},
inputText: `
int32_to_str: {}
bool_to_uint32: {}
uint64_to_enum: {}
str_to_nested: {}
`,
wantMessage: &pb2.Maps{
wantMessage: &pb3.Maps{
Int32ToStr: map[int32]string{
0: "",
},
BoolToUint32: map[bool]uint32{
false: 0,
},
Uint64ToEnum: map[uint64]pb3.Enum{
0: pb3.Enum_ZERO,
},
StrToNested: map[string]*pb3.Nested{
"": {},
},
},
}, {
desc: "map contains overriding entries",
inputMessage: &pb3.Maps{},
inputText: `
int32_to_str: {
key: 0
}
int32_to_str: {
value: "empty"
}
int32_to_str: {}
`,
wantMessage: &pb3.Maps{
Int32ToStr: map[int32]string{
0: "",
},
},
}, {
desc: "map contains unknown field",
inputMessage: &pb2.Maps{},
inputMessage: &pb3.Maps{},
inputText: `
int32_to_str: {
key: 0
@ -836,7 +894,7 @@ int32_to_str: {
wantErr: true,
}, {
desc: "map contains extension-like key field",
inputMessage: &pb2.Maps{},
inputMessage: &pb3.Maps{},
inputText: `
int32_to_str: {
[key]: 10
@ -846,7 +904,7 @@ int32_to_str: {
wantErr: true,
}, {
desc: "map contains invalid key",
inputMessage: &pb2.Maps{},
inputMessage: &pb3.Maps{},
inputText: `
int32_to_str: {
key: "invalid"
@ -856,7 +914,7 @@ int32_to_str: {
wantErr: true,
}, {
desc: "map contains invalid value",
inputMessage: &pb2.Maps{},
inputMessage: &pb3.Maps{},
inputText: `
int32_to_str: {
key: 100
@ -866,7 +924,7 @@ int32_to_str: {
wantErr: true,
}, {
desc: "map using mix of [] and repeated",
inputMessage: &pb2.Maps{},
inputMessage: &pb3.Maps{},
inputText: `
int32_to_str: {
key: 1
@ -889,7 +947,7 @@ int32_to_str: {
value: "two"
}
`,
wantMessage: &pb2.Maps{
wantMessage: &pb3.Maps{
Int32ToStr: map[int32]string{
0: "",
1: "one",
@ -902,7 +960,7 @@ int32_to_str: {
inputMessage: &pb2.Requireds{},
wantErr: true,
}, {
desc: "proto2 required field set but not optional",
desc: "proto2 required field set",
inputMessage: &pb2.PartialRequired{},
inputText: "req_string: 'this is required'",
wantMessage: &pb2.PartialRequired{
@ -913,17 +971,15 @@ int32_to_str: {
inputMessage: &pb2.Requireds{},
inputText: `
req_bool: false
req_fixed32: 47
req_sfixed64: 3203386110
req_string: "hello"
req_enum: FIRST
req_enum: ONE
`,
wantMessage: &pb2.Requireds{
ReqBool: scalar.Bool(false),
ReqFixed32: scalar.Uint32(47),
ReqSfixed64: scalar.Int64(0xbeefcafe),
ReqString: scalar.String("hello"),
ReqEnum: pb2.Enum_FIRST.Enum(),
ReqEnum: pb2.Enum_ONE.Enum(),
},
wantErr: true,
}, {
@ -931,28 +987,18 @@ req_enum: FIRST
inputMessage: &pb2.Requireds{},
inputText: `
req_bool: false
req_fixed32: 0
req_fixed64: 0
req_sfixed32: 0
req_sfixed64: 0
req_float: 0
req_double: 0
req_string: ""
req_bytes: ""
req_enum: UNKNOWN
req_enum: ONE
req_nested: {}
`,
wantMessage: &pb2.Requireds{
ReqBool: scalar.Bool(false),
ReqFixed32: scalar.Uint32(0),
ReqFixed64: scalar.Uint64(0),
ReqSfixed32: scalar.Int32(0),
ReqSfixed64: scalar.Int64(0),
ReqFloat: scalar.Float32(0),
ReqDouble: scalar.Float64(0),
ReqString: scalar.String(""),
ReqEnum: pb2.Enum_UNKNOWN.Enum(),
ReqBytes: []byte{},
ReqEnum: pb2.Enum_ONE.Enum(),
ReqNested: &pb2.Nested{},
},
}, {
@ -1010,6 +1056,17 @@ str_to_nested: {
},
},
wantErr: true,
}, {
desc: "indirect required field in oneof",
inputMessage: &pb2.IndirectRequired{},
inputText: `oneof_nested: {}
`,
wantMessage: &pb2.IndirectRequired{
Union: &pb2.IndirectRequired_OneofNested{
OneofNested: &pb2.NestedWithRequired{},
},
},
wantErr: true,
}, {
desc: "ignore reserved field",
inputMessage: &pb2.Nests{},
@ -1029,7 +1086,7 @@ opt_bool: true
}
[pb2.opt_ext_string]: "extension field"
opt_int32: 42
[pb2.opt_ext_enum]: TENTH
[pb2.opt_ext_enum]: TEN
`,
wantMessage: func() proto.Message {
m := &pb2.Extensions{
@ -1039,7 +1096,7 @@ opt_int32: 42
}
setExtension(m, pb2.E_OptExtBool, true)
setExtension(m, pb2.E_OptExtString, "extension field")
setExtension(m, pb2.E_OptExtEnum, pb2.Enum_TENTH)
setExtension(m, pb2.E_OptExtEnum, pb2.Enum_TEN)
setExtension(m, pb2.E_OptExtNested, &pb2.Nested{
OptString: scalar.String("nested in an extension"),
OptNested: &pb2.Nested{
@ -1051,10 +1108,10 @@ opt_int32: 42
}, {
desc: "extensions of repeated fields",
inputMessage: &pb2.Extensions{},
inputText: `[pb2.rpt_ext_enum]: TENTH
inputText: `[pb2.rpt_ext_enum]: TEN
[pb2.rpt_ext_enum]: 101
[pb2.rpt_ext_fixed32]: 42
[pb2.rpt_ext_enum]: FIRST
[pb2.rpt_ext_enum]: ONE
[pb2.rpt_ext_nested]: {
opt_string: "one"
}
@ -1068,7 +1125,7 @@ opt_int32: 42
`,
wantMessage: func() proto.Message {
m := &pb2.Extensions{}
setExtension(m, pb2.E_RptExtEnum, &[]pb2.Enum{pb2.Enum_TENTH, 101, pb2.Enum_FIRST})
setExtension(m, pb2.E_RptExtEnum, &[]pb2.Enum{pb2.Enum_TEN, 101, pb2.Enum_ONE})
setExtension(m, pb2.E_RptExtFixed32, &[]uint32{42, 47})
setExtension(m, pb2.E_RptExtNested, &[]*pb2.Nested{
&pb2.Nested{OptString: scalar.String("one")},
@ -1081,7 +1138,7 @@ opt_int32: 42
desc: "extensions of non-repeated fields in another message",
inputMessage: &pb2.Extensions{},
inputText: `[pb2.ExtensionsContainer.opt_ext_bool]: true
[pb2.ExtensionsContainer.opt_ext_enum]: TENTH
[pb2.ExtensionsContainer.opt_ext_enum]: TEN
[pb2.ExtensionsContainer.opt_ext_nested]: {
opt_string: "nested in an extension"
opt_nested: {
@ -1094,7 +1151,7 @@ opt_int32: 42
m := &pb2.Extensions{}
setExtension(m, pb2.E_ExtensionsContainer_OptExtBool, true)
setExtension(m, pb2.E_ExtensionsContainer_OptExtString, "extension field")
setExtension(m, pb2.E_ExtensionsContainer_OptExtEnum, pb2.Enum_TENTH)
setExtension(m, pb2.E_ExtensionsContainer_OptExtEnum, pb2.Enum_TEN)
setExtension(m, pb2.E_ExtensionsContainer_OptExtNested, &pb2.Nested{
OptString: scalar.String("nested in an extension"),
OptNested: &pb2.Nested{
@ -1112,13 +1169,13 @@ opt_int32: 42
[pb2.ExtensionsContainer.rpt_ext_nested]: {
opt_string: "one"
}
[pb2.ExtensionsContainer.rpt_ext_enum]: TENTH
[pb2.ExtensionsContainer.rpt_ext_enum]: TEN
[pb2.ExtensionsContainer.rpt_ext_nested]: {
opt_string: "two"
}
[pb2.ExtensionsContainer.rpt_ext_enum]: 101
[pb2.ExtensionsContainer.rpt_ext_string]: "hello"
[pb2.ExtensionsContainer.rpt_ext_enum]: FIRST
[pb2.ExtensionsContainer.rpt_ext_enum]: ONE
[pb2.ExtensionsContainer.rpt_ext_nested]: {
opt_string: "three"
}
@ -1130,7 +1187,7 @@ opt_int32: 42
OptBool: scalar.Bool(true),
OptInt32: scalar.Int32(42),
}
setExtension(m, pb2.E_ExtensionsContainer_RptExtEnum, &[]pb2.Enum{pb2.Enum_TENTH, 101, pb2.Enum_FIRST})
setExtension(m, pb2.E_ExtensionsContainer_RptExtEnum, &[]pb2.Enum{pb2.Enum_TEN, 101, pb2.Enum_ONE})
setExtension(m, pb2.E_ExtensionsContainer_RptExtString, &[]string{"hello", "world"})
setExtension(m, pb2.E_ExtensionsContainer_RptExtNested, &[]*pb2.Nested{
&pb2.Nested{OptString: scalar.String("one")},
@ -1211,6 +1268,8 @@ opt_int32: 42
return m
}(),
}, {
// TODO: Change these tests to directly use anypb.Any type instead once
// type has been regenerated with V2 compiler.
desc: "Any not expanded",
inputMessage: &pb2.KnownTypes{},
inputText: `opt_any: {

View File

@ -29,8 +29,8 @@ import (
_ "github.com/golang/protobuf/v2/internal/legacy"
anypb "github.com/golang/protobuf/ptypes/any"
"github.com/golang/protobuf/v2/encoding/textpb/testprotos/pb2"
"github.com/golang/protobuf/v2/encoding/textpb/testprotos/pb3"
"github.com/golang/protobuf/v2/encoding/testprotos/pb2"
"github.com/golang/protobuf/v2/encoding/testprotos/pb3"
)
func init() {
@ -67,7 +67,7 @@ func setExtension(m proto.Message, xd *protoapi.ExtensionDesc, val interface{})
knownFields.Set(wire.Number(xd.Field), pval)
}
func wrapAnyPB(any *anypb.Any) proto.Message {
func wrapV1Message(any *anypb.Any) proto.Message {
return impl.Export{}.MessageOf(any).Interface()
}
@ -88,15 +88,15 @@ func TestMarshal(t *testing.T) {
want string
wantErr bool
}{{
desc: "proto2 optional scalar fields not set",
desc: "proto2 optional scalars not set",
input: &pb2.Scalars{},
want: "\n",
}, {
desc: "proto3 scalar fields not set",
desc: "proto3 scalars not set",
input: &pb3.Scalars{},
want: "\n",
}, {
desc: "proto2 optional scalar fields set to zero values",
desc: "proto2 optional scalars set to zero values",
input: &pb2.Scalars{
OptBool: scalar.Bool(false),
OptInt32: scalar.Int32(0),
@ -131,7 +131,7 @@ opt_bytes: ""
opt_string: ""
`,
}, {
desc: "proto3 scalar fields set to zero values",
desc: "proto3 scalars set to zero values",
input: &pb3.Scalars{
SBool: false,
SInt32: 0,
@ -151,7 +151,7 @@ opt_string: ""
},
want: "\n",
}, {
desc: "proto2 optional scalar fields set to some values",
desc: "proto2 optional scalars set to some values",
input: &pb2.Scalars{
OptBool: scalar.Bool(true),
OptInt32: scalar.Int32(0xff),
@ -164,9 +164,8 @@ opt_string: ""
OptSfixed32: scalar.Int32(-32),
OptFloat: scalar.Float32(1.02),
OptDouble: scalar.Float64(1.0199999809265137),
// TODO: Update encoder to not output UTF8 for bytes.
OptBytes: []byte("\xe8\xb0\xb7\xe6\xad\x8c"),
OptString: scalar.String("谷歌"),
OptBytes: []byte("\xe8\xb0\xb7\xe6\xad\x8c"),
OptString: scalar.String("谷歌"),
},
want: `opt_bool: true
opt_int32: 255
@ -183,53 +182,41 @@ opt_bytes: "谷歌"
opt_string: "谷歌"
`,
}, {
desc: "float32 nan",
desc: "float nan",
input: &pb3.Scalars{
SFloat: float32(math.NaN()),
},
want: "s_float: nan\n",
}, {
desc: "float32 positive infinity",
desc: "float positive infinity",
input: &pb3.Scalars{
SFloat: float32(math.Inf(1)),
},
want: "s_float: inf\n",
}, {
desc: "float32 negative infinity",
desc: "float negative infinity",
input: &pb3.Scalars{
SFloat: float32(math.Inf(-1)),
},
want: "s_float: -inf\n",
}, {
desc: "float64 nan",
desc: "double nan",
input: &pb3.Scalars{
SDouble: math.NaN(),
},
want: "s_double: nan\n",
}, {
desc: "float64 positive infinity",
desc: "double positive infinity",
input: &pb3.Scalars{
SDouble: math.Inf(1),
},
want: "s_double: inf\n",
}, {
desc: "float64 negative infinity",
desc: "double negative infinity",
input: &pb3.Scalars{
SDouble: math.Inf(-1),
},
want: "s_double: -inf\n",
}, {
desc: "proto2 bytes set to empty string",
input: &pb2.Scalars{
OptBytes: []byte(""),
},
want: "opt_bytes: \"\"\n",
}, {
desc: "proto3 bytes set to empty string",
input: &pb3.Scalars{
SBytes: []byte(""),
},
want: "\n",
}, {
desc: "proto2 enum not set",
input: &pb2.Enums{},
@ -237,28 +224,28 @@ opt_string: "谷歌"
}, {
desc: "proto2 enum set to zero value",
input: &pb2.Enums{
OptEnum: pb2.Enum_UNKNOWN.Enum(),
OptEnum: pb2Enum(0),
OptNestedEnum: pb2Enums_NestedEnum(0),
},
want: `opt_enum: UNKNOWN
want: `opt_enum: 0
opt_nested_enum: 0
`,
}, {
desc: "proto2 enum",
input: &pb2.Enums{
OptEnum: pb2.Enum_FIRST.Enum(),
OptEnum: pb2.Enum_ONE.Enum(),
OptNestedEnum: pb2.Enums_UNO.Enum(),
},
want: `opt_enum: FIRST
want: `opt_enum: ONE
opt_nested_enum: UNO
`,
}, {
desc: "proto2 enum set to numeric values",
input: &pb2.Enums{
OptEnum: pb2Enum(1),
OptEnum: pb2Enum(2),
OptNestedEnum: pb2Enums_NestedEnum(2),
},
want: `opt_enum: FIRST
want: `opt_enum: TWO
opt_nested_enum: DOS
`,
}, {
@ -285,19 +272,19 @@ opt_nested_enum: -101
desc: "proto3 enum",
input: &pb3.Enums{
SEnum: pb3.Enum_ONE,
SNestedEnum: pb3.Enums_DIEZ,
SNestedEnum: pb3.Enums_UNO,
},
want: `s_enum: ONE
s_nested_enum: DIEZ
s_nested_enum: UNO
`,
}, {
desc: "proto3 enum set to numeric values",
input: &pb3.Enums{
SEnum: 2,
SNestedEnum: 1,
SNestedEnum: 2,
},
want: `s_enum: TWO
s_nested_enum: UNO
s_nested_enum: DOS
`,
}, {
desc: "proto3 enum set to unnamed numeric values",
@ -339,27 +326,25 @@ OptGroup: {}
}
`,
}, {
desc: "proto2 group fields",
desc: "proto2 groups",
input: &pb2.Nests{
Optgroup: &pb2.Nests_OptGroup{
OptBool: scalar.Bool(true),
OptString: scalar.String("inside a group"),
OptNested: &pb2.Nested{
OptString: scalar.String("nested message inside a group"),
},
Optnestedgroup: &pb2.Nests_OptGroup_OptNestedGroup{
OptEnum: pb2.Enum_TENTH.Enum(),
OptFixed32: scalar.Uint32(47),
},
},
},
want: `OptGroup: {
opt_bool: true
opt_string: "inside a group"
opt_nested: {
opt_string: "nested message inside a group"
}
OptNestedGroup: {
opt_enum: TENTH
opt_fixed32: 47
}
}
`,
@ -367,6 +352,12 @@ OptGroup: {}
desc: "proto3 nested message not set",
input: &pb3.Nests{},
want: "\n",
}, {
desc: "proto3 nested message set to empty",
input: &pb3.Nests{
SNested: &pb3.Nested{},
},
want: "s_nested: {}\n",
}, {
desc: "proto3 nested message",
input: &pb3.Nests{
@ -385,50 +376,61 @@ OptGroup: {}
}
`,
}, {
desc: "oneof fields",
input: &pb2.Oneofs{},
desc: "oneof not set",
input: &pb3.Oneofs{},
want: "\n",
}, {
desc: "oneof field set to empty string",
input: &pb2.Oneofs{
Union: &pb2.Oneofs_Str{},
desc: "oneof set to empty string",
input: &pb3.Oneofs{
Union: &pb3.Oneofs_OneofString{},
},
want: "str: \"\"\n",
want: `oneof_string: ""
`,
}, {
desc: "oneof field set to string",
input: &pb2.Oneofs{
Union: &pb2.Oneofs_Str{
Str: "hello",
desc: "oneof set to string",
input: &pb3.Oneofs{
Union: &pb3.Oneofs_OneofString{
OneofString: "hello",
},
},
want: "str: \"hello\"\n",
want: `oneof_string: "hello"
`,
}, {
desc: "oneof field set to empty message",
input: &pb2.Oneofs{
Union: &pb2.Oneofs_Msg{
Msg: &pb2.Nested{},
desc: "oneof set to enum",
input: &pb3.Oneofs{
Union: &pb3.Oneofs_OneofEnum{
OneofEnum: pb3.Enum_ZERO,
},
},
want: "msg: {}\n",
want: `oneof_enum: ZERO
`,
}, {
desc: "oneof field set to message",
input: &pb2.Oneofs{
Union: &pb2.Oneofs_Msg{
Msg: &pb2.Nested{
OptString: scalar.String("nested message"),
desc: "oneof set to empty message",
input: &pb3.Oneofs{
Union: &pb3.Oneofs_OneofNested{
OneofNested: &pb3.Nested{},
},
},
want: "oneof_nested: {}\n",
}, {
desc: "oneof set to message",
input: &pb3.Oneofs{
Union: &pb3.Oneofs_OneofNested{
OneofNested: &pb3.Nested{
SString: "nested message",
},
},
},
want: `msg: {
opt_string: "nested message"
want: `oneof_nested: {
s_string: "nested message"
}
`,
}, {
desc: "repeated not set",
desc: "repeated fields not set",
input: &pb2.Repeats{},
want: "\n",
}, {
desc: "repeated set to empty slices",
desc: "repeated fields set to empty slices",
input: &pb2.Repeats{
RptBool: []bool{},
RptInt32: []int32{},
@ -441,7 +443,7 @@ OptGroup: {}
},
want: "\n",
}, {
desc: "repeated set to some values",
desc: "repeated fields set to some values",
input: &pb2.Repeats{
RptBool: []bool{true, false, true, true},
RptInt32: []int32{1, 6, 0, 0},
@ -483,28 +485,28 @@ rpt_bytes: "hello"
rpt_bytes: "世界"
`,
}, {
desc: "repeated enum",
desc: "repeated enums",
input: &pb2.Enums{
RptEnum: []pb2.Enum{pb2.Enum_FIRST, 2, pb2.Enum_TENTH, 42},
RptEnum: []pb2.Enum{pb2.Enum_ONE, 2, pb2.Enum_TEN, 42},
RptNestedEnum: []pb2.Enums_NestedEnum{2, 47, 10},
},
want: `rpt_enum: FIRST
rpt_enum: SECOND
rpt_enum: TENTH
want: `rpt_enum: ONE
rpt_enum: TWO
rpt_enum: TEN
rpt_enum: 42
rpt_nested_enum: DOS
rpt_nested_enum: 47
rpt_nested_enum: DIEZ
`,
}, {
desc: "repeated nested message set to empty",
desc: "repeated messages set to empty",
input: &pb2.Nests{
RptNested: []*pb2.Nested{},
Rptgroup: []*pb2.Nests_RptGroup{},
},
want: "\n",
}, {
desc: "repeated nested messages",
desc: "repeated messages",
input: &pb2.Nests{
RptNested: []*pb2.Nested{
{
@ -531,7 +533,7 @@ rpt_nested: {
rpt_nested: {}
`,
}, {
desc: "repeated nested messages contains nil value",
desc: "repeated messages contains nil value",
input: &pb2.Nests{
RptNested: []*pb2.Nested{nil, {}},
},
@ -539,48 +541,45 @@ rpt_nested: {}
rpt_nested: {}
`,
}, {
desc: "repeated group fields",
desc: "repeated groups",
input: &pb2.Nests{
Rptgroup: []*pb2.Nests_RptGroup{
{
RptBool: []bool{true, false},
RptString: []string{"hello", "world"},
},
{},
nil,
},
},
want: `RptGroup: {
rpt_bool: true
rpt_bool: false
rpt_string: "hello"
rpt_string: "world"
}
RptGroup: {}
RptGroup: {}
`,
}, {
desc: "map fields empty",
input: &pb2.Maps{},
desc: "map fields not set",
input: &pb3.Maps{},
want: "\n",
}, {
desc: "map fields set to empty maps",
input: &pb2.Maps{
Int32ToStr: map[int32]string{},
Sfixed64ToBool: map[int64]bool{},
BoolToUint32: map[bool]uint32{},
Uint64ToEnum: map[uint64]pb2.Enum{},
StrToNested: map[string]*pb2.Nested{},
StrToOneofs: map[string]*pb2.Oneofs{},
desc: "map fields set to empty",
input: &pb3.Maps{
Int32ToStr: map[int32]string{},
BoolToUint32: map[bool]uint32{},
Uint64ToEnum: map[uint64]pb3.Enum{},
StrToNested: map[string]*pb3.Nested{},
StrToOneofs: map[string]*pb3.Oneofs{},
},
want: "\n",
}, {
desc: "map fields 1",
input: &pb2.Maps{
input: &pb3.Maps{
Int32ToStr: map[int32]string{
-101: "-101",
0xff: "0xff",
0: "zero",
},
Sfixed64ToBool: map[int64]bool{
0xcafe: true,
0: false,
},
BoolToUint32: map[bool]uint32{
true: 42,
false: 101,
@ -598,14 +597,6 @@ int32_to_str: {
key: 255
value: "0xff"
}
sfixed64_to_bool: {
key: 0
value: false
}
sfixed64_to_bool: {
key: 51966
value: true
}
bool_to_uint32: {
key: false
value: 101
@ -617,55 +608,60 @@ bool_to_uint32: {
`,
}, {
desc: "map fields 2",
input: &pb2.Maps{
Uint64ToEnum: map[uint64]pb2.Enum{
1: pb2.Enum_FIRST,
2: pb2.Enum_SECOND,
10: pb2.Enum_TENTH,
input: &pb3.Maps{
Uint64ToEnum: map[uint64]pb3.Enum{
1: pb3.Enum_ONE,
2: pb3.Enum_TWO,
10: pb3.Enum_TEN,
47: 47,
},
},
want: `uint64_to_enum: {
key: 1
value: FIRST
value: ONE
}
uint64_to_enum: {
key: 2
value: SECOND
value: TWO
}
uint64_to_enum: {
key: 10
value: TENTH
value: TEN
}
uint64_to_enum: {
key: 47
value: 47
}
`,
}, {
desc: "map fields 3",
input: &pb2.Maps{
StrToNested: map[string]*pb2.Nested{
"nested_one": &pb2.Nested{
OptString: scalar.String("nested in a map"),
input: &pb3.Maps{
StrToNested: map[string]*pb3.Nested{
"nested": &pb3.Nested{
SString: "nested in a map",
},
},
},
want: `str_to_nested: {
key: "nested_one"
key: "nested"
value: {
opt_string: "nested in a map"
s_string: "nested in a map"
}
}
`,
}, {
desc: "map fields 4",
input: &pb2.Maps{
StrToOneofs: map[string]*pb2.Oneofs{
"string": &pb2.Oneofs{
Union: &pb2.Oneofs_Str{
Str: "hello",
input: &pb3.Maps{
StrToOneofs: map[string]*pb3.Oneofs{
"string": &pb3.Oneofs{
Union: &pb3.Oneofs_OneofString{
OneofString: "hello",
},
},
"nested": &pb2.Oneofs{
Union: &pb2.Oneofs_Msg{
Msg: &pb2.Nested{
OptString: scalar.String("nested oneof in map field value"),
"nested": &pb3.Oneofs{
Union: &pb3.Oneofs_OneofNested{
OneofNested: &pb3.Nested{
SString: "nested oneof in map field value",
},
},
},
@ -674,22 +670,22 @@ uint64_to_enum: {
want: `str_to_oneofs: {
key: "nested"
value: {
msg: {
opt_string: "nested oneof in map field value"
oneof_nested: {
s_string: "nested oneof in map field value"
}
}
}
str_to_oneofs: {
key: "string"
value: {
str: "hello"
oneof_string: "hello"
}
}
`,
}, {
desc: "map field nil message value",
input: &pb2.Maps{
StrToNested: map[string]*pb2.Nested{
desc: "map field contains nil value",
input: &pb3.Maps{
StrToNested: map[string]*pb3.Nested{
"nil": nil,
},
},
@ -707,45 +703,33 @@ str_to_oneofs: {
desc: "proto2 required fields partially set",
input: &pb2.Requireds{
ReqBool: scalar.Bool(false),
ReqFixed32: scalar.Uint32(47),
ReqSfixed64: scalar.Int64(0xbeefcafe),
ReqDouble: scalar.Float64(math.NaN()),
ReqString: scalar.String("hello"),
ReqEnum: pb2.Enum_FIRST.Enum(),
ReqEnum: pb2.Enum_ONE.Enum(),
},
want: `req_bool: false
req_fixed32: 47
req_sfixed64: 3203386110
req_double: nan
req_string: "hello"
req_enum: FIRST
req_enum: ONE
`,
wantErr: true,
}, {
desc: "proto2 required fields all set",
input: &pb2.Requireds{
ReqBool: scalar.Bool(false),
ReqFixed32: scalar.Uint32(0),
ReqFixed64: scalar.Uint64(0),
ReqSfixed32: scalar.Int32(0),
ReqSfixed64: scalar.Int64(0),
ReqFloat: scalar.Float32(0),
ReqDouble: scalar.Float64(0),
ReqDouble: scalar.Float64(1.23),
ReqString: scalar.String(""),
ReqEnum: pb2.Enum_UNKNOWN.Enum(),
ReqBytes: []byte{},
ReqEnum: pb2.Enum_ONE.Enum(),
ReqNested: &pb2.Nested{},
},
want: `req_bool: false
req_fixed32: 0
req_fixed64: 0
req_sfixed32: 0
req_sfixed64: 0
req_float: 0
req_double: 0
req_double: 1.23
req_string: ""
req_bytes: ""
req_enum: UNKNOWN
req_enum: ONE
req_nested: {}
`,
}, {
@ -789,6 +773,15 @@ req_nested: {}
}
`,
wantErr: true,
}, {
desc: "indirect required field in oneof",
input: &pb2.IndirectRequired{
Union: &pb2.IndirectRequired_OneofNested{
OneofNested: &pb2.NestedWithRequired{},
},
},
want: "oneof_nested: {}\n",
wantErr: true,
}, {
desc: "unknown varint and fixed types",
input: &pb2.Scalars{
@ -861,7 +854,7 @@ req_nested: {}
}
setExtension(m, pb2.E_OptExtBool, true)
setExtension(m, pb2.E_OptExtString, "extension field")
setExtension(m, pb2.E_OptExtEnum, pb2.Enum_TENTH)
setExtension(m, pb2.E_OptExtEnum, pb2.Enum_TEN)
setExtension(m, pb2.E_OptExtNested, &pb2.Nested{
OptString: scalar.String("nested in an extension"),
OptNested: &pb2.Nested{
@ -874,7 +867,7 @@ req_nested: {}
opt_bool: true
opt_int32: 42
[pb2.opt_ext_bool]: true
[pb2.opt_ext_enum]: TENTH
[pb2.opt_ext_enum]: TEN
[pb2.opt_ext_nested]: {
opt_string: "nested in an extension"
opt_nested: {
@ -884,7 +877,7 @@ opt_int32: 42
[pb2.opt_ext_string]: "extension field"
`,
}, {
desc: "registered extension but not set",
desc: "extension message field set to nil",
input: func() proto.Message {
m := &pb2.Extensions{}
setExtension(m, pb2.E_OptExtNested, nil)
@ -895,7 +888,7 @@ opt_int32: 42
desc: "extensions of repeated fields",
input: func() proto.Message {
m := &pb2.Extensions{}
setExtension(m, pb2.E_RptExtEnum, &[]pb2.Enum{pb2.Enum_TENTH, 101, pb2.Enum_FIRST})
setExtension(m, pb2.E_RptExtEnum, &[]pb2.Enum{pb2.Enum_TEN, 101, pb2.Enum_ONE})
setExtension(m, pb2.E_RptExtFixed32, &[]uint32{42, 47})
setExtension(m, pb2.E_RptExtNested, &[]*pb2.Nested{
&pb2.Nested{OptString: scalar.String("one")},
@ -904,9 +897,9 @@ opt_int32: 42
})
return m
}(),
want: `[pb2.rpt_ext_enum]: TENTH
want: `[pb2.rpt_ext_enum]: TEN
[pb2.rpt_ext_enum]: 101
[pb2.rpt_ext_enum]: FIRST
[pb2.rpt_ext_enum]: ONE
[pb2.rpt_ext_fixed32]: 42
[pb2.rpt_ext_fixed32]: 47
[pb2.rpt_ext_nested]: {
@ -925,7 +918,7 @@ opt_int32: 42
m := &pb2.Extensions{}
setExtension(m, pb2.E_ExtensionsContainer_OptExtBool, true)
setExtension(m, pb2.E_ExtensionsContainer_OptExtString, "extension field")
setExtension(m, pb2.E_ExtensionsContainer_OptExtEnum, pb2.Enum_TENTH)
setExtension(m, pb2.E_ExtensionsContainer_OptExtEnum, pb2.Enum_TEN)
setExtension(m, pb2.E_ExtensionsContainer_OptExtNested, &pb2.Nested{
OptString: scalar.String("nested in an extension"),
OptNested: &pb2.Nested{
@ -935,7 +928,7 @@ opt_int32: 42
return m
}(),
want: `[pb2.ExtensionsContainer.opt_ext_bool]: true
[pb2.ExtensionsContainer.opt_ext_enum]: TENTH
[pb2.ExtensionsContainer.opt_ext_enum]: TEN
[pb2.ExtensionsContainer.opt_ext_nested]: {
opt_string: "nested in an extension"
opt_nested: {
@ -952,7 +945,7 @@ opt_int32: 42
OptBool: scalar.Bool(true),
OptInt32: scalar.Int32(42),
}
setExtension(m, pb2.E_ExtensionsContainer_RptExtEnum, &[]pb2.Enum{pb2.Enum_TENTH, 101, pb2.Enum_FIRST})
setExtension(m, pb2.E_ExtensionsContainer_RptExtEnum, &[]pb2.Enum{pb2.Enum_TEN, 101, pb2.Enum_ONE})
setExtension(m, pb2.E_ExtensionsContainer_RptExtString, &[]string{"hello", "world"})
setExtension(m, pb2.E_ExtensionsContainer_RptExtNested, &[]*pb2.Nested{
&pb2.Nested{OptString: scalar.String("one")},
@ -964,9 +957,9 @@ opt_int32: 42
want: `opt_string: "non-extension field"
opt_bool: true
opt_int32: 42
[pb2.ExtensionsContainer.rpt_ext_enum]: TENTH
[pb2.ExtensionsContainer.rpt_ext_enum]: TEN
[pb2.ExtensionsContainer.rpt_ext_enum]: 101
[pb2.ExtensionsContainer.rpt_ext_enum]: FIRST
[pb2.ExtensionsContainer.rpt_ext_enum]: ONE
[pb2.ExtensionsContainer.rpt_ext_nested]: {
opt_string: "one"
}
@ -1031,7 +1024,7 @@ opt_int32: 42
}
`,
}, {
desc: "Any message not expanded",
desc: "Any not expanded",
mo: textpb.MarshalOptions{
Resolver: preg.NewTypes(),
},
@ -1047,7 +1040,7 @@ opt_int32: 42
if err != nil {
t.Fatalf("error in binary marshaling message for Any.value: %v", err)
}
return wrapAnyPB(&anypb.Any{
return wrapV1Message(&anypb.Any{
TypeUrl: "pb2.Nested",
Value: b,
})
@ -1056,7 +1049,7 @@ opt_int32: 42
value: "\n\x13embedded inside Any\x12\x0b\n\tinception"
`,
}, {
desc: "Any message expanded",
desc: "Any expanded",
mo: textpb.MarshalOptions{
Resolver: preg.NewTypes((&pb2.Nested{}).ProtoReflect().Type()),
},
@ -1072,7 +1065,7 @@ value: "\n\x13embedded inside Any\x12\x0b\n\tinception"
if err != nil {
t.Fatalf("error in binary marshaling message for Any.value: %v", err)
}
return wrapAnyPB(&anypb.Any{
return wrapV1Message(&anypb.Any{
TypeUrl: "foo/pb2.Nested",
Value: b,
})
@ -1085,7 +1078,7 @@ value: "\n\x13embedded inside Any\x12\x0b\n\tinception"
}
`,
}, {
desc: "Any message expanded with missing required error",
desc: "Any expanded with missing required error",
mo: textpb.MarshalOptions{
Resolver: preg.NewTypes((&pb2.PartialRequired{}).ProtoReflect().Type()),
},
@ -1099,7 +1092,7 @@ value: "\n\x13embedded inside Any\x12\x0b\n\tinception"
if _, ok := err.(*protoV1.RequiredNotSetError); !ok {
t.Fatalf("error in binary marshaling message for Any.value: %v", err)
}
return wrapAnyPB(&anypb.Any{
return wrapV1Message(&anypb.Any{
TypeUrl: string(m.ProtoReflect().Type().FullName()),
Value: b,
})
@ -1110,11 +1103,11 @@ value: "\n\x13embedded inside Any\x12\x0b\n\tinception"
`,
wantErr: true,
}, {
desc: "Any message with invalid value",
desc: "Any with invalid value",
mo: textpb.MarshalOptions{
Resolver: preg.NewTypes((&pb2.Nested{}).ProtoReflect().Type()),
},
input: wrapAnyPB(&anypb.Any{
input: wrapV1Message(&anypb.Any{
TypeUrl: "foo/pb2.Nested",
Value: dhex("80"),
}),

View File

@ -5,15 +5,14 @@ import (
protoV1 "github.com/golang/protobuf/proto"
"github.com/golang/protobuf/v2/encoding/textpb"
"github.com/golang/protobuf/v2/encoding/textpb/testprotos/pb2"
"github.com/golang/protobuf/v2/internal/impl"
"github.com/golang/protobuf/v2/internal/scalar"
"github.com/golang/protobuf/v2/proto"
preg "github.com/golang/protobuf/v2/reflect/protoregistry"
// The legacy package must be imported prior to use of any legacy messages.
// TODO: Remove this when protoV1 registers these hooks for you.
"github.com/golang/protobuf/v2/internal/impl"
_ "github.com/golang/protobuf/v2/internal/legacy"
"github.com/golang/protobuf/v2/internal/scalar"
anypb "github.com/golang/protobuf/ptypes/any"
durpb "github.com/golang/protobuf/ptypes/duration"
@ -21,6 +20,7 @@ import (
stpb "github.com/golang/protobuf/ptypes/struct"
tspb "github.com/golang/protobuf/ptypes/timestamp"
wpb "github.com/golang/protobuf/ptypes/wrappers"
"github.com/golang/protobuf/v2/encoding/testprotos/pb2"
)
func TestRoundTrip(t *testing.T) {

View File

@ -1,510 +0,0 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: encoding/textpb/testprotos/pb3/test.proto
package pb3
import (
bytes "bytes"
gzip "compress/gzip"
proto "github.com/golang/protobuf/proto"
protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
reflect "reflect"
)
// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
type Enum int32
const (
Enum_ZERO Enum = 0
Enum_ONE Enum = 1
Enum_TWO Enum = 2
Enum_TEN Enum = 10
)
func (e Enum) Type() protoreflect.EnumType {
return xxx_Test_protoFile_enumTypes[0]
}
func (e Enum) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(e)
}
var Enum_name = map[int32]string{
0: "ZERO",
1: "ONE",
2: "TWO",
10: "TEN",
}
var Enum_value = map[string]int32{
"ZERO": 0,
"ONE": 1,
"TWO": 2,
"TEN": 10,
}
func (x Enum) String() string {
return proto.EnumName(Enum_name, int32(x))
}
func (Enum) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_0854715c5b41c422_gzipped, []int{0}
}
type Enums_NestedEnum int32
const (
Enums_CERO Enums_NestedEnum = 0
Enums_UNO Enums_NestedEnum = 1
Enums_DOS Enums_NestedEnum = 2
Enums_DIEZ Enums_NestedEnum = 10
)
func (e Enums_NestedEnum) Type() protoreflect.EnumType {
return xxx_Test_protoFile_enumTypes[1]
}
func (e Enums_NestedEnum) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(e)
}
var Enums_NestedEnum_name = map[int32]string{
0: "CERO",
1: "UNO",
2: "DOS",
10: "DIEZ",
}
var Enums_NestedEnum_value = map[string]int32{
"CERO": 0,
"UNO": 1,
"DOS": 2,
"DIEZ": 10,
}
func (x Enums_NestedEnum) String() string {
return proto.EnumName(Enums_NestedEnum_name, int32(x))
}
func (Enums_NestedEnum) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_0854715c5b41c422_gzipped, []int{1, 0}
}
// Scalars contains scalar field types.
type Scalars struct {
SBool bool `protobuf:"varint,1,opt,name=s_bool,json=sBool,proto3" json:"s_bool,omitempty"`
SInt32 int32 `protobuf:"varint,2,opt,name=s_int32,json=sInt32,proto3" json:"s_int32,omitempty"`
SInt64 int64 `protobuf:"varint,3,opt,name=s_int64,json=sInt64,proto3" json:"s_int64,omitempty"`
SUint32 uint32 `protobuf:"varint,4,opt,name=s_uint32,json=sUint32,proto3" json:"s_uint32,omitempty"`
SUint64 uint64 `protobuf:"varint,5,opt,name=s_uint64,json=sUint64,proto3" json:"s_uint64,omitempty"`
SSint32 int32 `protobuf:"zigzag32,6,opt,name=s_sint32,json=sSint32,proto3" json:"s_sint32,omitempty"`
SSint64 int64 `protobuf:"zigzag64,7,opt,name=s_sint64,json=sSint64,proto3" json:"s_sint64,omitempty"`
SFixed32 uint32 `protobuf:"fixed32,8,opt,name=s_fixed32,json=sFixed32,proto3" json:"s_fixed32,omitempty"`
SFixed64 uint64 `protobuf:"fixed64,9,opt,name=s_fixed64,json=sFixed64,proto3" json:"s_fixed64,omitempty"`
SSfixed32 int32 `protobuf:"fixed32,10,opt,name=s_sfixed32,json=sSfixed32,proto3" json:"s_sfixed32,omitempty"`
SSfixed64 int64 `protobuf:"fixed64,11,opt,name=s_sfixed64,json=sSfixed64,proto3" json:"s_sfixed64,omitempty"`
SFloat float32 `protobuf:"fixed32,20,opt,name=s_float,json=sFloat,proto3" json:"s_float,omitempty"`
SDouble float64 `protobuf:"fixed64,21,opt,name=s_double,json=sDouble,proto3" json:"s_double,omitempty"`
SBytes []byte `protobuf:"bytes,14,opt,name=s_bytes,json=sBytes,proto3" json:"s_bytes,omitempty"`
SString string `protobuf:"bytes,13,opt,name=s_string,json=sString,proto3" json:"s_string,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Scalars) ProtoReflect() protoreflect.Message {
return xxx_Test_protoFile_messageTypes[0].MessageOf(m)
}
func (m *Scalars) Reset() { *m = Scalars{} }
func (m *Scalars) String() string { return proto.CompactTextString(m) }
func (*Scalars) ProtoMessage() {}
func (*Scalars) Descriptor() ([]byte, []int) {
return fileDescriptor_0854715c5b41c422_gzipped, []int{0}
}
func (m *Scalars) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Scalars.Unmarshal(m, b)
}
func (m *Scalars) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Scalars.Marshal(b, m, deterministic)
}
func (m *Scalars) XXX_Merge(src proto.Message) {
xxx_messageInfo_Scalars.Merge(m, src)
}
func (m *Scalars) XXX_Size() int {
return xxx_messageInfo_Scalars.Size(m)
}
func (m *Scalars) XXX_DiscardUnknown() {
xxx_messageInfo_Scalars.DiscardUnknown(m)
}
var xxx_messageInfo_Scalars proto.InternalMessageInfo
func (m *Scalars) GetSBool() bool {
if m != nil {
return m.SBool
}
return false
}
func (m *Scalars) GetSInt32() int32 {
if m != nil {
return m.SInt32
}
return 0
}
func (m *Scalars) GetSInt64() int64 {
if m != nil {
return m.SInt64
}
return 0
}
func (m *Scalars) GetSUint32() uint32 {
if m != nil {
return m.SUint32
}
return 0
}
func (m *Scalars) GetSUint64() uint64 {
if m != nil {
return m.SUint64
}
return 0
}
func (m *Scalars) GetSSint32() int32 {
if m != nil {
return m.SSint32
}
return 0
}
func (m *Scalars) GetSSint64() int64 {
if m != nil {
return m.SSint64
}
return 0
}
func (m *Scalars) GetSFixed32() uint32 {
if m != nil {
return m.SFixed32
}
return 0
}
func (m *Scalars) GetSFixed64() uint64 {
if m != nil {
return m.SFixed64
}
return 0
}
func (m *Scalars) GetSSfixed32() int32 {
if m != nil {
return m.SSfixed32
}
return 0
}
func (m *Scalars) GetSSfixed64() int64 {
if m != nil {
return m.SSfixed64
}
return 0
}
func (m *Scalars) GetSFloat() float32 {
if m != nil {
return m.SFloat
}
return 0
}
func (m *Scalars) GetSDouble() float64 {
if m != nil {
return m.SDouble
}
return 0
}
func (m *Scalars) GetSBytes() []byte {
if m != nil {
return m.SBytes
}
return nil
}
func (m *Scalars) GetSString() string {
if m != nil {
return m.SString
}
return ""
}
// Message contains enum fields.
type Enums struct {
SEnum Enum `protobuf:"varint,1,opt,name=s_enum,json=sEnum,proto3,enum=pb3.Enum" json:"s_enum,omitempty"`
SNestedEnum Enums_NestedEnum `protobuf:"varint,3,opt,name=s_nested_enum,json=sNestedEnum,proto3,enum=pb3.Enums_NestedEnum" json:"s_nested_enum,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Enums) ProtoReflect() protoreflect.Message {
return xxx_Test_protoFile_messageTypes[1].MessageOf(m)
}
func (m *Enums) Reset() { *m = Enums{} }
func (m *Enums) String() string { return proto.CompactTextString(m) }
func (*Enums) ProtoMessage() {}
func (*Enums) Descriptor() ([]byte, []int) {
return fileDescriptor_0854715c5b41c422_gzipped, []int{1}
}
func (m *Enums) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Enums.Unmarshal(m, b)
}
func (m *Enums) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Enums.Marshal(b, m, deterministic)
}
func (m *Enums) XXX_Merge(src proto.Message) {
xxx_messageInfo_Enums.Merge(m, src)
}
func (m *Enums) XXX_Size() int {
return xxx_messageInfo_Enums.Size(m)
}
func (m *Enums) XXX_DiscardUnknown() {
xxx_messageInfo_Enums.DiscardUnknown(m)
}
var xxx_messageInfo_Enums proto.InternalMessageInfo
func (m *Enums) GetSEnum() Enum {
if m != nil {
return m.SEnum
}
return Enum_ZERO
}
func (m *Enums) GetSNestedEnum() Enums_NestedEnum {
if m != nil {
return m.SNestedEnum
}
return Enums_CERO
}
// Message contains nested message field.
type Nests struct {
SNested *Nested `protobuf:"bytes,1,opt,name=s_nested,json=sNested,proto3" json:"s_nested,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Nests) ProtoReflect() protoreflect.Message {
return xxx_Test_protoFile_messageTypes[2].MessageOf(m)
}
func (m *Nests) Reset() { *m = Nests{} }
func (m *Nests) String() string { return proto.CompactTextString(m) }
func (*Nests) ProtoMessage() {}
func (*Nests) Descriptor() ([]byte, []int) {
return fileDescriptor_0854715c5b41c422_gzipped, []int{2}
}
func (m *Nests) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Nests.Unmarshal(m, b)
}
func (m *Nests) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Nests.Marshal(b, m, deterministic)
}
func (m *Nests) XXX_Merge(src proto.Message) {
xxx_messageInfo_Nests.Merge(m, src)
}
func (m *Nests) XXX_Size() int {
return xxx_messageInfo_Nests.Size(m)
}
func (m *Nests) XXX_DiscardUnknown() {
xxx_messageInfo_Nests.DiscardUnknown(m)
}
var xxx_messageInfo_Nests proto.InternalMessageInfo
func (m *Nests) GetSNested() *Nested {
if m != nil {
return m.SNested
}
return nil
}
// Message type used as submessage.
type Nested struct {
SString string `protobuf:"bytes,1,opt,name=s_string,json=sString,proto3" json:"s_string,omitempty"`
SNested *Nested `protobuf:"bytes,2,opt,name=s_nested,json=sNested,proto3" json:"s_nested,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Nested) ProtoReflect() protoreflect.Message {
return xxx_Test_protoFile_messageTypes[3].MessageOf(m)
}
func (m *Nested) Reset() { *m = Nested{} }
func (m *Nested) String() string { return proto.CompactTextString(m) }
func (*Nested) ProtoMessage() {}
func (*Nested) Descriptor() ([]byte, []int) {
return fileDescriptor_0854715c5b41c422_gzipped, []int{3}
}
func (m *Nested) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Nested.Unmarshal(m, b)
}
func (m *Nested) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Nested.Marshal(b, m, deterministic)
}
func (m *Nested) XXX_Merge(src proto.Message) {
xxx_messageInfo_Nested.Merge(m, src)
}
func (m *Nested) XXX_Size() int {
return xxx_messageInfo_Nested.Size(m)
}
func (m *Nested) XXX_DiscardUnknown() {
xxx_messageInfo_Nested.DiscardUnknown(m)
}
var xxx_messageInfo_Nested proto.InternalMessageInfo
func (m *Nested) GetSString() string {
if m != nil {
return m.SString
}
return ""
}
func (m *Nested) GetSNested() *Nested {
if m != nil {
return m.SNested
}
return nil
}
func init() {
proto.RegisterFile("encoding/textpb/testprotos/pb3/test.proto", fileDescriptor_0854715c5b41c422_gzipped)
proto.RegisterEnum("pb3.Enum", Enum_name, Enum_value)
proto.RegisterEnum("pb3.Enums_NestedEnum", Enums_NestedEnum_name, Enums_NestedEnum_value)
proto.RegisterType((*Scalars)(nil), "pb3.Scalars")
proto.RegisterType((*Enums)(nil), "pb3.Enums")
proto.RegisterType((*Nests)(nil), "pb3.Nests")
proto.RegisterType((*Nested)(nil), "pb3.Nested")
}
var fileDescriptor_0854715c5b41c422 = []byte{
// 863 bytes of the wire-encoded FileDescriptorProto
0x0a, 0x29, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x74, 0x65, 0x78, 0x74, 0x70,
0x62, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x70, 0x62, 0x33,
0x2f, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x03, 0x70, 0x62, 0x33,
0x22, 0x9e, 0x03, 0x0a, 0x07, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x73, 0x12, 0x15, 0x0a, 0x06,
0x73, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x73, 0x42,
0x6f, 0x6f, 0x6c, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x02,
0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x17, 0x0a, 0x07,
0x73, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x73,
0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33,
0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x73, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32,
0x12, 0x19, 0x0a, 0x08, 0x73, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x05, 0x20, 0x01,
0x28, 0x04, 0x52, 0x07, 0x73, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x19, 0x0a, 0x08, 0x73,
0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x06, 0x20, 0x01, 0x28, 0x11, 0x52, 0x07, 0x73,
0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x5f, 0x73, 0x69, 0x6e, 0x74,
0x36, 0x34, 0x18, 0x07, 0x20, 0x01, 0x28, 0x12, 0x52, 0x07, 0x73, 0x53, 0x69, 0x6e, 0x74, 0x36,
0x34, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x08,
0x20, 0x01, 0x28, 0x07, 0x52, 0x08, 0x73, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x1b,
0x0a, 0x09, 0x73, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x09, 0x20, 0x01, 0x28,
0x06, 0x52, 0x08, 0x73, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x1d, 0x0a, 0x0a, 0x73,
0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0f, 0x52,
0x09, 0x73, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x5f,
0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x10, 0x52, 0x09,
0x73, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x5f, 0x66,
0x6c, 0x6f, 0x61, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x73, 0x46, 0x6c, 0x6f,
0x61, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x15,
0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x73, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x17, 0x0a,
0x07, 0x73, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06,
0x73, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x5f, 0x73, 0x74, 0x72, 0x69,
0x6e, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e,
0x67, 0x22, 0x98, 0x01, 0x0a, 0x05, 0x45, 0x6e, 0x75, 0x6d, 0x73, 0x12, 0x20, 0x0a, 0x06, 0x73,
0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x09, 0x2e, 0x70, 0x62,
0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x05, 0x73, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x39, 0x0a,
0x0d, 0x73, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x03,
0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x70, 0x62, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x73,
0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0b, 0x73, 0x4e, 0x65,
0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x22, 0x32, 0x0a, 0x0a, 0x4e, 0x65, 0x73, 0x74,
0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x08, 0x0a, 0x04, 0x43, 0x45, 0x52, 0x4f, 0x10, 0x00,
0x12, 0x07, 0x0a, 0x03, 0x55, 0x4e, 0x4f, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x44, 0x4f, 0x53,
0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x49, 0x45, 0x5a, 0x10, 0x0a, 0x22, 0x2f, 0x0a, 0x05,
0x4e, 0x65, 0x73, 0x74, 0x73, 0x12, 0x26, 0x0a, 0x08, 0x73, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65,
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x33, 0x2e, 0x4e, 0x65,
0x73, 0x74, 0x65, 0x64, 0x52, 0x07, 0x73, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x22, 0x4b, 0x0a,
0x06, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x5f, 0x73, 0x74, 0x72,
0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x53, 0x74, 0x72, 0x69,
0x6e, 0x67, 0x12, 0x26, 0x0a, 0x08, 0x73, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x02,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x33, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65,
0x64, 0x52, 0x07, 0x73, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x2a, 0x2b, 0x0a, 0x04, 0x45, 0x6e,
0x75, 0x6d, 0x12, 0x08, 0x0a, 0x04, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03,
0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x57, 0x4f, 0x10, 0x02, 0x12, 0x07,
0x0a, 0x03, 0x54, 0x45, 0x4e, 0x10, 0x0a, 0x42, 0x3e, 0x5a, 0x3c, 0x67, 0x69, 0x74, 0x68, 0x75,
0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2f, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x76, 0x32, 0x2f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e,
0x67, 0x2f, 0x74, 0x65, 0x78, 0x74, 0x70, 0x62, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x73, 0x2f, 0x70, 0x62, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var fileDescriptor_0854715c5b41c422_gzipped = func() []byte {
bb := new(bytes.Buffer)
zw, _ := gzip.NewWriterLevel(bb, gzip.NoCompression)
zw.Write(fileDescriptor_0854715c5b41c422)
zw.Close()
return bb.Bytes()
}()
const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
var Test_protoFile protoreflect.FileDescriptor
var xxx_Test_protoFile_enumTypes [2]protoreflect.EnumType
var xxx_Test_protoFile_messageTypes [4]protoimpl.MessageType
var xxx_Test_protoFile_goTypes = []interface{}{
(Enum)(0), // 0: pb3.Enum
(Enums_NestedEnum)(0), // 1: pb3.Enums.NestedEnum
(*Scalars)(nil), // 2: pb3.Scalars
(*Enums)(nil), // 3: pb3.Enums
(*Nests)(nil), // 4: pb3.Nests
(*Nested)(nil), // 5: pb3.Nested
}
var xxx_Test_protoFile_depIdxs = []int32{
0, // pb3.Enums.s_enum:type_name -> pb3.Enum
1, // pb3.Enums.s_nested_enum:type_name -> pb3.Enums.NestedEnum
5, // pb3.Nests.s_nested:type_name -> pb3.Nested
5, // pb3.Nested.s_nested:type_name -> pb3.Nested
}
func init() {
var messageTypes [4]protoreflect.MessageType
Test_protoFile = protoimpl.FileBuilder{
RawDescriptor: fileDescriptor_0854715c5b41c422,
GoTypes: xxx_Test_protoFile_goTypes,
DependencyIndexes: xxx_Test_protoFile_depIdxs,
EnumOutputTypes: xxx_Test_protoFile_enumTypes[:],
MessageOutputTypes: messageTypes[:],
}.Init()
messageGoTypes := xxx_Test_protoFile_goTypes[2:][:4]
for i, mt := range messageTypes[:] {
xxx_Test_protoFile_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
xxx_Test_protoFile_messageTypes[i].PBType = mt
}
xxx_Test_protoFile_goTypes = nil
xxx_Test_protoFile_depIdxs = nil
}

View File

@ -59,9 +59,9 @@ PROTOC_GEN_GO_ENABLE_REFLECT=1 protoc -I$tmpdir/src \
$tmpdir/src/google/protobuf/compiler/plugin.proto
cp $tmpdir/src/google/protobuf/compiler/plugin.pb.go ./types/plugin/plugin.pb.go
echo "# encoding/textpb/testprotos/pb?/test.proto"
echo "# encoding/testprotos/pb?/test.proto"
PROTOC_GEN_GO_ENABLE_REFLECT=1 protoc --go_out=paths=source_relative:. \
encoding/textpb/testprotos/pb?/test.proto
encoding/testprotos/pb?/test.proto
echo "# reflect/protoregistry/testprotos/test.proto"
PROTOC_GEN_GO_ENABLE_REFLECT=1 protoc --go_out=paths=source_relative:. \