You've already forked go-sqlmock
mirror of
https://github.com/DATA-DOG/go-sqlmock.git
synced 2025-06-14 23:55:00 +02:00
Add Column Metadata #152
This commit is contained in:
63
column_test.go
Normal file
63
column_test.go
Normal file
@ -0,0 +1,63 @@
|
||||
package sqlmock
|
||||
|
||||
import (
|
||||
"reflect"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
func TestColumn(t *testing.T) {
|
||||
now, _ := time.Parse(time.RFC3339, "2020-06-20T22:08:41Z")
|
||||
column1 := NewColumn("test").OfType("VARCHAR", "").Nullable(true).WithLength(100)
|
||||
column2 := NewColumn("number").OfType("DECIMAL", float64(0.0)).Nullable(false).WithPrecisionAndScale(10, 4)
|
||||
column3 := NewColumn("when").OfType("TIMESTAMP", now)
|
||||
|
||||
if column1.ScanType().Kind() != reflect.String {
|
||||
t.Errorf("string scanType mismatch: %v", column1.ScanType())
|
||||
}
|
||||
if column2.ScanType().Kind() != reflect.Float64 {
|
||||
t.Errorf("float scanType mismatch: %v", column2.ScanType())
|
||||
}
|
||||
if column3.ScanType() != reflect.TypeOf(time.Time{}) {
|
||||
t.Errorf("time scanType mismatch: %v", column3.ScanType())
|
||||
}
|
||||
|
||||
nullable, ok := column1.IsNullable()
|
||||
if !nullable || !ok {
|
||||
t.Errorf("'test' column should be nullable")
|
||||
}
|
||||
nullable, ok = column2.IsNullable()
|
||||
if nullable || !ok {
|
||||
t.Errorf("'number' column should not be nullable")
|
||||
}
|
||||
nullable, ok = column3.IsNullable()
|
||||
if ok {
|
||||
t.Errorf("'when' column nullability should be unknown")
|
||||
}
|
||||
|
||||
length, ok := column1.Length()
|
||||
if length != 100 || !ok {
|
||||
t.Errorf("'test' column wrong length")
|
||||
}
|
||||
length, ok = column2.Length()
|
||||
if ok {
|
||||
t.Errorf("'number' column is not of variable length type")
|
||||
}
|
||||
length, ok = column3.Length()
|
||||
if ok {
|
||||
t.Errorf("'when' column is not of variable length type")
|
||||
}
|
||||
|
||||
_, _, ok = column1.PrecisionScale()
|
||||
if ok {
|
||||
t.Errorf("'test' column not applicable")
|
||||
}
|
||||
precision, scale, ok := column2.PrecisionScale()
|
||||
if precision != 10 || scale != 4 || !ok {
|
||||
t.Errorf("'number' column not applicable")
|
||||
}
|
||||
_, _, ok = column3.PrecisionScale()
|
||||
if ok {
|
||||
t.Errorf("'when' column not applicable")
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user