|
| 1 | +package deepcopy |
| 2 | + |
| 3 | +import ( |
| 4 | + "fmt" |
| 5 | + "testing" |
| 6 | + |
| 7 | + "github.com/stretchr/testify/assert" |
| 8 | +) |
| 9 | + |
| 10 | +// src |
| 11 | +type TopicItemSrc struct { |
| 12 | + ID string `protobuf:"bytes,1,opt,name=ID,proto3" json:"ID,omitempty"` |
| 13 | + Name string `protobuf:"bytes,2,opt,name=Name,proto3" json:"Name,omitempty"` |
| 14 | + CreateTime string `protobuf:"bytes,3,opt,name=CreateTime,proto3" json:"CreateTime,omitempty"` |
| 15 | +} |
| 16 | + |
| 17 | +// src |
| 18 | +type AllTopicResp struct { |
| 19 | + TopicItem []*TopicItemSrc `protobuf:"bytes,1,rep,name=TopicItem,proto3" json:"TopicItem,omitempty"` |
| 20 | + Total int32 `protobuf:"varint,2,opt,name=Total,proto3" json:"Total,omitempty"` //总条数 |
| 21 | +} |
| 22 | + |
| 23 | +// desc |
| 24 | +type AllTopicResp_AllTopicRespData struct { |
| 25 | + TopicItem []*TopicItemDst `protobuf:"bytes,1,rep,name=TopicItem,proto3" json:"TopicItem,omitempty"` |
| 26 | + Total int32 `protobuf:"varint,2,opt,name=Total,proto3" json:"Total,omitempty"` //总条数 |
| 27 | +} |
| 28 | + |
| 29 | +type TopicItemDst struct { |
| 30 | + ID string `protobuf:"bytes,1,opt,name=ID,proto3" json:"ID,omitempty"` |
| 31 | + Name string `protobuf:"bytes,2,opt,name=Name,proto3" json:"Name,omitempty"` |
| 32 | + CreateTime string `protobuf:"bytes,3,opt,name=CreateTime,proto3" json:"CreateTime,omitempty"` |
| 33 | +} |
| 34 | + |
| 35 | +type AllTopicResp2 struct { |
| 36 | + Code int32 `protobuf:"varint,1,opt,name=Code,proto3" json:"Code,omitempty"` |
| 37 | + Message string `protobuf:"bytes,2,opt,name=Message,proto3" json:"Message,omitempty"` |
| 38 | + Data *AllTopicResp_AllTopicRespData `protobuf:"bytes,3,opt,name=Data,proto3" json:"Data,omitempty"` |
| 39 | +} |
| 40 | + |
| 41 | +func TestCopy(t *testing.T) { |
| 42 | + resp := AllTopicResp{Total: 100, TopicItem: []*TopicItemSrc{ |
| 43 | + {ID: "111", Name: "111"}, |
| 44 | + {ID: "111", Name: "222"}, |
| 45 | + }} |
| 46 | + |
| 47 | + rsp := AllTopicResp2{Data: &AllTopicResp_AllTopicRespData{}} |
| 48 | + Copy(rsp.Data, resp).Do() |
| 49 | + |
| 50 | + fmt.Printf("%#v\n", resp) |
| 51 | + fmt.Printf("%#v\n", rsp.Data) |
| 52 | + assert.NotNil(t, rsp.Data) |
| 53 | + assert.Equal(t, rsp.Data.Total, resp.Total) |
| 54 | + assert.Equal(t, len(rsp.Data.TopicItem), len(resp.TopicItem)) |
| 55 | + assert.Greater(t, len(rsp.Data.TopicItem), 0) |
| 56 | + assert.Greater(t, len(resp.TopicItem), 0) |
| 57 | + for i, v := range resp.TopicItem { |
| 58 | + assert.Equal(t, v.ID, rsp.Data.TopicItem[i].ID) |
| 59 | + assert.Equal(t, v.Name, rsp.Data.TopicItem[i].Name) |
| 60 | + } |
| 61 | +} |
0 commit comments