-
Notifications
You must be signed in to change notification settings - Fork 15
/
value_converter_test.go
114 lines (110 loc) · 2.07 KB
/
value_converter_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
package csvq
import (
"database/sql/driver"
"reflect"
"testing"
"time"
)
var valueConverterConvertValueTests = []struct {
Value interface{}
Expect driver.Value
Error string
}{
{
Value: String{value: "abc"},
Expect: String{value: "abc"},
},
{
Value: nil,
Expect: Null{},
},
{
Value: "abc",
Expect: String{value: "abc"},
},
{
Value: int(123),
Expect: Integer{value: 123},
},
{
Value: int8(123),
Expect: Integer{value: 123},
},
{
Value: int16(123),
Expect: Integer{value: 123},
},
{
Value: int32(123),
Expect: Integer{value: 123},
},
{
Value: int64(123),
Expect: Integer{value: 123},
},
{
Value: uint(123),
Expect: Integer{value: 123},
},
{
Value: uint8(123),
Expect: Integer{value: 123},
},
{
Value: uint16(123),
Expect: Integer{value: 123},
},
{
Value: uint32(123),
Expect: Integer{value: 123},
},
{
Value: uint64(123),
Expect: Integer{value: 123},
},
{
Value: uint64(10000000000000000000),
Error: "uint64 values with high bit set are not supported",
},
{
Value: float32(1234),
Expect: Float{value: 1234},
},
{
Value: float64(1234),
Expect: Float{value: 1234},
},
{
Value: true,
Expect: Boolean{value: true},
},
{
Value: time.Date(2012, 2, 1, 12, 35, 43, 0, time.UTC),
Expect: Datetime{value: time.Date(2012, 2, 1, 12, 35, 43, 0, time.UTC)},
},
{
Value: []string{"a", "b", "c"},
Error: "unsupported type: []string",
},
}
func TestValueConverter_ConvertValue(t *testing.T) {
c := ValueConverter{}
for _, v := range valueConverterConvertValueTests {
result, err := c.ConvertValue(v.Value)
if err != nil {
if len(v.Error) < 1 {
t.Errorf("%v: unexpected error %q", v.Value, err)
} else if v.Error != "environment-dependent" && err.Error() != v.Error {
t.Errorf("%v: error %q, want error %q", v.Value, err.Error(), v.Error)
}
continue
}
if 0 < len(v.Error) {
t.Errorf("%v: no error, want error %q", v.Value, v.Error)
continue
}
if !reflect.DeepEqual(result, v.Expect) {
t.Errorf("%v: result = %v, want %v", v.Value, result, v.Expect)
}
}
}