perkeep/third_party/github.com/ziutek/mymysql/godrv/driver_test.go

97 lines
1.8 KiB
Go
Raw Normal View History

package godrv
import (
"database/sql"
"testing"
)
func init() {
Register("set names utf8")
}
func checkErr(t *testing.T, err error) {
if err != nil {
t.Fatalf("Error: %v", err)
}
}
func checkErrId(t *testing.T, err error, rid, eid int64) {
checkErr(t, err)
if rid != eid {
t.Fatal("res.LastInsertId() ==", rid, "but should be", eid)
}
}
func TestAll(t *testing.T) {
data := []string{"jeden", "dwa"}
db, err := sql.Open("mymysql", "test/testuser/TestPasswd9")
checkErr(t, err)
defer db.Close()
db.Exec("DROP TABLE go")
_, err = db.Exec(
`CREATE TABLE go (
id INT PRIMARY KEY AUTO_INCREMENT,
txt TEXT
) ENGINE=InnoDB`)
checkErr(t, err)
ins, err := db.Prepare("INSERT go SET txt=?")
checkErr(t, err)
tx, err := db.Begin()
checkErr(t, err)
res, err := ins.Exec(data[0])
checkErr(t, err)
id, err := res.LastInsertId()
checkErrId(t, err, id, 1)
res, err = ins.Exec(data[1])
checkErr(t, err)
id, err = res.LastInsertId()
checkErrId(t, err, id, 2)
checkErr(t, tx.Commit())
tx, err = db.Begin()
checkErr(t, err)
res, err = tx.Exec("INSERT go SET txt=?", "trzy")
checkErr(t, err)
id, err = res.LastInsertId()
checkErrId(t, err, id, 3)
checkErr(t, tx.Rollback())
rows, err := db.Query("SELECT * FROM go")
checkErr(t, err)
for rows.Next() {
var id int
var txt string
checkErr(t, rows.Scan(&id, &txt))
if id > len(data) {
t.Fatal("To many rows in table")
}
if data[id-1] != txt {
t.Fatalf("txt[%d] == '%s' != '%s'", id, txt, data[id-1])
}
}
sql := "select sum(41) as test"
row := db.QueryRow(sql)
var vi int64
checkErr(t, row.Scan(&vi))
if vi != 41 {
t.Fatal(sql)
}
sql = "select sum(4123232323232) as test"
row = db.QueryRow(sql)
var vf float64
checkErr(t, row.Scan(&vf))
if vf != 4123232323232 {
t.Fatal(sql)
}
}