@@ -29,6 +29,7 @@ func TestDynamicFrame(t *testing.T) {
29
29
itr : mock ,
30
30
}
31
31
32
+ _ , converters = removeDynamicConverter (converters )
32
33
frame , err := frameDynamic (rows , 100 , types , converters )
33
34
assert .Nil (t , err )
34
35
assert .NotNil (t , frame )
@@ -64,3 +65,42 @@ func (rs *MockRows) Scan(dest ...interface{}) error {
64
65
}
65
66
return nil
66
67
}
68
+
69
+ func TestDynamicFrameShouldNotPanic (t * testing.T ) {
70
+ kind := & sql.ColumnType {}
71
+ types := []* sql.ColumnType {}
72
+ types = append (types , kind )
73
+ converters := []Converter {dynamic ()}
74
+ data := [][]interface {}{}
75
+ mockRow := []interface {}{}
76
+ val := string ("foo" )
77
+ mockRow = append (mockRow , val )
78
+ data = append (data , mockRow )
79
+ mock := & MockRows {
80
+ data : data ,
81
+ index : - 1 ,
82
+ }
83
+ rows := Rows {
84
+ itr : mock ,
85
+ }
86
+
87
+ _ , converters = removeDynamicConverter (converters )
88
+ frame , err := frameDynamic (rows , 100 , types , converters )
89
+ assert .Nil (t , err )
90
+ assert .NotNil (t , frame )
91
+
92
+ assert .Equal (t , 1 , frame .Rows ())
93
+
94
+ actual := frame .Fields [0 ].At (0 ).(* string )
95
+ assert .Equal (t , val , * actual )
96
+ }
97
+
98
+ // dynamic is the converter that uses the results to determine data types
99
+ func dynamic () Converter {
100
+ kind := "dynamic"
101
+ return Converter {
102
+ Name : kind ,
103
+ InputTypeName : kind ,
104
+ Dynamic : true ,
105
+ }
106
+ }
0 commit comments