mirror of
https://github.com/grafana/grafana.git
synced 2025-07-31 09:42:07 +08:00
52 lines
1.3 KiB
Go
52 lines
1.3 KiB
Go
package sqltemplate
|
|
|
|
import (
|
|
"reflect"
|
|
"slices"
|
|
"testing"
|
|
)
|
|
|
|
func TestScanDest_Into(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
var d scanDest
|
|
|
|
colName, err := d.Into(reflect.Value{}, "some field")
|
|
if colName != "" || err == nil || len(d.GetScanDest()) != 0 {
|
|
t.Fatalf("unexpected outcome, got colname %q, err: %v, scan dest: %#v",
|
|
colName, err, d)
|
|
}
|
|
|
|
data := struct {
|
|
X int
|
|
Y byte
|
|
}{}
|
|
dataVal := reflect.ValueOf(&data).Elem()
|
|
|
|
expectedColNames := []string{"some int", "and a byte"}
|
|
|
|
colName, err = d.Into(dataVal.FieldByName("X"), expectedColNames[0])
|
|
v := d.GetScanDest()
|
|
if err != nil || colName != expectedColNames[0] || len(v) != 1 || v[0] != &data.X {
|
|
t.Fatalf("unexpected outcome, got colname %q, err: %v, scan dest: %#v",
|
|
colName, err, d)
|
|
}
|
|
|
|
colName, err = d.Into(dataVal.FieldByName("Y"), expectedColNames[1])
|
|
v = d.GetScanDest()
|
|
if err != nil || colName != expectedColNames[1] || len(v) != 2 || v[1] != &data.Y {
|
|
t.Fatalf("unexpected outcome, got colname %q, err: %v, scan dest: %#v",
|
|
colName, err, d)
|
|
}
|
|
|
|
if gotColNames := d.GetColNames(); !slices.Equal(expectedColNames, gotColNames) {
|
|
t.Fatalf("unexpected column names: %v", gotColNames)
|
|
}
|
|
|
|
d.Reset()
|
|
v = d.GetScanDest()
|
|
if len(v) != 0 {
|
|
t.Fatalf("unexpected values after reset: %v", v)
|
|
}
|
|
}
|