@@ -26,25 +26,28 @@ import (
2626
2727func TestIfNull (t * testing.T ) {
2828 testCases := []struct {
29- expression interface {}
30- value interface {}
31- expected interface {}
29+ expression interface {}
30+ expressionType sql.Type
31+ value interface {}
32+ valueType sql.Type
33+ expected interface {}
34+ expectedType sql.Type
3235 }{
33- {"foo" , "bar" , "foo" },
34- {"foo" , "foo" , "foo" },
35- {nil , "foo" , "foo" },
36- {"foo" , nil , "foo" },
37- {nil , nil , nil },
38- {"" , nil , "" },
36+ {"foo" , types .LongText , "bar" , types .LongText , "foo" , types .LongText },
37+ {"foo" , types .LongText , "foo" , types .LongText , "foo" , types .LongText },
38+ {nil , types .LongText , "foo" , types .LongText , "foo" , types .LongText },
39+ {"foo" , types .LongText , nil , types .LongText , "foo" , types .LongText },
40+ {nil , types .LongText , nil , types .LongText , nil , types .LongText },
41+ {"" , types .LongText , nil , types .LongText , "" , types .LongText },
42+ {nil , types .Int8 , 128 , types .Int64 , int64 (128 ), types .Int64 },
3943 }
4044
41- f := NewIfNull (
42- expression .NewGetField (0 , types .LongText , "expression" , true ),
43- expression .NewGetField (1 , types .LongText , "value" , true ),
44- )
45- require .Equal (t , types .LongText , f .Type ())
46-
4745 for _ , tc := range testCases {
46+ f := NewIfNull (
47+ expression .NewGetField (0 , tc .expressionType , "expression" , true ),
48+ expression .NewGetField (1 , tc .valueType , "value" , true ),
49+ )
50+ require .Equal (t , tc .expectedType , f .Type ())
4851 v , err := f .Eval (sql .NewEmptyContext (), sql .NewRow (tc .expression , tc .value ))
4952 require .NoError (t , err )
5053 require .Equal (t , tc .expected , v )
0 commit comments