MCPcopy
hub / github.com/gogo/protobuf / TestGetExtensionForIncompleteDesc

Function TestGetExtensionForIncompleteDesc

proto/extensions_test.go:79–166  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

77}
78
79func TestGetExtensionForIncompleteDesc(t *testing.T) {
80 msg := &pb.MyMessage{Count: proto.Int32(0)}
81 extdesc1 := &proto.ExtensionDesc{
82 ExtendedType: (*pb.MyMessage)(nil),
83 ExtensionType: (*bool)(nil),
84 Field: 123456789,
85 Name: "a.b",
86 Tag: "varint,123456789,opt",
87 }
88 ext1 := proto.Bool(true)
89 if err := proto.SetExtension(msg, extdesc1, ext1); err != nil {
90 t.Fatalf("Could not set ext1: %s", err)
91 }
92 extdesc2 := &proto.ExtensionDesc{
93 ExtendedType: (*pb.MyMessage)(nil),
94 ExtensionType: ([]byte)(nil),
95 Field: 123456790,
96 Name: "a.c",
97 Tag: "bytes,123456790,opt",
98 }
99 ext2 := []byte{0, 1, 2, 3, 4, 5, 6, 7}
100 if err := proto.SetExtension(msg, extdesc2, ext2); err != nil {
101 t.Fatalf("Could not set ext2: %s", err)
102 }
103 extdesc3 := &proto.ExtensionDesc{
104 ExtendedType: (*pb.MyMessage)(nil),
105 ExtensionType: (*pb.Ext)(nil),
106 Field: 123456791,
107 Name: "a.d",
108 Tag: "bytes,123456791,opt",
109 }
110 ext3 := &pb.Ext{Data: proto.String("foo")}
111 if err := proto.SetExtension(msg, extdesc3, ext3); err != nil {
112 t.Fatalf("Could not set ext3: %s", err)
113 }
114
115 b, err := proto.Marshal(msg)
116 if err != nil {
117 t.Fatalf("Could not marshal msg: %v", err)
118 }
119 if err := proto.Unmarshal(b, msg); err != nil {
120 t.Fatalf("Could not unmarshal into msg: %v", err)
121 }
122
123 var expected proto.Buffer
124 if err := expected.EncodeVarint(uint64((extdesc1.Field << 3) | proto.WireVarint)); err != nil {
125 t.Fatalf("failed to compute expected prefix for ext1: %s", err)
126 }
127 if err := expected.EncodeVarint(1 /* bool true */); err != nil {
128 t.Fatalf("failed to compute expected value for ext1: %s", err)
129 }
130
131 if b, err := proto.GetExtension(msg, &proto.ExtensionDesc{Field: extdesc1.Field}); err != nil {
132 t.Fatalf("Failed to get raw value for ext1: %s", err)
133 } else if !reflect.DeepEqual(b, expected.Bytes()) {
134 t.Fatalf("Raw value for ext1: got %v, want %v", b, expected.Bytes())
135 }
136

Callers

nothing calls this directly

Calls 10

EncodeVarintMethod · 0.95
BytesMethod · 0.95
EncodeRawBytesMethod · 0.95
Int32Function · 0.92
BoolFunction · 0.92
SetExtensionFunction · 0.92
StringFunction · 0.92
MarshalFunction · 0.92
UnmarshalFunction · 0.92
GetExtensionFunction · 0.92

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…