-
Notifications
You must be signed in to change notification settings - Fork 1
/
client_test.go
132 lines (127 loc) · 2.64 KB
/
client_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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
package csvtogo
import (
"encoding/csv"
"errors"
"fmt"
"os"
"strings"
"testing"
)
func Test_NewClient(t *testing.T) {
type Student struct {
Firstname string
}
tt := []struct {
name string
ops []*Options
file string
genFile func()
expectedR bool
expectedE error
}{
{
name: "should return valid result when options is nil",
ops: nil,
file: "./new_client_test.csv",
genFile: func() {
f, err := os.Create("./new_client_test.csv")
if err != nil {
panic(err)
}
w := csv.NewWriter(f)
_ = w.Write([]string{"Firstname"})
_ = w.Write([]string{strings.Repeat("e", 5)})
w.Flush()
_ = f.Close()
},
expectedR: true,
expectedE: nil,
},
{
name: "should return valid result when options is not nil",
ops: []*Options{
{
SkipHeader: true,
Comma: 'b',
},
},
file: "./new_client_test.csv",
genFile: func() {
f, err := os.Create("./new_client_test.csv")
if err != nil {
panic(err)
}
w := csv.NewWriter(f)
_ = w.Write([]string{"Firstname"})
_ = w.Write([]string{strings.Repeat("e", 5)})
w.Flush()
_ = f.Close()
},
expectedR: true,
expectedE: nil,
},
{
name: "should return nil and err when file is not found",
ops: []*Options{
{
SkipHeader: true,
Comma: 'b',
},
},
file: "./new_client_test.csv",
genFile: nil,
expectedR: false,
expectedE: errors.New("open ./new_client_test.csv: no such file or directory"),
},
}
for _, tc := range tt {
t.Run(tc.name, func(t *testing.T) {
if tc.genFile != nil {
tc.genFile()
}
r, e := NewClient[Student](tc.file, tc.ops...)
if fmt.Sprintf("%v", tc.expectedE) != fmt.Sprintf("%v", e) {
t.Errorf("must:%v, but got: %v", tc.expectedE, e)
}
if tc.expectedR && r == nil {
t.Errorf("must not nil, but got: nil")
}
if !tc.expectedR && r != nil {
t.Errorf("must nil, but got: object")
}
if r != nil {
r.Close()
}
_ = os.Remove("./new_client_test.csv")
})
}
}
func Test_initSkipper(t *testing.T) {
m := make(map[int]int)
m[0] = 0
m[3] = 3
tt := []struct {
name string
skipCols []int
expectedR map[int]int
}{
{
name: "should return nil when skipCals is nil",
skipCols: nil,
expectedR: nil,
},
{
name: "should return valid result when skipCols is not empty",
skipCols: []int{0, 3},
expectedR: m,
},
}
for _, tc := range tt {
t.Run(tc.name, func(t *testing.T) {
r := initSkipper(tc.skipCols)
if fmt.Sprintf("%v", tc.expectedR) != fmt.Sprintf("%v", r) {
t.Errorf("must:%v, but got: %v", tc.expectedR, r)
}
})
}
}