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 unrecognized
30
31 import (
32 "github.com/gogo/protobuf/proto"
33 math_rand "math/rand"
34 "testing"
35 time "time"
36 )
37
38 func TestNewOld(t *testing.T) {
39 popr := math_rand.New(math_rand.NewSource(time.Now().UnixNano()))
40 newer := NewPopulatedA(popr, true)
41 data1, err := proto.Marshal(newer)
42 if err != nil {
43 panic(err)
44 }
45 older := &OldA{}
46 if err = proto.Unmarshal(data1, older); err != nil {
47 panic(err)
48 }
49 data2, err := proto.Marshal(older)
50 if err != nil {
51 panic(err)
52 }
53 bluer := &A{}
54 if err := proto.Unmarshal(data2, bluer); err != nil {
55 panic(err)
56 }
57 if err := newer.VerboseEqual(bluer); err != nil {
58 t.Fatalf("%#v !VerboseProto %#v, since %v", newer, bluer, err)
59 }
60 }
61
62 func TestOldNew(t *testing.T) {
63 popr := math_rand.New(math_rand.NewSource(time.Now().UnixNano()))
64 older := NewPopulatedOldA(popr, true)
65 data1, err := proto.Marshal(older)
66 if err != nil {
67 panic(err)
68 }
69 newer := &A{}
70 if err = proto.Unmarshal(data1, newer); err != nil {
71 panic(err)
72 }
73 data2, err := proto.Marshal(newer)
74 if err != nil {
75 panic(err)
76 }
77 bluer := &OldA{}
78 if err := proto.Unmarshal(data2, bluer); err != nil {
79 panic(err)
80 }
81 if err := older.VerboseEqual(bluer); err != nil {
82 t.Fatalf("%#v !VerboseProto %#v, since %v", older, bluer, err)
83 }
84 }
85
86 func TestOldNewOldNew(t *testing.T) {
87 popr := math_rand.New(math_rand.NewSource(time.Now().UnixNano()))
88 older := NewPopulatedOldA(popr, true)
89 data1, err := proto.Marshal(older)
90 if err != nil {
91 panic(err)
92 }
93 newer := &A{}
94 if err = proto.Unmarshal(data1, newer); err != nil {
95 panic(err)
96 }
97 data2, err := proto.Marshal(newer)
98 if err != nil {
99 panic(err)
100 }
101 bluer := &OldA{}
102 if err = proto.Unmarshal(data2, bluer); err != nil {
103 panic(err)
104 }
105 if err = older.VerboseEqual(bluer); err != nil {
106 t.Fatalf("%#v !VerboseProto %#v, since %v", older, bluer, err)
107 }
108
109 data3, err := proto.Marshal(bluer)
110 if err != nil {
111 panic(err)
112 }
113 purple := &A{}
114 if err = proto.Unmarshal(data3, purple); err != nil {
115 panic(err)
116 }
117 data4, err := proto.Marshal(purple)
118 if err != nil {
119 panic(err)
120 }
121 magenta := &OldA{}
122 if err := proto.Unmarshal(data4, magenta); err != nil {
123 panic(err)
124 }
125 if err := older.VerboseEqual(magenta); err != nil {
126 t.Fatalf("%#v !VerboseProto %#v, since %v", older, magenta, err)
127 }
128 }
129
130 func TestOldUToU(t *testing.T) {
131 popr := math_rand.New(math_rand.NewSource(time.Now().UnixNano()))
132 older := NewPopulatedOldU(popr, true)
133
134 older.Field1 = proto.String(randStringUnrecognized(popr))
135 data1, err := proto.Marshal(older)
136 if err != nil {
137 panic(err)
138 }
139
140 newer := &U{}
141 if err = proto.Unmarshal(data1, newer); err != nil {
142 panic(err)
143 }
144 data2, err := proto.Marshal(newer)
145 if err != nil {
146 panic(err)
147 }
148
149 older2 := &OldU{}
150 if err := proto.Unmarshal(data2, older2); err != nil {
151 panic(err)
152 }
153
154
155 if older2.Field1 != nil {
156 t.Fatalf("field must be lost, but it's not, older: %#v, older2: %#v", older, older2)
157 }
158
159
160 older2.Field1 = older.Field1
161 if err := older.VerboseEqual(older2); err != nil {
162 t.Fatalf("%#v !VerboseProto %#v, since %v", older, older2, err)
163 }
164 }
165
166 func TestOldUnoM(t *testing.T) {
167 popr := math_rand.New(math_rand.NewSource(time.Now().UnixNano()))
168 older := NewPopulatedOldUnoM(popr, true)
169
170 older.Field1 = proto.String(randStringUnrecognized(popr))
171 data1, err := proto.Marshal(older)
172 if err != nil {
173 panic(err)
174 }
175
176 newer := &UnoM{}
177 if err = proto.Unmarshal(data1, newer); err != nil {
178 panic(err)
179 }
180 data2, err := proto.Marshal(newer)
181 if err != nil {
182 panic(err)
183 }
184
185 older2 := &OldUnoM{}
186 if err := proto.Unmarshal(data2, older2); err != nil {
187 panic(err)
188 }
189
190
191 if older2.Field1 != nil {
192 t.Fatalf("field must be lost, but it's not, older: %#v, older2: %#v", older, older2)
193 }
194
195
196 older2.Field1 = older.Field1
197 if err := older.VerboseEqual(older2); err != nil {
198 t.Fatalf("%#v !VerboseProto %#v, since %v", older, older2, err)
199 }
200 }
201
View as plain text