]>
Commit | Line | Data |
---|---|---|
6988a057 JH |
1 | package hotline |
2 | ||
95159e55 JH |
3 | import ( |
4 | "fmt" | |
5 | "github.com/stretchr/testify/assert" | |
6 | "testing" | |
7 | ) | |
6988a057 JH |
8 | |
9 | func TestHello(t *testing.T) { | |
10 | ||
11 | } | |
95159e55 JH |
12 | |
13 | func Test_fieldScanner(t *testing.T) { | |
14 | type args struct { | |
15 | data []byte | |
16 | in1 bool | |
17 | } | |
18 | tests := []struct { | |
19 | name string | |
20 | args args | |
21 | wantAdvance int | |
22 | wantToken []byte | |
23 | wantErr assert.ErrorAssertionFunc | |
24 | }{ | |
25 | { | |
26 | name: "when too few bytes are provided to read the field size", | |
27 | args: args{ | |
28 | data: []byte{}, | |
29 | in1: false, | |
30 | }, | |
31 | wantAdvance: 0, | |
32 | wantToken: []byte(nil), | |
33 | wantErr: assert.NoError, | |
34 | }, | |
35 | { | |
36 | name: "when too few bytes are provided to read the full payload", | |
37 | args: args{ | |
38 | data: []byte{ | |
39 | 0, 1, | |
40 | 0, 4, | |
41 | 0, 0, | |
42 | }, | |
43 | in1: false, | |
44 | }, | |
45 | wantAdvance: 0, | |
46 | wantToken: []byte(nil), | |
47 | wantErr: assert.NoError, | |
48 | }, | |
49 | { | |
50 | name: "when a full field is provided", | |
51 | args: args{ | |
52 | data: []byte{ | |
53 | 0, 1, | |
54 | 0, 4, | |
55 | 0, 0, | |
56 | 0, 0, | |
57 | }, | |
58 | in1: false, | |
59 | }, | |
60 | wantAdvance: 8, | |
61 | wantToken: []byte{ | |
62 | 0, 1, | |
63 | 0, 4, | |
64 | 0, 0, | |
65 | 0, 0, | |
66 | }, | |
67 | wantErr: assert.NoError, | |
68 | }, | |
69 | { | |
70 | name: "when a full field plus extra bytes are provided", | |
71 | args: args{ | |
72 | data: []byte{ | |
73 | 0, 1, | |
74 | 0, 4, | |
75 | 0, 0, | |
76 | 0, 0, | |
77 | 1, 1, | |
78 | }, | |
79 | in1: false, | |
80 | }, | |
81 | wantAdvance: 8, | |
82 | wantToken: []byte{ | |
83 | 0, 1, | |
84 | 0, 4, | |
85 | 0, 0, | |
86 | 0, 0, | |
87 | }, | |
88 | wantErr: assert.NoError, | |
89 | }, | |
90 | } | |
91 | for _, tt := range tests { | |
92 | t.Run(tt.name, func(t *testing.T) { | |
93 | gotAdvance, gotToken, err := fieldScanner(tt.args.data, tt.args.in1) | |
94 | if !tt.wantErr(t, err, fmt.Sprintf("fieldScanner(%v, %v)", tt.args.data, tt.args.in1)) { | |
95 | return | |
96 | } | |
97 | assert.Equalf(t, tt.wantAdvance, gotAdvance, "fieldScanner(%v, %v)", tt.args.data, tt.args.in1) | |
98 | assert.Equalf(t, tt.wantToken, gotToken, "fieldScanner(%v, %v)", tt.args.data, tt.args.in1) | |
99 | }) | |
100 | } | |
101 | } |