forked from xelabs/go-mysqlstack
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrows_test.go
More file actions
90 lines (78 loc) · 1.76 KB
/
rows_test.go
File metadata and controls
90 lines (78 loc) · 1.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
/*
* go-mysqlstack
* xelabs.org
*
* Copyright (c) XeLabs
* GPL License
*
*/
package driver
import (
"testing"
"github.com/stretchr/testify/assert"
querypb "github.com/xelabs/go-mysqlstack/sqlparser/depends/query"
"github.com/xelabs/go-mysqlstack/sqlparser/depends/sqltypes"
"github.com/xelabs/go-mysqlstack/xlog"
)
func TestRows(t *testing.T) {
result1 := &sqltypes.Result{
Fields: []*querypb.Field{
{
Name: "id",
Type: querypb.Type_INT32,
},
{
Name: "name",
Type: querypb.Type_VARCHAR,
},
},
Rows: [][]sqltypes.Value{
{
sqltypes.MakeTrusted(querypb.Type_INT32, []byte("10")),
sqltypes.MakeTrusted(querypb.Type_VARCHAR, []byte("nice name")),
},
{
sqltypes.MakeTrusted(querypb.Type_INT32, []byte("20")),
sqltypes.NULL,
},
},
}
result2 := &sqltypes.Result{
RowsAffected: 123,
InsertID: 123456789,
}
log := xlog.NewStdLog(xlog.Level(xlog.ERROR))
th := NewTestHandler(log)
svr, err := MockMysqlServer(log, th)
assert.Nil(t, err)
defer svr.Close()
address := svr.Addr()
// query
{
client, err := NewConn("mock", "mock", address, "test", "")
assert.Nil(t, err)
defer client.Close()
th.AddQuery("SELECT2", result2)
rows, err := client.Query("SELECT2")
assert.Nil(t, err)
assert.Equal(t, uint64(123), rows.RowsAffected())
assert.Equal(t, uint64(123456789), rows.LastInsertID())
}
// query
{
client, err := NewConn("mock", "mock", address, "test", "")
assert.Nil(t, err)
defer client.Close()
th.AddQuery("SELECT1", result1)
rows, err := client.Query("SELECT1")
assert.Nil(t, err)
assert.Equal(t, result1.Fields, rows.Fields())
for rows.Next() {
_ = rows.Datas()
_, _ = rows.RowValues()
}
want := 13
got := int(rows.Bytes())
assert.Equal(t, want, got)
}
}