gorqlite/query_test.go

145 lines
3.2 KiB
Go
Raw Permalink Normal View History

2016-09-01 16:47:49 +00:00
package gorqlite
import "testing"
2017-07-15 20:50:10 +00:00
func TestQueryOne(t *testing.T) {
2016-09-01 16:47:49 +00:00
var wr WriteResult
var qr QueryResult
var wResults []WriteResult
var qResults []QueryResult
var err error
t.Logf("trying Open")
conn, err := Open(testUrl())
2017-07-15 20:50:10 +00:00
if err != nil {
2016-09-01 16:47:49 +00:00
t.Logf("--> FATAL")
t.Fatal()
}
t.Logf("trying WriteOne DROP")
wr, err = conn.WriteOne("DROP TABLE IF EXISTS " + testTableName())
2017-07-15 20:50:10 +00:00
if err != nil {
2016-09-01 16:47:49 +00:00
t.Logf("--> FATAL")
t.Fatal()
}
t.Logf("trying WriteOne CREATE")
wr, err = conn.WriteOne("CREATE TABLE " + testTableName() + " (id integer, name text)")
2017-07-15 20:50:10 +00:00
if err != nil {
2016-09-01 16:47:49 +00:00
t.Logf("--> FATAL")
t.Fatal()
}
t.Logf("trying Write INSERT")
2017-07-15 20:50:10 +00:00
s := make([]string, 0)
s = append(s, "INSERT INTO "+testTableName()+" (id, name) VALUES ( 1, 'Romulan' )")
s = append(s, "INSERT INTO "+testTableName()+" (id, name) VALUES ( 2, 'Vulcan' )")
s = append(s, "INSERT INTO "+testTableName()+" (id, name) VALUES ( 3, 'Klingon' )")
s = append(s, "INSERT INTO "+testTableName()+" (id, name) VALUES ( 4, 'Ferengi' )")
s = append(s, "INSERT INTO "+testTableName()+" (id, name) VALUES ( 5, 'Cardassian' )")
2016-09-01 16:47:49 +00:00
wResults, err = conn.Write(s)
2017-07-15 20:50:10 +00:00
if err != nil {
2016-09-01 16:47:49 +00:00
t.Logf("--> FATAL")
t.Fatal()
}
t.Logf("trying QueryOne")
qr, err = conn.QueryOne("SELECT name FROM " + testTableName() + " WHERE id > 3")
2017-07-15 20:50:10 +00:00
if err != nil {
2016-09-01 16:47:49 +00:00
t.Logf("--> FAILED")
t.Fail()
}
t.Logf("trying Next()")
na := qr.Next()
2017-07-15 20:50:10 +00:00
if na != true {
2016-09-01 16:47:49 +00:00
t.Logf("--> FAILED")
t.Fail()
}
2017-07-15 20:50:10 +00:00
2016-09-01 16:47:49 +00:00
t.Logf("trying Map()")
r, err := qr.Map()
2017-07-15 20:50:10 +00:00
if err != nil {
2016-09-01 16:47:49 +00:00
t.Logf("--> FAILED")
t.Fail()
}
2017-07-15 20:50:10 +00:00
if r["name"].(string) != "Ferengi" {
2016-09-01 16:47:49 +00:00
t.Logf("--> FAILED")
t.Fail()
}
t.Logf("trying Scan(), also float64->int64 in Scan()")
var id int64
var name string
2017-07-15 20:50:10 +00:00
err = qr.Scan(&id, &name)
if err == nil {
t.Logf("--> FAILED (%s)", err.Error())
2016-09-01 16:47:49 +00:00
t.Fail()
}
err = qr.Scan(&name)
2017-07-15 20:50:10 +00:00
if err != nil {
t.Logf("--> FAILED (%s)", err.Error())
2016-09-01 16:47:49 +00:00
t.Fail()
}
2017-07-15 20:50:10 +00:00
if name != "Ferengi" {
t.Logf("--> FAILED, name should be 'Ferengi' but it's '%s'", name)
2016-09-01 16:47:49 +00:00
t.Fail()
}
qr.Next()
err = qr.Scan(&name)
2017-07-15 20:50:10 +00:00
if name != "Cardassian" {
2016-09-01 16:47:49 +00:00
t.Logf("--> FAILED")
t.Fail()
}
t.Logf("trying WriteOne DROP")
wr, err = conn.WriteOne("DROP TABLE IF EXISTS " + testTableName() + "")
2017-07-15 20:50:10 +00:00
if err != nil {
2016-09-01 16:47:49 +00:00
t.Logf("--> FAILED")
t.Fail()
}
2017-07-15 20:50:10 +00:00
2016-09-01 16:47:49 +00:00
t.Logf("trying Close")
conn.Close()
t.Logf("trying WriteOne after Close")
wr, err = conn.WriteOne("DROP TABLE IF EXISTS " + testTableName() + "")
2017-07-15 20:50:10 +00:00
if err == nil {
2016-09-01 16:47:49 +00:00
t.Logf("--> FAILED")
t.Fail()
}
_ = wr
t.Logf("trying Write after Close")
2017-07-15 20:50:10 +00:00
t1 := make([]string, 0)
t1 = append(t1, "DROP TABLE IF EXISTS "+testTableName()+"")
t1 = append(t1, "DROP TABLE IF EXISTS "+testTableName()+"")
2016-09-01 16:47:49 +00:00
wResults, err = conn.Write(t1)
2017-07-15 20:50:10 +00:00
if err == nil {
2016-09-01 16:47:49 +00:00
t.Logf("--> FAILED")
t.Fail()
}
_ = wResults
t.Logf("trying QueryOne after Close")
qr, err = conn.QueryOne("SELECT id FROM " + testTableName() + "")
2017-07-15 20:50:10 +00:00
if err == nil {
2016-09-01 16:47:49 +00:00
t.Logf("--> FAILED")
t.Fail()
}
_ = qr
t.Logf("trying Query after Close")
2017-07-15 20:50:10 +00:00
t2 := make([]string, 0)
t2 = append(t2, "SELECT id FROM "+testTableName()+"")
t2 = append(t2, "SELECT name FROM "+testTableName()+"")
t2 = append(t2, "SELECT id,name FROM "+testTableName()+"")
2016-09-01 16:47:49 +00:00
qResults, err = conn.Query(t2)
2017-07-15 20:50:10 +00:00
if err == nil {
2016-09-01 16:47:49 +00:00
t.Logf("--> FAILED")
t.Fail()
}
_ = qResults
}