Use interace{} returning SelectValue(s)
Instead of SelectInt32, SelectAllString, etc. fixes #19
This commit is contained in:
+108
-1
@@ -132,7 +132,7 @@ func TestSelectFunc(t *testing.T) {
|
||||
var sum, rowCount int32
|
||||
onDataRow := func(r *DataRowReader) error {
|
||||
rowCount++
|
||||
sum += r.ReadInt32()
|
||||
sum += r.ReadValue().(int32)
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -201,3 +201,110 @@ func TestSelectRow(t *testing.T) {
|
||||
t.Fatal("Query failed")
|
||||
}
|
||||
}
|
||||
|
||||
func TestConnectionSelectValue(t *testing.T) {
|
||||
conn := getSharedConnection()
|
||||
var v interface{}
|
||||
var err error
|
||||
|
||||
v, err = conn.SelectValue("select null")
|
||||
if err != nil {
|
||||
t.Errorf("Unable to select null: %v", err)
|
||||
} else {
|
||||
if v != nil {
|
||||
t.Errorf("Expected: nil, recieved: %v", v)
|
||||
}
|
||||
}
|
||||
|
||||
v, err = conn.SelectValue("select 'foo'")
|
||||
if err != nil {
|
||||
t.Errorf("Unable to select string: %v", err)
|
||||
} else {
|
||||
s, ok := v.(string)
|
||||
if !(ok && s == "foo") {
|
||||
t.Errorf("Expected: foo, recieved: %#v", v)
|
||||
}
|
||||
}
|
||||
|
||||
v, err = conn.SelectValue("select true")
|
||||
if err != nil {
|
||||
t.Errorf("Unable to select bool: %#v", err)
|
||||
} else {
|
||||
s, ok := v.(bool)
|
||||
if !(ok && s == true) {
|
||||
t.Errorf("Expected true, received: %#v", v)
|
||||
}
|
||||
}
|
||||
|
||||
v, err = conn.SelectValue("select false")
|
||||
if err != nil {
|
||||
t.Errorf("Unable to select bool: %v", err)
|
||||
} else {
|
||||
s, ok := v.(bool)
|
||||
if !(ok && s == false) {
|
||||
t.Errorf("Expected false, received: %#v", v)
|
||||
}
|
||||
}
|
||||
|
||||
v, err = conn.SelectValue("select 1::int2")
|
||||
if err != nil {
|
||||
t.Errorf("Unable to select int2: %v", err)
|
||||
} else {
|
||||
s, ok := v.(int16)
|
||||
if !(ok && s == 1) {
|
||||
t.Errorf("Expected 1, received: %#v", v)
|
||||
}
|
||||
}
|
||||
|
||||
v, err = conn.SelectValue("select 1::int4")
|
||||
if err != nil {
|
||||
t.Errorf("Unable to select int4: %v", err)
|
||||
} else {
|
||||
s, ok := v.(int32)
|
||||
if !(ok && s == 1) {
|
||||
t.Errorf("Expected 1, received: %#v", v)
|
||||
}
|
||||
}
|
||||
|
||||
v, err = conn.SelectValue("select 1::int8")
|
||||
if err != nil {
|
||||
t.Errorf("Unable to select int8: %#v", err)
|
||||
} else {
|
||||
s, ok := v.(int64)
|
||||
if !(ok && s == 1) {
|
||||
t.Errorf("Expected 1, received: %#v", v)
|
||||
}
|
||||
}
|
||||
|
||||
v, err = conn.SelectValue("select 1.23::float4")
|
||||
if err != nil {
|
||||
t.Errorf("Unable to select float4: %#v", err)
|
||||
} else {
|
||||
s, ok := v.(float32)
|
||||
if !(ok && s == float32(1.23)) {
|
||||
t.Errorf("Expected 1.23, received: %#v", v)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestSelectValues(t *testing.T) {
|
||||
conn := getSharedConnection()
|
||||
var values []interface{}
|
||||
var err error
|
||||
|
||||
values, err = conn.SelectValues("select * from (values ('Matthew'), ('Mark'), ('Luke'), ('John')) t")
|
||||
if err != nil {
|
||||
t.Fatalf("Unable to select all strings: %v", err)
|
||||
}
|
||||
if values[0].(string) != "Matthew" || values[1].(string) != "Mark" || values[2].(string) != "Luke" || values[3].(string) != "John" {
|
||||
t.Error("Received incorrect strings")
|
||||
}
|
||||
|
||||
values, err = conn.SelectValues("select * from (values ('Matthew'), (null)) t")
|
||||
if err != nil {
|
||||
t.Fatalf("Unable to select values including a null: %v", err)
|
||||
}
|
||||
if values[0].(string) != "Matthew" || values[1] != nil {
|
||||
t.Error("Received incorrect strings")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user