]> git.r.bdr.sh - rbdr/mobius/blame - hotline/field_test.go
Fix broken io.Reader implementations
[rbdr/mobius] / hotline / field_test.go
CommitLineData
6988a057
JH
1package hotline
2
95159e55
JH
3import (
4 "fmt"
5 "github.com/stretchr/testify/assert"
6 "testing"
7)
6988a057
JH
8
9func TestHello(t *testing.T) {
10
11}
95159e55
JH
12
13func 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}