Skip to content

Commit 21883cd

Browse files
committed
unit test WriteValue for OK vs Resultset
1 parent ef77e5a commit 21883cd

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

server/resp_test.go

+33
Original file line numberDiff line numberDiff line change
@@ -228,3 +228,36 @@ func TestConnWriteFieldValues(t *testing.T) {
228228
// EOF
229229
require.Equal(t, []byte{1, 0, 0, 4, mysql.EOF_HEADER}, clientConn.WriteBuffered[43:])
230230
}
231+
232+
func TestWriteValue(t *testing.T) {
233+
clientConn := &mockconn.MockConn{MultiWrite: true}
234+
conn := &Conn{Conn: packet.NewConn(clientConn)}
235+
236+
// simple OK
237+
err := conn.WriteValue(mysql.NewResultReserveResultset(0))
238+
require.NoError(t, err)
239+
expected := []byte{3, 0, 0, 0, mysql.OK_HEADER, 0, 0}
240+
require.Equal(t, expected, clientConn.WriteBuffered)
241+
242+
// reset write buffer
243+
clientConn.WriteBuffered = []byte{}
244+
245+
// resultset with no rows
246+
rs := mysql.NewResultReserveResultset(1)
247+
rs.Fields = []*mysql.Field{{Name: []byte("a")}}
248+
err = conn.WriteValue(rs)
249+
require.NoError(t, err)
250+
expected = []byte{1, 0, 0, 1, mysql.MORE_DATE_HEADER}
251+
require.Equal(t, expected, clientConn.WriteBuffered[:5])
252+
253+
// reset write buffer
254+
clientConn.WriteBuffered = []byte{}
255+
256+
// resultset with rows
257+
rs.Fields = []*mysql.Field{{Name: []byte("a")}}
258+
rs.RowDatas = []mysql.RowData{[]byte{1, 2, 3}}
259+
err = conn.WriteValue(rs)
260+
require.NoError(t, err)
261+
expected = []byte{1, 0, 0, 5, mysql.MORE_DATE_HEADER}
262+
require.Equal(t, expected, clientConn.WriteBuffered[:5])
263+
}

0 commit comments

Comments
 (0)