blob: 35d9f9c4a93d5e56f6a00371302df4fe5663a436 [file] [log] [blame]
Joe Tsai08e00302018-11-26 22:32:06 -08001// Copyright 2018 The Go Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5package legacy
6
7import (
8 "reflect"
9 "testing"
10
11 pragma "github.com/golang/protobuf/v2/internal/pragma"
12 pref "github.com/golang/protobuf/v2/reflect/protoreflect"
13 ptype "github.com/golang/protobuf/v2/reflect/prototype"
14 cmp "github.com/google/go-cmp/cmp"
15
16 proto2_20160225 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto2.v0.0.0-20160225-2fc053c5"
17 proto2_20160519 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto2.v0.0.0-20160519-a4ab9ec5"
18 proto2_20180125 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto2.v1.0.0-20180125-92554152"
19 proto2_20180430 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto2.v1.1.0-20180430-b4deda09"
20 proto2_20180814 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto2.v1.2.0-20180814-aa810b61"
21 proto2_20181126 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto2.v1.2.1-20181126-8d0c54c1"
22 proto3_20160225 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto3.v0.0.0-20160225-2fc053c5"
23 proto3_20160519 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto3.v0.0.0-20160519-a4ab9ec5"
24 proto3_20180125 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto3.v1.0.0-20180125-92554152"
25 proto3_20180430 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto3.v1.1.0-20180430-b4deda09"
26 proto3_20180814 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto3.v1.2.0-20180814-aa810b61"
27 proto3_20181126 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto3.v1.2.1-20181126-8d0c54c1"
28)
29
30func mustLoadFileDesc(b []byte, _ []int) pref.FileDescriptor {
Joe Tsai6dbffb72018-12-04 14:06:19 -080031 fd, err := ptype.NewFileFromDescriptorProto(loadFileDesc(b), nil)
Joe Tsai08e00302018-11-26 22:32:06 -080032 if err != nil {
33 panic(err)
34 }
35 return fd
36}
37
38func TestDescriptor(t *testing.T) {
39 var tests []struct{ got, want pref.Descriptor }
40
41 fileDescP2_20160225 := mustLoadFileDesc(new(proto2_20160225.Message).Descriptor())
42 tests = append(tests, []struct{ got, want pref.Descriptor }{{
Joe Tsai6dbffb72018-12-04 14:06:19 -080043 got: loadEnumDesc(reflect.TypeOf(proto2_20160225.SiblingEnum(0))),
Joe Tsai08e00302018-11-26 22:32:06 -080044 want: fileDescP2_20160225.Enums().ByName("SiblingEnum"),
45 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -080046 got: loadEnumDesc(reflect.TypeOf(proto2_20160225.Message_ChildEnum(0))),
Joe Tsai08e00302018-11-26 22:32:06 -080047 want: fileDescP2_20160225.Messages().ByName("Message").Enums().ByName("ChildEnum"),
48 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -080049 got: loadMessageDesc(reflect.TypeOf(new(proto2_20160225.SiblingMessage))),
Joe Tsai08e00302018-11-26 22:32:06 -080050 want: fileDescP2_20160225.Messages().ByName("SiblingMessage"),
51 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -080052 got: loadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message_ChildMessage))),
Joe Tsai08e00302018-11-26 22:32:06 -080053 want: fileDescP2_20160225.Messages().ByName("Message").Messages().ByName("ChildMessage"),
54 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -080055 got: loadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message))),
Joe Tsai08e00302018-11-26 22:32:06 -080056 want: fileDescP2_20160225.Messages().ByName("Message"),
57 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -080058 got: loadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message_NamedGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -080059 want: fileDescP2_20160225.Messages().ByName("Message").Messages().ByName("NamedGroup"),
60 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -080061 got: loadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message_OptionalGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -080062 want: fileDescP2_20160225.Messages().ByName("Message").Messages().ByName("OptionalGroup"),
63 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -080064 got: loadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message_RequiredGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -080065 want: fileDescP2_20160225.Messages().ByName("Message").Messages().ByName("RequiredGroup"),
66 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -080067 got: loadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message_RepeatedGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -080068 want: fileDescP2_20160225.Messages().ByName("Message").Messages().ByName("RepeatedGroup"),
69 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -080070 got: loadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message_OneofGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -080071 want: fileDescP2_20160225.Messages().ByName("Message").Messages().ByName("OneofGroup"),
72 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -080073 got: loadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message_ExtensionOptionalGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -080074 want: fileDescP2_20160225.Messages().ByName("Message").Messages().ByName("ExtensionOptionalGroup"),
75 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -080076 got: loadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message_ExtensionRepeatedGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -080077 want: fileDescP2_20160225.Messages().ByName("Message").Messages().ByName("ExtensionRepeatedGroup"),
78 }}...)
79
80 fileDescP3_20160225 := mustLoadFileDesc(new(proto3_20160225.Message).Descriptor())
81 tests = append(tests, []struct{ got, want pref.Descriptor }{{
Joe Tsai6dbffb72018-12-04 14:06:19 -080082 got: loadEnumDesc(reflect.TypeOf(proto3_20160225.SiblingEnum(0))),
Joe Tsai08e00302018-11-26 22:32:06 -080083 want: fileDescP3_20160225.Enums().ByName("SiblingEnum"),
84 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -080085 got: loadEnumDesc(reflect.TypeOf(proto3_20160225.Message_ChildEnum(0))),
Joe Tsai08e00302018-11-26 22:32:06 -080086 want: fileDescP3_20160225.Messages().ByName("Message").Enums().ByName("ChildEnum"),
87 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -080088 got: loadMessageDesc(reflect.TypeOf(new(proto3_20160225.SiblingMessage))),
Joe Tsai08e00302018-11-26 22:32:06 -080089 want: fileDescP3_20160225.Messages().ByName("SiblingMessage"),
90 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -080091 got: loadMessageDesc(reflect.TypeOf(new(proto3_20160225.Message_ChildMessage))),
Joe Tsai08e00302018-11-26 22:32:06 -080092 want: fileDescP3_20160225.Messages().ByName("Message").Messages().ByName("ChildMessage"),
93 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -080094 got: loadMessageDesc(reflect.TypeOf(new(proto3_20160225.Message))),
Joe Tsai08e00302018-11-26 22:32:06 -080095 want: fileDescP3_20160225.Messages().ByName("Message"),
96 }}...)
97
98 fileDescP2_20160519 := mustLoadFileDesc(new(proto2_20160519.Message).Descriptor())
99 tests = append(tests, []struct{ got, want pref.Descriptor }{{
Joe Tsai6dbffb72018-12-04 14:06:19 -0800100 got: loadEnumDesc(reflect.TypeOf(proto2_20160519.SiblingEnum(0))),
Joe Tsai08e00302018-11-26 22:32:06 -0800101 want: fileDescP2_20160519.Enums().ByName("SiblingEnum"),
102 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800103 got: loadEnumDesc(reflect.TypeOf(proto2_20160519.Message_ChildEnum(0))),
Joe Tsai08e00302018-11-26 22:32:06 -0800104 want: fileDescP2_20160519.Messages().ByName("Message").Enums().ByName("ChildEnum"),
105 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800106 got: loadMessageDesc(reflect.TypeOf(new(proto2_20160519.SiblingMessage))),
Joe Tsai08e00302018-11-26 22:32:06 -0800107 want: fileDescP2_20160519.Messages().ByName("SiblingMessage"),
108 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800109 got: loadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message_ChildMessage))),
Joe Tsai08e00302018-11-26 22:32:06 -0800110 want: fileDescP2_20160519.Messages().ByName("Message").Messages().ByName("ChildMessage"),
111 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800112 got: loadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message))),
Joe Tsai08e00302018-11-26 22:32:06 -0800113 want: fileDescP2_20160519.Messages().ByName("Message"),
114 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800115 got: loadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message_NamedGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800116 want: fileDescP2_20160519.Messages().ByName("Message").Messages().ByName("NamedGroup"),
117 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800118 got: loadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message_OptionalGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800119 want: fileDescP2_20160519.Messages().ByName("Message").Messages().ByName("OptionalGroup"),
120 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800121 got: loadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message_RequiredGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800122 want: fileDescP2_20160519.Messages().ByName("Message").Messages().ByName("RequiredGroup"),
123 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800124 got: loadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message_RepeatedGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800125 want: fileDescP2_20160519.Messages().ByName("Message").Messages().ByName("RepeatedGroup"),
126 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800127 got: loadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message_OneofGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800128 want: fileDescP2_20160519.Messages().ByName("Message").Messages().ByName("OneofGroup"),
129 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800130 got: loadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message_ExtensionOptionalGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800131 want: fileDescP2_20160519.Messages().ByName("Message").Messages().ByName("ExtensionOptionalGroup"),
132 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800133 got: loadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message_ExtensionRepeatedGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800134 want: fileDescP2_20160519.Messages().ByName("Message").Messages().ByName("ExtensionRepeatedGroup"),
135 }}...)
136
137 fileDescP3_20160519 := mustLoadFileDesc(new(proto3_20160519.Message).Descriptor())
138 tests = append(tests, []struct{ got, want pref.Descriptor }{{
Joe Tsai6dbffb72018-12-04 14:06:19 -0800139 got: loadEnumDesc(reflect.TypeOf(proto3_20160519.SiblingEnum(0))),
Joe Tsai08e00302018-11-26 22:32:06 -0800140 want: fileDescP3_20160519.Enums().ByName("SiblingEnum"),
141 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800142 got: loadEnumDesc(reflect.TypeOf(proto3_20160519.Message_ChildEnum(0))),
Joe Tsai08e00302018-11-26 22:32:06 -0800143 want: fileDescP3_20160519.Messages().ByName("Message").Enums().ByName("ChildEnum"),
144 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800145 got: loadMessageDesc(reflect.TypeOf(new(proto3_20160519.SiblingMessage))),
Joe Tsai08e00302018-11-26 22:32:06 -0800146 want: fileDescP3_20160519.Messages().ByName("SiblingMessage"),
147 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800148 got: loadMessageDesc(reflect.TypeOf(new(proto3_20160519.Message_ChildMessage))),
Joe Tsai08e00302018-11-26 22:32:06 -0800149 want: fileDescP3_20160519.Messages().ByName("Message").Messages().ByName("ChildMessage"),
150 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800151 got: loadMessageDesc(reflect.TypeOf(new(proto3_20160519.Message))),
Joe Tsai08e00302018-11-26 22:32:06 -0800152 want: fileDescP3_20160519.Messages().ByName("Message"),
153 }}...)
154
155 fileDescP2_20180125 := mustLoadFileDesc(new(proto2_20180125.Message).Descriptor())
156 tests = append(tests, []struct{ got, want pref.Descriptor }{{
Joe Tsai6dbffb72018-12-04 14:06:19 -0800157 got: loadEnumDesc(reflect.TypeOf(proto2_20180125.SiblingEnum(0))),
Joe Tsai08e00302018-11-26 22:32:06 -0800158 want: fileDescP2_20180125.Enums().ByName("SiblingEnum"),
159 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800160 got: loadEnumDesc(reflect.TypeOf(proto2_20180125.Message_ChildEnum(0))),
Joe Tsai08e00302018-11-26 22:32:06 -0800161 want: fileDescP2_20180125.Messages().ByName("Message").Enums().ByName("ChildEnum"),
162 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800163 got: loadMessageDesc(reflect.TypeOf(new(proto2_20180125.SiblingMessage))),
Joe Tsai08e00302018-11-26 22:32:06 -0800164 want: fileDescP2_20180125.Messages().ByName("SiblingMessage"),
165 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800166 got: loadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message_ChildMessage))),
Joe Tsai08e00302018-11-26 22:32:06 -0800167 want: fileDescP2_20180125.Messages().ByName("Message").Messages().ByName("ChildMessage"),
168 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800169 got: loadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message))),
Joe Tsai08e00302018-11-26 22:32:06 -0800170 want: fileDescP2_20180125.Messages().ByName("Message"),
171 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800172 got: loadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message_NamedGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800173 want: fileDescP2_20180125.Messages().ByName("Message").Messages().ByName("NamedGroup"),
174 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800175 got: loadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message_OptionalGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800176 want: fileDescP2_20180125.Messages().ByName("Message").Messages().ByName("OptionalGroup"),
177 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800178 got: loadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message_RequiredGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800179 want: fileDescP2_20180125.Messages().ByName("Message").Messages().ByName("RequiredGroup"),
180 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800181 got: loadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message_RepeatedGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800182 want: fileDescP2_20180125.Messages().ByName("Message").Messages().ByName("RepeatedGroup"),
183 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800184 got: loadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message_OneofGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800185 want: fileDescP2_20180125.Messages().ByName("Message").Messages().ByName("OneofGroup"),
186 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800187 got: loadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message_ExtensionOptionalGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800188 want: fileDescP2_20180125.Messages().ByName("Message").Messages().ByName("ExtensionOptionalGroup"),
189 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800190 got: loadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message_ExtensionRepeatedGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800191 want: fileDescP2_20180125.Messages().ByName("Message").Messages().ByName("ExtensionRepeatedGroup"),
192 }}...)
193
194 fileDescP3_20180125 := mustLoadFileDesc(new(proto3_20180125.Message).Descriptor())
195 tests = append(tests, []struct{ got, want pref.Descriptor }{{
Joe Tsai6dbffb72018-12-04 14:06:19 -0800196 got: loadEnumDesc(reflect.TypeOf(proto3_20180125.SiblingEnum(0))),
Joe Tsai08e00302018-11-26 22:32:06 -0800197 want: fileDescP3_20180125.Enums().ByName("SiblingEnum"),
198 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800199 got: loadEnumDesc(reflect.TypeOf(proto3_20180125.Message_ChildEnum(0))),
Joe Tsai08e00302018-11-26 22:32:06 -0800200 want: fileDescP3_20180125.Messages().ByName("Message").Enums().ByName("ChildEnum"),
201 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800202 got: loadMessageDesc(reflect.TypeOf(new(proto3_20180125.SiblingMessage))),
Joe Tsai08e00302018-11-26 22:32:06 -0800203 want: fileDescP3_20180125.Messages().ByName("SiblingMessage"),
204 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800205 got: loadMessageDesc(reflect.TypeOf(new(proto3_20180125.Message_ChildMessage))),
Joe Tsai08e00302018-11-26 22:32:06 -0800206 want: fileDescP3_20180125.Messages().ByName("Message").Messages().ByName("ChildMessage"),
207 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800208 got: loadMessageDesc(reflect.TypeOf(new(proto3_20180125.Message))),
Joe Tsai08e00302018-11-26 22:32:06 -0800209 want: fileDescP3_20180125.Messages().ByName("Message"),
210 }}...)
211
212 fileDescP2_20180430 := mustLoadFileDesc(new(proto2_20180430.Message).Descriptor())
213 tests = append(tests, []struct{ got, want pref.Descriptor }{{
Joe Tsai6dbffb72018-12-04 14:06:19 -0800214 got: loadEnumDesc(reflect.TypeOf(proto2_20180430.SiblingEnum(0))),
Joe Tsai08e00302018-11-26 22:32:06 -0800215 want: fileDescP2_20180430.Enums().ByName("SiblingEnum"),
216 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800217 got: loadEnumDesc(reflect.TypeOf(proto2_20180430.Message_ChildEnum(0))),
Joe Tsai08e00302018-11-26 22:32:06 -0800218 want: fileDescP2_20180430.Messages().ByName("Message").Enums().ByName("ChildEnum"),
219 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800220 got: loadMessageDesc(reflect.TypeOf(new(proto2_20180430.SiblingMessage))),
Joe Tsai08e00302018-11-26 22:32:06 -0800221 want: fileDescP2_20180430.Messages().ByName("SiblingMessage"),
222 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800223 got: loadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message_ChildMessage))),
Joe Tsai08e00302018-11-26 22:32:06 -0800224 want: fileDescP2_20180430.Messages().ByName("Message").Messages().ByName("ChildMessage"),
225 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800226 got: loadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message))),
Joe Tsai08e00302018-11-26 22:32:06 -0800227 want: fileDescP2_20180430.Messages().ByName("Message"),
228 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800229 got: loadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message_NamedGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800230 want: fileDescP2_20180430.Messages().ByName("Message").Messages().ByName("NamedGroup"),
231 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800232 got: loadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message_OptionalGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800233 want: fileDescP2_20180430.Messages().ByName("Message").Messages().ByName("OptionalGroup"),
234 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800235 got: loadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message_RequiredGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800236 want: fileDescP2_20180430.Messages().ByName("Message").Messages().ByName("RequiredGroup"),
237 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800238 got: loadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message_RepeatedGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800239 want: fileDescP2_20180430.Messages().ByName("Message").Messages().ByName("RepeatedGroup"),
240 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800241 got: loadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message_OneofGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800242 want: fileDescP2_20180430.Messages().ByName("Message").Messages().ByName("OneofGroup"),
243 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800244 got: loadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message_ExtensionOptionalGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800245 want: fileDescP2_20180430.Messages().ByName("Message").Messages().ByName("ExtensionOptionalGroup"),
246 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800247 got: loadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message_ExtensionRepeatedGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800248 want: fileDescP2_20180430.Messages().ByName("Message").Messages().ByName("ExtensionRepeatedGroup"),
249 }}...)
250
251 fileDescP3_20180430 := mustLoadFileDesc(new(proto3_20180430.Message).Descriptor())
252 tests = append(tests, []struct{ got, want pref.Descriptor }{{
Joe Tsai6dbffb72018-12-04 14:06:19 -0800253 got: loadEnumDesc(reflect.TypeOf(proto3_20180430.SiblingEnum(0))),
Joe Tsai08e00302018-11-26 22:32:06 -0800254 want: fileDescP3_20180430.Enums().ByName("SiblingEnum"),
255 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800256 got: loadEnumDesc(reflect.TypeOf(proto3_20180430.Message_ChildEnum(0))),
Joe Tsai08e00302018-11-26 22:32:06 -0800257 want: fileDescP3_20180430.Messages().ByName("Message").Enums().ByName("ChildEnum"),
258 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800259 got: loadMessageDesc(reflect.TypeOf(new(proto3_20180430.SiblingMessage))),
Joe Tsai08e00302018-11-26 22:32:06 -0800260 want: fileDescP3_20180430.Messages().ByName("SiblingMessage"),
261 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800262 got: loadMessageDesc(reflect.TypeOf(new(proto3_20180430.Message_ChildMessage))),
Joe Tsai08e00302018-11-26 22:32:06 -0800263 want: fileDescP3_20180430.Messages().ByName("Message").Messages().ByName("ChildMessage"),
264 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800265 got: loadMessageDesc(reflect.TypeOf(new(proto3_20180430.Message))),
Joe Tsai08e00302018-11-26 22:32:06 -0800266 want: fileDescP3_20180430.Messages().ByName("Message"),
267 }}...)
268
269 fileDescP2_20180814 := mustLoadFileDesc(new(proto2_20180814.Message).Descriptor())
270 tests = append(tests, []struct{ got, want pref.Descriptor }{{
Joe Tsai6dbffb72018-12-04 14:06:19 -0800271 got: loadEnumDesc(reflect.TypeOf(proto2_20180814.SiblingEnum(0))),
Joe Tsai08e00302018-11-26 22:32:06 -0800272 want: fileDescP2_20180814.Enums().ByName("SiblingEnum"),
273 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800274 got: loadEnumDesc(reflect.TypeOf(proto2_20180814.Message_ChildEnum(0))),
Joe Tsai08e00302018-11-26 22:32:06 -0800275 want: fileDescP2_20180814.Messages().ByName("Message").Enums().ByName("ChildEnum"),
276 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800277 got: loadMessageDesc(reflect.TypeOf(new(proto2_20180814.SiblingMessage))),
Joe Tsai08e00302018-11-26 22:32:06 -0800278 want: fileDescP2_20180814.Messages().ByName("SiblingMessage"),
279 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800280 got: loadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message_ChildMessage))),
Joe Tsai08e00302018-11-26 22:32:06 -0800281 want: fileDescP2_20180814.Messages().ByName("Message").Messages().ByName("ChildMessage"),
282 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800283 got: loadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message))),
Joe Tsai08e00302018-11-26 22:32:06 -0800284 want: fileDescP2_20180814.Messages().ByName("Message"),
285 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800286 got: loadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message_NamedGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800287 want: fileDescP2_20180814.Messages().ByName("Message").Messages().ByName("NamedGroup"),
288 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800289 got: loadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message_OptionalGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800290 want: fileDescP2_20180814.Messages().ByName("Message").Messages().ByName("OptionalGroup"),
291 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800292 got: loadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message_RequiredGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800293 want: fileDescP2_20180814.Messages().ByName("Message").Messages().ByName("RequiredGroup"),
294 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800295 got: loadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message_RepeatedGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800296 want: fileDescP2_20180814.Messages().ByName("Message").Messages().ByName("RepeatedGroup"),
297 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800298 got: loadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message_OneofGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800299 want: fileDescP2_20180814.Messages().ByName("Message").Messages().ByName("OneofGroup"),
300 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800301 got: loadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message_ExtensionOptionalGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800302 want: fileDescP2_20180814.Messages().ByName("Message").Messages().ByName("ExtensionOptionalGroup"),
303 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800304 got: loadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message_ExtensionRepeatedGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800305 want: fileDescP2_20180814.Messages().ByName("Message").Messages().ByName("ExtensionRepeatedGroup"),
306 }}...)
307
308 fileDescP3_20180814 := mustLoadFileDesc(new(proto3_20180814.Message).Descriptor())
309 tests = append(tests, []struct{ got, want pref.Descriptor }{{
Joe Tsai6dbffb72018-12-04 14:06:19 -0800310 got: loadEnumDesc(reflect.TypeOf(proto3_20180814.SiblingEnum(0))),
Joe Tsai08e00302018-11-26 22:32:06 -0800311 want: fileDescP3_20180814.Enums().ByName("SiblingEnum"),
312 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800313 got: loadEnumDesc(reflect.TypeOf(proto3_20180814.Message_ChildEnum(0))),
Joe Tsai08e00302018-11-26 22:32:06 -0800314 want: fileDescP3_20180814.Messages().ByName("Message").Enums().ByName("ChildEnum"),
315 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800316 got: loadMessageDesc(reflect.TypeOf(new(proto3_20180814.SiblingMessage))),
Joe Tsai08e00302018-11-26 22:32:06 -0800317 want: fileDescP3_20180814.Messages().ByName("SiblingMessage"),
318 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800319 got: loadMessageDesc(reflect.TypeOf(new(proto3_20180814.Message_ChildMessage))),
Joe Tsai08e00302018-11-26 22:32:06 -0800320 want: fileDescP3_20180814.Messages().ByName("Message").Messages().ByName("ChildMessage"),
321 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800322 got: loadMessageDesc(reflect.TypeOf(new(proto3_20180814.Message))),
Joe Tsai08e00302018-11-26 22:32:06 -0800323 want: fileDescP3_20180814.Messages().ByName("Message"),
324 }}...)
325
326 fileDescP2_20181126 := mustLoadFileDesc(new(proto2_20181126.Message).Descriptor())
327 tests = append(tests, []struct{ got, want pref.Descriptor }{{
Joe Tsai6dbffb72018-12-04 14:06:19 -0800328 got: loadEnumDesc(reflect.TypeOf(proto2_20181126.SiblingEnum(0))),
Joe Tsai08e00302018-11-26 22:32:06 -0800329 want: fileDescP2_20181126.Enums().ByName("SiblingEnum"),
330 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800331 got: loadEnumDesc(reflect.TypeOf(proto2_20181126.Message_ChildEnum(0))),
Joe Tsai08e00302018-11-26 22:32:06 -0800332 want: fileDescP2_20181126.Messages().ByName("Message").Enums().ByName("ChildEnum"),
333 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800334 got: loadMessageDesc(reflect.TypeOf(new(proto2_20181126.SiblingMessage))),
Joe Tsai08e00302018-11-26 22:32:06 -0800335 want: fileDescP2_20181126.Messages().ByName("SiblingMessage"),
336 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800337 got: loadMessageDesc(reflect.TypeOf(new(proto2_20181126.Message_ChildMessage))),
Joe Tsai08e00302018-11-26 22:32:06 -0800338 want: fileDescP2_20181126.Messages().ByName("Message").Messages().ByName("ChildMessage"),
339 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800340 got: loadMessageDesc(reflect.TypeOf(new(proto2_20181126.Message))),
Joe Tsai08e00302018-11-26 22:32:06 -0800341 want: fileDescP2_20181126.Messages().ByName("Message"),
342 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800343 got: loadMessageDesc(reflect.TypeOf(new(proto2_20181126.Message_NamedGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800344 want: fileDescP2_20181126.Messages().ByName("Message").Messages().ByName("NamedGroup"),
345 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800346 got: loadMessageDesc(reflect.TypeOf(new(proto2_20181126.Message_OptionalGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800347 want: fileDescP2_20181126.Messages().ByName("Message").Messages().ByName("OptionalGroup"),
348 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800349 got: loadMessageDesc(reflect.TypeOf(new(proto2_20181126.Message_RequiredGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800350 want: fileDescP2_20181126.Messages().ByName("Message").Messages().ByName("RequiredGroup"),
351 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800352 got: loadMessageDesc(reflect.TypeOf(new(proto2_20181126.Message_RepeatedGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800353 want: fileDescP2_20181126.Messages().ByName("Message").Messages().ByName("RepeatedGroup"),
354 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800355 got: loadMessageDesc(reflect.TypeOf(new(proto2_20181126.Message_OneofGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800356 want: fileDescP2_20181126.Messages().ByName("Message").Messages().ByName("OneofGroup"),
357 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800358 got: loadMessageDesc(reflect.TypeOf(new(proto2_20181126.Message_ExtensionOptionalGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800359 want: fileDescP2_20181126.Messages().ByName("Message").Messages().ByName("ExtensionOptionalGroup"),
360 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800361 got: loadMessageDesc(reflect.TypeOf(new(proto2_20181126.Message_ExtensionRepeatedGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800362 want: fileDescP2_20181126.Messages().ByName("Message").Messages().ByName("ExtensionRepeatedGroup"),
363 }}...)
364
365 fileDescP3_20181126 := mustLoadFileDesc(new(proto3_20181126.Message).Descriptor())
366 tests = append(tests, []struct{ got, want pref.Descriptor }{{
Joe Tsai6dbffb72018-12-04 14:06:19 -0800367 got: loadEnumDesc(reflect.TypeOf(proto3_20181126.SiblingEnum(0))),
Joe Tsai08e00302018-11-26 22:32:06 -0800368 want: fileDescP3_20181126.Enums().ByName("SiblingEnum"),
369 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800370 got: loadEnumDesc(reflect.TypeOf(proto3_20181126.Message_ChildEnum(0))),
Joe Tsai08e00302018-11-26 22:32:06 -0800371 want: fileDescP3_20181126.Messages().ByName("Message").Enums().ByName("ChildEnum"),
372 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800373 got: loadMessageDesc(reflect.TypeOf(new(proto3_20181126.SiblingMessage))),
Joe Tsai08e00302018-11-26 22:32:06 -0800374 want: fileDescP3_20181126.Messages().ByName("SiblingMessage"),
375 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800376 got: loadMessageDesc(reflect.TypeOf(new(proto3_20181126.Message_ChildMessage))),
Joe Tsai08e00302018-11-26 22:32:06 -0800377 want: fileDescP3_20181126.Messages().ByName("Message").Messages().ByName("ChildMessage"),
378 }, {
Joe Tsai6dbffb72018-12-04 14:06:19 -0800379 got: loadMessageDesc(reflect.TypeOf(new(proto3_20181126.Message))),
Joe Tsai08e00302018-11-26 22:32:06 -0800380 want: fileDescP3_20181126.Messages().ByName("Message"),
381 }}...)
382
383 // TODO: We need a test package to compare descriptors.
384 type list interface {
385 Len() int
386 pragma.DoNotImplement
387 }
388 opts := cmp.Options{
389 cmp.Transformer("", func(x list) []interface{} {
390 out := make([]interface{}, x.Len())
391 v := reflect.ValueOf(x)
392 for i := 0; i < x.Len(); i++ {
393 m := v.MethodByName("Get")
394 out[i] = m.Call([]reflect.Value{reflect.ValueOf(i)})[0].Interface()
395 }
396 return out
397 }),
398 cmp.Transformer("", func(x pref.Descriptor) map[string]interface{} {
399 out := make(map[string]interface{})
400 v := reflect.ValueOf(x)
401 for i := 0; i < v.NumMethod(); i++ {
402 name := v.Type().Method(i).Name
403 if m := v.Method(i); m.Type().NumIn() == 0 && m.Type().NumOut() == 1 {
404 switch name {
405 case "Index":
406 // Ignore index since legacy descriptors have no parent.
407 case "Options":
408 // Ignore descriptor options since protos are not cmperable.
409 case "Enums", "Messages", "Extensions":
410 // Ignore nested message and enum declarations since
411 // legacy descriptors are all created standalone.
412 case "OneofType", "ExtendedType", "EnumType", "MessageType":
413 // Avoid descending into a dependency to avoid a cycle.
414 // Just record the full name if available.
415 //
416 // TODO: Cycle support in cmp would be useful here.
417 v := m.Call(nil)[0]
418 if !v.IsNil() {
419 out[name] = v.Interface().(pref.Descriptor).FullName()
420 }
421 default:
422 out[name] = m.Call(nil)[0].Interface()
423 }
424 }
425 }
426 return out
427 }),
428 cmp.Transformer("", func(v pref.Value) interface{} {
429 return v.Interface()
430 }),
431 }
432
433 for _, tt := range tests {
434 t.Run(string(tt.want.FullName()), func(t *testing.T) {
435 if diff := cmp.Diff(&tt.want, &tt.got, opts); diff != "" {
436 t.Errorf("descriptor mismatch (-want, +got):\n%s", diff)
437 }
438 })
439 }
440}