4 "github.com/stretchr/testify/assert"
8 func TestReadFields(t *testing.T) {
20 name: "valid field data",
22 paramCount: []byte{0x00, 0x02},
24 0x00, 0x65, // ID: fieldData
25 0x00, 0x04, // Size: 2 bytes
26 0x01, 0x02, 0x03, 0x04, // Data
27 0x00, 0x66, // ID: fieldUserName
28 0x00, 0x02, // Size: 2 bytes
34 ID: []byte{0x00, 0x65},
35 FieldSize: []byte{0x00, 0x04},
36 Data: []byte{0x01, 0x02, 0x03, 0x04},
39 ID: []byte{0x00, 0x66},
40 FieldSize: []byte{0x00, 0x02},
41 Data: []byte{0x00, 0x01},
49 paramCount: []byte{0x00, 0x00},
56 name: "when field size does not match data length",
58 paramCount: []byte{0x00, 0x01},
60 0x00, 0x65, // ID: fieldData
61 0x00, 0x04, // Size: 4 bytes
62 0x01, 0x02, 0x03, // Data
69 name: "when field size of second field does not match data length",
71 paramCount: []byte{0x00, 0x01},
73 0x00, 0x65, // ID: fieldData
74 0x00, 0x02, // Size: 2 bytes
76 0x00, 0x65, // ID: fieldData
77 0x00, 0x04, // Size: 4 bytes
78 0x01, 0x02, 0x03, // Data
85 name: "when field data has extra bytes",
87 paramCount: []byte{0x00, 0x01},
89 0x00, 0x65, // ID: fieldData
90 0x00, 0x02, // Size: 2 bytes
91 0x01, 0x02, 0x03, // Data
98 for _, tt := range tests {
99 t.Run(tt.name, func(t *testing.T) {
100 got, err := ReadFields(tt.args.paramCount, tt.args.buf)
101 if (err != nil) != tt.wantErr {
102 t.Errorf("ReadFields() error = %v, wantErr %v", err, tt.wantErr)
106 if !assert.Equal(t, tt.want, got) {
107 t.Errorf("ReadFields() got = %v, want %v", got, tt.want)
113 func TestReadTransaction(t *testing.T) {
114 sampleTransaction := &Transaction{
117 Type: []byte{0x000, 0x93},
118 ID: []byte{0x000, 0x00, 0x00, 0x01},
119 ErrorCode: []byte{0x000, 0x00, 0x00, 0x00},
120 TotalSize: []byte{0x000, 0x00, 0x00, 0x08},
121 DataSize: []byte{0x000, 0x00, 0x00, 0x08},
122 ParamCount: []byte{0x00, 0x01},
125 ID: []byte{0x00, 0x01},
126 FieldSize: []byte{0x00, 0x02},
127 Data: []byte{0xff, 0xff},
143 name: "when buf contains all bytes for a single transaction",
145 buf: sampleTransaction.Payload(),
147 want: sampleTransaction,
148 want1: len(sampleTransaction.Payload()),
152 name: "when len(buf) is less than the length of the transaction",
154 buf: sampleTransaction.Payload()[:len(sampleTransaction.Payload()) - 1],
161 for _, tt := range tests {
162 t.Run(tt.name, func(t *testing.T) {
163 got, got1, err := ReadTransaction(tt.args.buf)
164 if (err != nil) != tt.wantErr {
165 t.Errorf("ReadTransaction() error = %v, wantErr %v", err, tt.wantErr)
168 if !assert.Equal(t, tt.want, got) {
169 t.Errorf("ReadTransaction() got = %v, want %v", got, tt.want)
171 if got1 != tt.want1 {
172 t.Errorf("ReadTransaction() got1 = %v, want %v", got1, tt.want1)