(t *testing.T)
| 77 | } |
| 78 | |
| 79 | func 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 |
nothing calls this directly
no test coverage detected
searching dependent graphs…