(t *testing.T)
| 40 | } |
| 41 | |
| 42 | func 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 |
nothing calls this directly
no test coverage detected