@@ -9,113 +9,193 @@ import (
9
9
"github.com/pkg/errors"
10
10
)
11
11
12
- func TestInt (t * testing.T ) {
12
+ type equalTest struct {
13
+ arg Argument
14
+ equal []Argument
15
+ notEqual []Argument
16
+ }
17
+
18
+ func (e equalTest ) run (t * testing.T ) {
19
+ for i , eq := range e .equal {
20
+ if ! e .arg .Equal (eq ) {
21
+ t .Fatalf ("equals[%d] expected %s to equal %s" , i , e .arg , eq )
22
+ }
23
+ }
24
+ for i , ne := range e .notEqual {
25
+ if e .arg .Equal (ne ) {
26
+ t .Fatalf ("notEquals[%d] expected %s to not equal %s" , i , e .arg , ne )
27
+ }
28
+ }
29
+ }
30
+
31
+ func TestIntBytes (t * testing.T ) {
32
+ for _ , testcase := range []struct {
33
+ Int Int
34
+ Expected []byte
35
+ }{
36
+ {
37
+ Int : Int (1 ),
38
+ Expected : []byte {0 , 0 , 0 , 1 },
39
+ },
40
+ {
41
+ Int : Int (256 ),
42
+ Expected : []byte {0 , 0 , 1 , 0 },
43
+ },
44
+ } {
45
+ if expected , got := testcase .Expected , testcase .Int .Bytes (); ! bytes .Equal (expected , got ) {
46
+ t .Fatalf ("expected %q, got %q" , expected , got )
47
+ }
48
+ }
49
+ }
50
+
51
+ func TestIntEqual (t * testing.T ) {
52
+ equalTest {
53
+ arg : Int (0 ),
54
+ equal : []Argument {Int (0 )},
55
+ notEqual : []Argument {Int (2 ), String ("Foo" )},
56
+ }.run (t )
57
+ }
58
+
59
+ func TestIntReadInt32 (t * testing.T ) {
13
60
arg := Int (0 )
14
61
i , err := arg .ReadInt32 ()
15
62
if err != nil {
16
63
t .Fatal (err )
17
64
}
18
- if other := Int (0 ); ! arg .Equal (other ) {
19
- t .Fatalf ("expected %s to equal %s" , arg , other )
20
- }
21
- if other := Int (2 ); arg .Equal (other ) {
22
- t .Fatalf ("expected %s to not equal %s" , arg , other )
23
- }
24
- if other := String ("foo" ); arg .Equal (other ) {
25
- t .Fatalf ("expected %s to not equal %s" , arg , other )
26
- }
27
65
if expected , got := int32 (0 ), i ; expected != got {
28
66
t .Fatalf ("expected %d, got %d" , expected , got )
29
67
}
30
- if _ , err := arg .ReadFloat32 (); err != ErrInvalidTypeTag {
68
+ }
69
+
70
+ func TestIntReadOther (t * testing.T ) {
71
+ i := Int (0 )
72
+ if _ , err := i .ReadFloat32 (); err != ErrInvalidTypeTag {
31
73
t .Fatalf ("expected ErrInvalidTypeTag, got %+v" , err )
32
74
}
33
- if _ , err := arg .ReadBool (); err != ErrInvalidTypeTag {
75
+ if _ , err := i .ReadBool (); err != ErrInvalidTypeTag {
34
76
t .Fatalf ("expected ErrInvalidTypeTag, got %+v" , err )
35
77
}
36
- if _ , err := arg .ReadString (); err != ErrInvalidTypeTag {
78
+ if _ , err := i .ReadString (); err != ErrInvalidTypeTag {
37
79
t .Fatalf ("expected ErrInvalidTypeTag, got %+v" , err )
38
80
}
39
- if _ , err := arg .ReadBlob (); err != ErrInvalidTypeTag {
81
+ if _ , err := i .ReadBlob (); err != ErrInvalidTypeTag {
40
82
t .Fatalf ("expected ErrInvalidTypeTag, got %+v" , err )
41
83
}
84
+ }
85
+
86
+ func TestIntString (t * testing.T ) {
87
+ arg := Int (0 )
42
88
if expected , got := "Int(0)" , arg .String (); expected != got {
43
89
t .Fatalf ("expected %s to equal %s" , expected , got )
44
90
}
91
+ }
92
+
93
+ func TestIntTypetag (t * testing.T ) {
94
+ arg := Int (0 )
45
95
if expected , got := TypetagInt , arg .Typetag (); expected != got {
46
96
t .Fatalf ("expected %c, got %c" , expected , got )
47
97
}
98
+ }
99
+
100
+ func TestIntWriteTo (t * testing.T ) {
101
+ arg := Int (0 )
48
102
if _ , err := arg .WriteTo (ioutil .Discard ); err != nil {
49
103
t .Fatal (err )
50
104
}
51
105
}
52
106
53
- func TestFloat (t * testing.T ) {
54
- arg := Float (0 )
107
+ func TestFloatBytes (t * testing.T ) {
55
108
if expected , got := []byte {0x40 , 0x48 , 0xf5 , 0xc3 }, Float (3.14 ).Bytes (); ! bytes .Equal (expected , got ) {
56
109
t .Fatalf ("expected %x, got %x" , expected , got )
57
110
}
58
- if other := Float (0 ); ! arg .Equal (other ) {
59
- t .Fatalf ("expected %s to equal %s" , arg , other )
60
- }
61
- if other := Float (3.14 ); arg .Equal (other ) {
62
- t .Fatalf ("expected %s to not equal %s" , arg , other )
63
- }
64
- if other := String ("foo" ); arg .Equal (other ) {
65
- t .Fatalf ("expected %s to not equal %s" , arg , other )
66
- }
111
+ }
67
112
113
+ func TestFloatEqual (t * testing.T ) {
114
+ equalTest {
115
+ arg : Float (0 ),
116
+ equal : []Argument {Float (0 )},
117
+ notEqual : []Argument {Float (3.14 ), String ("foo" )},
118
+ }.run (t )
119
+ }
120
+
121
+ func TestFloatReadFloat (t * testing.T ) {
122
+ arg := Float (0 )
68
123
f , err := arg .ReadFloat32 ()
69
124
if err != nil {
70
125
t .Fatal (err )
71
126
}
72
127
if expected , got := float32 (0 ), f ; expected != got {
73
128
t .Fatalf ("expected %f, got %f" , expected , got )
74
129
}
130
+ }
75
131
76
- if _ , err := arg .ReadInt32 (); err != ErrInvalidTypeTag {
132
+ func TestFloatReadOther (t * testing.T ) {
133
+ f := Float (0 )
134
+ if _ , err := f .ReadInt32 (); err != ErrInvalidTypeTag {
77
135
t .Fatalf ("expected ErrInvalidTypeTag, got %+v" , err )
78
136
}
79
- if _ , err := arg .ReadBool (); err != ErrInvalidTypeTag {
137
+ if _ , err := f .ReadBool (); err != ErrInvalidTypeTag {
80
138
t .Fatalf ("expected ErrInvalidTypeTag, got %+v" , err )
81
139
}
82
- if _ , err := arg .ReadString (); err != ErrInvalidTypeTag {
140
+ if _ , err := f .ReadString (); err != ErrInvalidTypeTag {
83
141
t .Fatalf ("expected ErrInvalidTypeTag, got %+v" , err )
84
142
}
85
- if _ , err := arg .ReadBlob (); err != ErrInvalidTypeTag {
143
+ if _ , err := f .ReadBlob (); err != ErrInvalidTypeTag {
86
144
t .Fatalf ("expected ErrInvalidTypeTag, got %+v" , err )
87
145
}
146
+ }
147
+
148
+ func TestFloatString (t * testing.T ) {
149
+ arg := Float (0 )
88
150
if expected , got := "Float(0.000000)" , arg .String (); expected != got {
89
151
t .Fatalf ("expected %s to equal %s" , expected , got )
90
152
}
153
+ }
154
+
155
+ func TestFloatTypetag (t * testing.T ) {
156
+ arg := Float (0 )
91
157
if expected , got := TypetagFloat , arg .Typetag (); expected != got {
92
158
t .Fatalf ("expected %c, got %c" , expected , got )
93
159
}
160
+ }
161
+
162
+ func TestFloatWriteTo (t * testing.T ) {
163
+ arg := Float (0 )
94
164
if _ , err := arg .WriteTo (ioutil .Discard ); err != nil {
95
165
t .Fatal (err )
96
166
}
97
167
}
98
168
99
- func TestBool (t * testing.T ) {
169
+ func TestBoolBytes (t * testing.T ) {
100
170
arg := Bool (false )
101
171
if expected , got := []byte {}, arg .Bytes (); ! bytes .Equal (expected , got ) {
102
172
t .Fatalf ("expected %x, got %x" , expected , got )
103
173
}
104
- if other := Bool (false ); ! arg .Equal (other ) {
105
- t .Fatalf ("expected %s to equal %s" , arg , other )
106
- }
174
+ }
175
+
176
+ func TestBoolEqual (t * testing.T ) {
177
+ arg := Bool (false )
107
178
if other := Int (3 ); arg .Equal (other ) {
108
179
t .Fatalf ("expected %s to not equal %s" , arg , other )
109
180
}
181
+ if other := Bool (false ); ! arg .Equal (other ) {
182
+ t .Fatalf ("expected %s to equal %s" , arg , other )
183
+ }
184
+ }
110
185
186
+ func TestBoolReadBool (t * testing.T ) {
187
+ arg := Bool (false )
111
188
b , err := arg .ReadBool ()
112
189
if err != nil {
113
190
t .Fatal (err )
114
191
}
115
192
if expected , got := false , b ; expected != got {
116
193
t .Fatalf ("expected %t, got %t" , expected , got )
117
194
}
195
+ }
118
196
197
+ func TestBoolReadOther (t * testing.T ) {
198
+ arg := Bool (false )
119
199
if _ , err := arg .ReadInt32 (); err != ErrInvalidTypeTag {
120
200
t .Fatalf ("expected ErrInvalidTypeTag, got %+v" , err )
121
201
}
@@ -128,43 +208,63 @@ func TestBool(t *testing.T) {
128
208
if _ , err := arg .ReadBlob (); err != ErrInvalidTypeTag {
129
209
t .Fatalf ("expected ErrInvalidTypeTag, got %+v" , err )
130
210
}
211
+ }
212
+
213
+ func TestBoolString (t * testing.T ) {
214
+ arg := Bool (false )
131
215
if expected , got := "Bool(false)" , arg .String (); expected != got {
132
216
t .Fatalf ("expected %s to equal %s" , expected , got )
133
217
}
218
+ }
219
+
220
+ func TestBoolTypetag (t * testing.T ) {
221
+ arg := Bool (false )
134
222
if expected , got := TypetagFalse , arg .Typetag (); expected != got {
135
223
t .Fatalf ("expected %c, got %c" , expected , got )
136
224
}
137
-
138
225
argTrue := Bool (true )
139
226
if expected , got := TypetagTrue , argTrue .Typetag (); expected != got {
140
227
t .Fatalf ("expected %c, got %c" , expected , got )
141
228
}
229
+ }
142
230
231
+ func TestBoolWriteTo (t * testing.T ) {
232
+ arg := Bool (false )
143
233
if _ , err := arg .WriteTo (ioutil .Discard ); err != nil {
144
234
t .Fatal (err )
145
235
}
146
236
}
147
237
148
- func TestString (t * testing.T ) {
238
+ func TestStringBytes (t * testing.T ) {
149
239
arg := String ("foo" )
150
240
if expected , got := []byte {'f' , 'o' , 'o' , 0 }, arg .Bytes (); ! bytes .Equal (expected , got ) {
151
241
t .Fatalf ("expected %x, got %x" , expected , got )
152
242
}
243
+ }
244
+
245
+ func TestStringEqual (t * testing.T ) {
246
+ arg := String ("foo" )
153
247
if other := String ("foo" ); ! arg .Equal (other ) {
154
248
t .Fatalf ("expected %s to equal %s" , arg , other )
155
249
}
156
250
if other := Int (4 ); arg .Equal (other ) {
157
251
t .Fatalf ("expected %s to not equal %s" , arg , other )
158
252
}
253
+ }
159
254
255
+ func TestStringReadString (t * testing.T ) {
256
+ arg := String ("foo" )
160
257
s , err := arg .ReadString ()
161
258
if err != nil {
162
259
t .Fatal (err )
163
260
}
164
261
if expected , got := "foo" , s ; expected != got {
165
262
t .Fatalf ("expected %s, got %s" , expected , got )
166
263
}
264
+ }
167
265
266
+ func TestStringReadOther (t * testing.T ) {
267
+ arg := String ("foo" )
168
268
if _ , err := arg .ReadInt32 (); err != ErrInvalidTypeTag {
169
269
t .Fatalf ("expected ErrInvalidTypeTag, got %+v" , err )
170
270
}
@@ -177,23 +277,38 @@ func TestString(t *testing.T) {
177
277
if _ , err := arg .ReadBlob (); err != ErrInvalidTypeTag {
178
278
t .Fatalf ("expected ErrInvalidTypeTag, got %+v" , err )
179
279
}
280
+ }
281
+
282
+ func TestStringString (t * testing.T ) {
283
+ arg := String ("foo" )
180
284
if expected , got := "foo" , arg .String (); expected != got {
181
285
t .Fatalf ("expected %s to equal %s" , expected , got )
182
286
}
287
+ }
288
+
289
+ func TestStringTypetag (t * testing.T ) {
290
+ arg := String ("foo" )
183
291
if expected , got := TypetagString , arg .Typetag (); expected != got {
184
292
t .Fatalf ("expected %c, got %c" , expected , got )
185
293
}
294
+ }
295
+
296
+ func TestStringWriteTo (t * testing.T ) {
297
+ arg := String ("foo" )
186
298
if _ , err := arg .WriteTo (ioutil .Discard ); err != nil {
187
299
t .Fatal (err )
188
300
}
189
301
}
190
302
191
- func TestBlob (t * testing.T ) {
303
+ func TestBlobBytes (t * testing.T ) {
192
304
arg := Blob ([]byte {'f' , 'o' , 'o' })
193
- b , err := arg .ReadBlob ()
194
- if err != nil {
195
- t .Fatal (err )
305
+ if expected , got := []byte {0 , 0 , 0 , 3 , 'f' , 'o' , 'o' , 0 }, arg .Bytes (); ! bytes .Equal (expected , got ) {
306
+ t .Fatalf ("expected %q, got %q" , expected , got )
196
307
}
308
+ }
309
+
310
+ func TestBlobEqual (t * testing.T ) {
311
+ arg := Blob ([]byte {'f' , 'o' , 'o' })
197
312
if other := Blob ([]byte {'f' , 'o' , 'o' }); ! arg .Equal (other ) {
198
313
t .Fatalf ("expected %s to equal %s" , arg , other )
199
314
}
@@ -203,9 +318,21 @@ func TestBlob(t *testing.T) {
203
318
if other := String ("bar" ); arg .Equal (other ) {
204
319
t .Fatalf ("expected %s to not equal %s" , arg , other )
205
320
}
321
+ }
322
+
323
+ func TestBlobReadBlob (t * testing.T ) {
324
+ arg := Blob ([]byte {'f' , 'o' , 'o' })
325
+ b , err := arg .ReadBlob ()
326
+ if err != nil {
327
+ t .Fatal (err )
328
+ }
206
329
if expected , got := []byte {'f' , 'o' , 'o' }, b ; ! bytes .Equal (expected , got ) {
207
330
t .Fatalf ("expected %q, got %q" , expected , got )
208
331
}
332
+ }
333
+
334
+ func TestBlobReadOther (t * testing.T ) {
335
+ arg := Blob ([]byte {'f' , 'o' , 'o' })
209
336
if _ , err := arg .ReadInt32 (); err != ErrInvalidTypeTag {
210
337
t .Fatalf ("expected ErrInvalidTypeTag, got %+v" , err )
211
338
}
@@ -218,12 +345,28 @@ func TestBlob(t *testing.T) {
218
345
if _ , err := arg .ReadString (); err != ErrInvalidTypeTag {
219
346
t .Fatalf ("expected ErrInvalidTypeTag, got %+v" , err )
220
347
}
348
+ }
349
+
350
+ func TestBlobString (t * testing.T ) {
351
+ arg := Blob ([]byte {'f' , 'o' , 'o' })
352
+ b , err := arg .ReadBlob ()
353
+ if err != nil {
354
+ t .Fatal (err )
355
+ }
221
356
if expected , got := base64 .StdEncoding .EncodeToString (b ), arg .String (); expected != got {
222
357
t .Fatalf ("expected %s, got %s" , expected , got )
223
358
}
359
+ }
360
+
361
+ func TestBlobTypetag (t * testing.T ) {
362
+ arg := Blob ([]byte {'f' , 'o' , 'o' })
224
363
if expected , got := TypetagBlob , arg .Typetag (); expected != got {
225
364
t .Fatalf ("expected %c, got %c" , expected , got )
226
365
}
366
+ }
367
+
368
+ func TestBlobWriteTo (t * testing.T ) {
369
+ arg := Blob ([]byte {'f' , 'o' , 'o' })
227
370
if _ , err := arg .WriteTo (ioutil .Discard ); err != nil {
228
371
t .Fatal (err )
229
372
}
@@ -359,23 +502,3 @@ func TestReadArguments(t *testing.T) {
359
502
}
360
503
}
361
504
}
362
-
363
- func TestIntBytes (t * testing.T ) {
364
- for _ , testcase := range []struct {
365
- Int Int
366
- Expected []byte
367
- }{
368
- {
369
- Int : Int (1 ),
370
- Expected : []byte {0 , 0 , 0 , 1 },
371
- },
372
- {
373
- Int : Int (256 ),
374
- Expected : []byte {0 , 0 , 1 , 0 },
375
- },
376
- } {
377
- if expected , got := testcase .Expected , testcase .Int .Bytes (); ! bytes .Equal (expected , got ) {
378
- t .Fatalf ("expected %q, got %q" , expected , got )
379
- }
380
- }
381
- }
0 commit comments