mirror of
https://github.com/protocolbuffers/protobuf-go.git
synced 2024-12-28 18:25:46 +00:00
111 lines
3.4 KiB
Go
111 lines
3.4 KiB
Go
|
// Copyright 2018 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.
|
||
|
|
||
|
package protodesc
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
|
||
|
"github.com/google/go-cmp/cmp"
|
||
|
"google.golang.org/protobuf/internal/filedesc"
|
||
|
"google.golang.org/protobuf/proto"
|
||
|
"google.golang.org/protobuf/reflect/protoreflect"
|
||
|
"google.golang.org/protobuf/testing/protocmp"
|
||
|
"google.golang.org/protobuf/types/descriptorpb"
|
||
|
)
|
||
|
|
||
|
func TestEditionsRequired(t *testing.T) {
|
||
|
fd := new(filedesc.Field)
|
||
|
fd.L0.ParentFile = filedesc.SurrogateEdition2023
|
||
|
fd.L0.FullName = "foo_field"
|
||
|
fd.L1.Number = 1337
|
||
|
fd.L1.Cardinality = protoreflect.Required
|
||
|
fd.L1.Kind = protoreflect.BytesKind
|
||
|
|
||
|
want := &descriptorpb.FieldDescriptorProto{
|
||
|
Name: proto.String("foo_field"),
|
||
|
Number: proto.Int32(1337),
|
||
|
Label: descriptorpb.FieldDescriptorProto_LABEL_OPTIONAL.Enum(),
|
||
|
Type: descriptorpb.FieldDescriptorProto_TYPE_BYTES.Enum(),
|
||
|
}
|
||
|
|
||
|
got := ToFieldDescriptorProto(fd)
|
||
|
if diff := cmp.Diff(want, got, protocmp.Transform()); diff != "" {
|
||
|
t.Errorf("ToFieldDescriptor: unexpected diff (-want +got):\n%s", diff)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestProto2Required(t *testing.T) {
|
||
|
fd := new(filedesc.Field)
|
||
|
fd.L0.ParentFile = filedesc.SurrogateProto2
|
||
|
fd.L0.FullName = "foo_field"
|
||
|
fd.L1.Number = 1337
|
||
|
fd.L1.Cardinality = protoreflect.Required
|
||
|
fd.L1.Kind = protoreflect.BytesKind
|
||
|
|
||
|
want := &descriptorpb.FieldDescriptorProto{
|
||
|
Name: proto.String("foo_field"),
|
||
|
Number: proto.Int32(1337),
|
||
|
Label: descriptorpb.FieldDescriptorProto_LABEL_REQUIRED.Enum(),
|
||
|
Type: descriptorpb.FieldDescriptorProto_TYPE_BYTES.Enum(),
|
||
|
}
|
||
|
|
||
|
got := ToFieldDescriptorProto(fd)
|
||
|
if diff := cmp.Diff(want, got, protocmp.Transform()); diff != "" {
|
||
|
t.Errorf("ToFieldDescriptor: unexpected diff (-want +got):\n%s", diff)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestEditionsDelimited(t *testing.T) {
|
||
|
md := new(filedesc.Message)
|
||
|
md.L0.ParentFile = filedesc.SurrogateEdition2023
|
||
|
md.L0.FullName = "foo_message"
|
||
|
fd := new(filedesc.Field)
|
||
|
fd.L0.ParentFile = filedesc.SurrogateEdition2023
|
||
|
fd.L0.FullName = "foo_field"
|
||
|
fd.L1.Number = 1337
|
||
|
fd.L1.Cardinality = protoreflect.Optional
|
||
|
fd.L1.Kind = protoreflect.GroupKind
|
||
|
fd.L1.Message = md
|
||
|
|
||
|
want := &descriptorpb.FieldDescriptorProto{
|
||
|
Name: proto.String("foo_field"),
|
||
|
Number: proto.Int32(1337),
|
||
|
Label: descriptorpb.FieldDescriptorProto_LABEL_OPTIONAL.Enum(),
|
||
|
Type: descriptorpb.FieldDescriptorProto_TYPE_MESSAGE.Enum(),
|
||
|
TypeName: proto.String(".foo_message"),
|
||
|
}
|
||
|
|
||
|
got := ToFieldDescriptorProto(fd)
|
||
|
if diff := cmp.Diff(want, got, protocmp.Transform()); diff != "" {
|
||
|
t.Errorf("ToFieldDescriptor: unexpected diff (-want +got):\n%s", diff)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestProto2Group(t *testing.T) {
|
||
|
md := new(filedesc.Message)
|
||
|
md.L0.ParentFile = filedesc.SurrogateProto2
|
||
|
md.L0.FullName = "foo_message"
|
||
|
fd := new(filedesc.Field)
|
||
|
fd.L0.ParentFile = filedesc.SurrogateProto2
|
||
|
fd.L0.FullName = "foo_field"
|
||
|
fd.L1.Number = 1337
|
||
|
fd.L1.Cardinality = protoreflect.Optional
|
||
|
fd.L1.Kind = protoreflect.GroupKind
|
||
|
fd.L1.Message = md
|
||
|
|
||
|
want := &descriptorpb.FieldDescriptorProto{
|
||
|
Name: proto.String("foo_field"),
|
||
|
Number: proto.Int32(1337),
|
||
|
Label: descriptorpb.FieldDescriptorProto_LABEL_OPTIONAL.Enum(),
|
||
|
Type: descriptorpb.FieldDescriptorProto_TYPE_GROUP.Enum(),
|
||
|
TypeName: proto.String(".foo_message"),
|
||
|
}
|
||
|
|
||
|
got := ToFieldDescriptorProto(fd)
|
||
|
if diff := cmp.Diff(want, got, protocmp.Transform()); diff != "" {
|
||
|
t.Errorf("ToFieldDescriptor: unexpected diff (-want +got):\n%s", diff)
|
||
|
}
|
||
|
}
|