...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 package unmarshalmerge
30
31 import (
32 "github.com/gogo/protobuf/proto"
33 math_rand "math/rand"
34 "testing"
35 "time"
36 )
37
38 func TestUnmarshalMerge(t *testing.T) {
39 popr := math_rand.New(math_rand.NewSource(time.Now().UnixNano()))
40 p := NewPopulatedBig(popr, true)
41 if p.GetSub() == nil {
42 p.Sub = &Sub{SubNumber: proto.Int64(12345)}
43 }
44 data, err := proto.Marshal(p)
45 if err != nil {
46 t.Fatal(err)
47 }
48 s := &Sub{}
49 b := &Big{
50 Sub: s,
51 }
52 err = proto.UnmarshalMerge(data, b)
53 if err != nil {
54 t.Fatal(err)
55 }
56 if s.GetSubNumber() != p.GetSub().GetSubNumber() {
57 t.Fatalf("should have unmarshaled subnumber into sub")
58 }
59 }
60
61 func TestUnsafeUnmarshalMerge(t *testing.T) {
62 popr := math_rand.New(math_rand.NewSource(time.Now().UnixNano()))
63 p := NewPopulatedBigUnsafe(popr, true)
64 if p.GetSub() == nil {
65 p.Sub = &Sub{SubNumber: proto.Int64(12345)}
66 }
67 data, err := proto.Marshal(p)
68 if err != nil {
69 t.Fatal(err)
70 }
71 s := &Sub{}
72 b := &BigUnsafe{
73 Sub: s,
74 }
75 err = proto.UnmarshalMerge(data, b)
76 if err != nil {
77 t.Fatal(err)
78 }
79
80 if s.GetSubNumber() != p.GetSub().GetSubNumber() {
81 t.Fatalf("should have unmarshaled subnumber into sub")
82 }
83 }
84
85 func TestInt64Merge(t *testing.T) {
86 popr := math_rand.New(math_rand.NewSource(time.Now().UnixNano()))
87 p := NewPopulatedIntMerge(popr, true)
88 p2 := NewPopulatedIntMerge(popr, true)
89 data, err := proto.Marshal(p2)
90 if err != nil {
91 t.Fatal(err)
92 }
93 if err := proto.UnmarshalMerge(data, p); err != nil {
94 t.Fatal(err)
95 }
96 if !p.Equal(p2) {
97 t.Fatalf("exptected %#v but got %#v", p2, p)
98 }
99 }
100
View as plain text