-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathreader_test.go
More file actions
91 lines (82 loc) · 2.63 KB
/
reader_test.go
File metadata and controls
91 lines (82 loc) · 2.63 KB
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
package excelstructure
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func Test_ParseReadWithSheetIndex(t *testing.T) {
var info []*Info
p := NewParser()
err := p.ReadWithSheetName("./test_excel_file/test.xlsx", "Sheet1", &info)
if err != nil {
assert.Error(t, err)
}
require.Equal(t, 4, len(info))
require.Equal(t, "booyang1", info[0].Name)
}
func Test_ParseRead(t *testing.T) {
var info []*Info
p := NewParser()
err := p.Read("./test_excel_file/test.xlsx", &info)
if err != nil {
assert.Error(t, err)
}
require.Equal(t, 4, len(info))
require.Equal(t, "booyang", info[0].Name)
}
// excel data index offset is 2, the first two rows are not data,
// first row is title,second row is comment
func Test_ParseReadWithComment(t *testing.T) {
var info []*Info
p := NewParser()
p.DataIndexOffset = 2
err := p.Read("./test_excel_file/test_with_comment.xlsx", &info)
if err != nil {
assert.Error(t, err)
}
require.Equal(t, 4, len(info))
require.Equal(t, "booyang", info[0].Name)
}
func Test_ParseReadWithCheckEmpty(t *testing.T) {
var info []*Info
p := NewParser()
p.IsCheckEmpty = true
err := p.Read("./test_excel_file/test_check_empty.xlsx", &info)
// one row is empty, so the error is not nil, "C3 field age value is empty"
assert.Error(t, err)
// length is 4, but one row is empty, so the length is 3
require.Equal(t, 3, len(info))
require.Equal(t, "booyang", info[0].Name)
}
type Person struct {
Name string `excel:"column:user_name;comment:person name"`
Age int `excel:"column:age;"`
Man bool `excel:"column:man;default:true"`
Address []string `excel:"column:address;serializer"`
Detail Detail `excel:"column:details;serializer:json"`
}
func Test_ParseReadWithSerializer(t *testing.T) {
var persons []*Person
p := NewParser()
err := p.Read("./test_excel_file/test_serializer.xlsx", &persons)
assert.NoError(t, err)
require.Equal(t, 2, len(persons))
require.Equal(t, "booyang1", persons[0].Name)
// ["陕西省西安市雁塔区","陕西省延安市宝塔区"]
require.Equal(t, 2, len(persons[0].Address))
// {"height":180,"weight":70,"nation":"China"}
require.Equal(t, "China", persons[0].Detail.Nation)
}
func Test_ParseReadWithMultiSheet(t *testing.T) {
var infos1, infos2 []*Info
p := NewParser()
_ = p.RegisterSerializer("mySerializer", mySerializer)
p.DataIndexOffset = 2
err := p.ReadWithMultiSheet("./test_excel_file/test_write_multi.xlsx", map[string]interface{}{
"infos1": &infos1,
"infos2": &infos2,
})
assert.NoError(t, err)
require.Equal(t, "booyang_sheet1", infos1[0].Name)
require.Equal(t, "booyang_sheet2", infos2[0].Name)
}