1
2
3
4 package filedotname
5
6 import (
7 fmt "fmt"
8 _ "github.com/gogo/protobuf/gogoproto"
9 github_com_gogo_protobuf_jsonpb "github.com/gogo/protobuf/jsonpb"
10 github_com_gogo_protobuf_proto "github.com/gogo/protobuf/proto"
11 proto "github.com/gogo/protobuf/proto"
12 go_parser "go/parser"
13 math "math"
14 math_rand "math/rand"
15 testing "testing"
16 time "time"
17 )
18
19
20 var _ = proto.Marshal
21 var _ = fmt.Errorf
22 var _ = math.Inf
23
24 func TestMProto(t *testing.T) {
25 seed := time.Now().UnixNano()
26 popr := math_rand.New(math_rand.NewSource(seed))
27 p := NewPopulatedM(popr, false)
28 dAtA, err := github_com_gogo_protobuf_proto.Marshal(p)
29 if err != nil {
30 t.Fatalf("seed = %d, err = %v", seed, err)
31 }
32 msg := &M{}
33 if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil {
34 t.Fatalf("seed = %d, err = %v", seed, err)
35 }
36 littlefuzz := make([]byte, len(dAtA))
37 copy(littlefuzz, dAtA)
38 for i := range dAtA {
39 dAtA[i] = byte(popr.Intn(256))
40 }
41 if err := p.VerboseEqual(msg); err != nil {
42 t.Fatalf("seed = %d, %#v !VerboseProto %#v, since %v", seed, msg, p, err)
43 }
44 if !p.Equal(msg) {
45 t.Fatalf("seed = %d, %#v !Proto %#v", seed, msg, p)
46 }
47 if len(littlefuzz) > 0 {
48 fuzzamount := 100
49 for i := 0; i < fuzzamount; i++ {
50 littlefuzz[popr.Intn(len(littlefuzz))] = byte(popr.Intn(256))
51 littlefuzz = append(littlefuzz, byte(popr.Intn(256)))
52 }
53
54 _ = github_com_gogo_protobuf_proto.Unmarshal(littlefuzz, msg)
55 }
56 }
57
58 func BenchmarkMProtoMarshal(b *testing.B) {
59 popr := math_rand.New(math_rand.NewSource(616))
60 total := 0
61 pops := make([]*M, 10000)
62 for i := 0; i < 10000; i++ {
63 pops[i] = NewPopulatedM(popr, false)
64 }
65 b.ResetTimer()
66 for i := 0; i < b.N; i++ {
67 dAtA, err := github_com_gogo_protobuf_proto.Marshal(pops[i%10000])
68 if err != nil {
69 panic(err)
70 }
71 total += len(dAtA)
72 }
73 b.SetBytes(int64(total / b.N))
74 }
75
76 func BenchmarkMProtoUnmarshal(b *testing.B) {
77 popr := math_rand.New(math_rand.NewSource(616))
78 total := 0
79 datas := make([][]byte, 10000)
80 for i := 0; i < 10000; i++ {
81 dAtA, err := github_com_gogo_protobuf_proto.Marshal(NewPopulatedM(popr, false))
82 if err != nil {
83 panic(err)
84 }
85 datas[i] = dAtA
86 }
87 msg := &M{}
88 b.ResetTimer()
89 for i := 0; i < b.N; i++ {
90 total += len(datas[i%10000])
91 if err := github_com_gogo_protobuf_proto.Unmarshal(datas[i%10000], msg); err != nil {
92 panic(err)
93 }
94 }
95 b.SetBytes(int64(total / b.N))
96 }
97
98 func TestMJSON(t *testing.T) {
99 seed := time.Now().UnixNano()
100 popr := math_rand.New(math_rand.NewSource(seed))
101 p := NewPopulatedM(popr, true)
102 marshaler := github_com_gogo_protobuf_jsonpb.Marshaler{}
103 jsondata, err := marshaler.MarshalToString(p)
104 if err != nil {
105 t.Fatalf("seed = %d, err = %v", seed, err)
106 }
107 msg := &M{}
108 err = github_com_gogo_protobuf_jsonpb.UnmarshalString(jsondata, msg)
109 if err != nil {
110 t.Fatalf("seed = %d, err = %v", seed, err)
111 }
112 if err := p.VerboseEqual(msg); err != nil {
113 t.Fatalf("seed = %d, %#v !VerboseProto %#v, since %v", seed, msg, p, err)
114 }
115 if !p.Equal(msg) {
116 t.Fatalf("seed = %d, %#v !Json Equal %#v", seed, msg, p)
117 }
118 }
119 func TestMProtoText(t *testing.T) {
120 seed := time.Now().UnixNano()
121 popr := math_rand.New(math_rand.NewSource(seed))
122 p := NewPopulatedM(popr, true)
123 dAtA := github_com_gogo_protobuf_proto.MarshalTextString(p)
124 msg := &M{}
125 if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil {
126 t.Fatalf("seed = %d, err = %v", seed, err)
127 }
128 if err := p.VerboseEqual(msg); err != nil {
129 t.Fatalf("seed = %d, %#v !VerboseProto %#v, since %v", seed, msg, p, err)
130 }
131 if !p.Equal(msg) {
132 t.Fatalf("seed = %d, %#v !Proto %#v", seed, msg, p)
133 }
134 }
135
136 func TestMProtoCompactText(t *testing.T) {
137 seed := time.Now().UnixNano()
138 popr := math_rand.New(math_rand.NewSource(seed))
139 p := NewPopulatedM(popr, true)
140 dAtA := github_com_gogo_protobuf_proto.CompactTextString(p)
141 msg := &M{}
142 if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil {
143 t.Fatalf("seed = %d, err = %v", seed, err)
144 }
145 if err := p.VerboseEqual(msg); err != nil {
146 t.Fatalf("seed = %d, %#v !VerboseProto %#v, since %v", seed, msg, p, err)
147 }
148 if !p.Equal(msg) {
149 t.Fatalf("seed = %d, %#v !Proto %#v", seed, msg, p)
150 }
151 }
152
153 func TestFileDotDescription(t *testing.T) {
154 FileDotDescription()
155 }
156 func TestMVerboseEqual(t *testing.T) {
157 popr := math_rand.New(math_rand.NewSource(time.Now().UnixNano()))
158 p := NewPopulatedM(popr, false)
159 dAtA, err := github_com_gogo_protobuf_proto.Marshal(p)
160 if err != nil {
161 panic(err)
162 }
163 msg := &M{}
164 if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil {
165 panic(err)
166 }
167 if err := p.VerboseEqual(msg); err != nil {
168 t.Fatalf("%#v !VerboseEqual %#v, since %v", msg, p, err)
169 }
170 }
171 func TestMFace(t *testing.T) {
172 popr := math_rand.New(math_rand.NewSource(time.Now().UnixNano()))
173 p := NewPopulatedM(popr, true)
174 msg := p.TestProto()
175 if !p.Equal(msg) {
176 t.Fatalf("%#v !Face Equal %#v", msg, p)
177 }
178 }
179 func TestMGoString(t *testing.T) {
180 popr := math_rand.New(math_rand.NewSource(time.Now().UnixNano()))
181 p := NewPopulatedM(popr, false)
182 s1 := p.GoString()
183 s2 := fmt.Sprintf("%#v", p)
184 if s1 != s2 {
185 t.Fatalf("GoString want %v got %v", s1, s2)
186 }
187 _, err := go_parser.ParseExpr(s1)
188 if err != nil {
189 t.Fatal(err)
190 }
191 }
192 func TestMSize(t *testing.T) {
193 seed := time.Now().UnixNano()
194 popr := math_rand.New(math_rand.NewSource(seed))
195 p := NewPopulatedM(popr, true)
196 size2 := github_com_gogo_protobuf_proto.Size(p)
197 dAtA, err := github_com_gogo_protobuf_proto.Marshal(p)
198 if err != nil {
199 t.Fatalf("seed = %d, err = %v", seed, err)
200 }
201 size := p.Size()
202 if len(dAtA) != size {
203 t.Errorf("seed = %d, size %v != marshalled size %v", seed, size, len(dAtA))
204 }
205 if size2 != size {
206 t.Errorf("seed = %d, size %v != before marshal proto.Size %v", seed, size, size2)
207 }
208 size3 := github_com_gogo_protobuf_proto.Size(p)
209 if size3 != size {
210 t.Errorf("seed = %d, size %v != after marshal proto.Size %v", seed, size, size3)
211 }
212 }
213
214 func BenchmarkMSize(b *testing.B) {
215 popr := math_rand.New(math_rand.NewSource(616))
216 total := 0
217 pops := make([]*M, 1000)
218 for i := 0; i < 1000; i++ {
219 pops[i] = NewPopulatedM(popr, false)
220 }
221 b.ResetTimer()
222 for i := 0; i < b.N; i++ {
223 total += pops[i%1000].Size()
224 }
225 b.SetBytes(int64(total / b.N))
226 }
227
228 func TestMStringer(t *testing.T) {
229 popr := math_rand.New(math_rand.NewSource(time.Now().UnixNano()))
230 p := NewPopulatedM(popr, false)
231 s1 := p.String()
232 s2 := fmt.Sprintf("%v", p)
233 if s1 != s2 {
234 t.Fatalf("String want %v got %v", s1, s2)
235 }
236 }
237
238
239
View as plain text