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

Function TestGetExtensionForIncompleteDesc

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

Source from the content-addressed store, hash-verified

40}
41
42func TestGetExtensionForIncompleteDesc(t *testing.T) {
43 msg := &pb2.MyMessage{Count: proto.Int32(0)}
44 extdesc1 := &proto.ExtensionDesc{
45 ExtendedType: (*pb2.MyMessage)(nil),
46 ExtensionType: (*bool)(nil),
47 Field: 123456789,
48 Name: "a.b",
49 Tag: "varint,123456789,opt",
50 }
51 ext1 := proto.Bool(true)
52 if err := proto.SetExtension(msg, extdesc1, ext1); err != nil {
53 t.Fatalf("Could not set ext1: %s", err)
54 }
55 extdesc2 := &proto.ExtensionDesc{
56 ExtendedType: (*pb2.MyMessage)(nil),
57 ExtensionType: ([]byte)(nil),
58 Field: 123456790,
59 Name: "a.c",
60 Tag: "bytes,123456790,opt",
61 }
62 ext2 := []byte{0, 1, 2, 3, 4, 5, 6, 7}
63 if err := proto.SetExtension(msg, extdesc2, ext2); err != nil {
64 t.Fatalf("Could not set ext2: %s", err)
65 }
66 extdesc3 := &proto.ExtensionDesc{
67 ExtendedType: (*pb2.MyMessage)(nil),
68 ExtensionType: (*pb2.Ext)(nil),
69 Field: 123456791,
70 Name: "a.d",
71 Tag: "bytes,123456791,opt",
72 }
73 ext3 := &pb2.Ext{Data: proto.String("foo")}
74 if err := proto.SetExtension(msg, extdesc3, ext3); err != nil {
75 t.Fatalf("Could not set ext3: %s", err)
76 }
77
78 b, err := proto.Marshal(msg)
79 if err != nil {
80 t.Fatalf("Could not marshal msg: %v", err)
81 }
82 if err := proto.Unmarshal(b, msg); err != nil {
83 t.Fatalf("Could not unmarshal into msg: %v", err)
84 }
85
86 var expected proto.Buffer
87 if err := expected.EncodeVarint(uint64((extdesc1.Field << 3) | proto.WireVarint)); err != nil {
88 t.Fatalf("failed to compute expected prefix for ext1: %s", err)
89 }
90 if err := expected.EncodeVarint(1 /* bool true */); err != nil {
91 t.Fatalf("failed to compute expected value for ext1: %s", err)
92 }
93
94 if b, err := proto.GetExtension(msg, &proto.ExtensionDesc{Field: extdesc1.Field}); err != nil {
95 t.Fatalf("Failed to get raw value for ext1: %s", err)
96 } else if !reflect.DeepEqual(b, expected.Bytes()) {
97 t.Fatalf("Raw value for ext1: got %v, want %v", b, expected.Bytes())
98 }
99

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