forked from gocarina/gocsv
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsample_structs_test.go
92 lines (75 loc) · 1.76 KB
/
sample_structs_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
package gocsv
import "time"
type Sample struct {
Foo string `csv:"foo"`
Bar int `csv:"BAR"`
Baz string `csv:"Baz"`
Frop float64 `csv:"Quux"`
Blah *int `csv:"Blah"`
SPtr *string `csv:"SPtr"`
Omit *string `csv:"Omit,omitempty"`
}
type EmbedSample struct {
Qux string `csv:"first"`
Sample
Ignore string `csv:"-"`
Grault float64 `csv:"garply"`
Quux string `csv:"last"`
}
type MarshalSample struct {
Dummy string
}
func (m MarshalSample) MarshalText() ([]byte, error) {
return []byte(m.Dummy), nil
}
func (m *MarshalSample) UnmarshalText(text []byte) error {
m.Dummy = string(text)
return nil
}
type EmbedMarshal struct {
Foo *MarshalSample `csv:"foo"`
}
type EmbedPtrSample struct {
Qux string `csv:"first"`
*Sample
Ignore string `csv:"-"`
Grault float64 `csv:"garply"`
Quux string `csv:"last"`
}
type SkipFieldSample struct {
EmbedSample
MoreIgnore string `csv:"-"`
Corge string `csv:"abc"`
}
// Testtype for unmarshal/marshal functions on renamed basic types
type RenamedFloat64Unmarshaler float64
type RenamedFloat64Default float64
type RenamedSample struct {
RenamedFloatUnmarshaler RenamedFloat64Unmarshaler `csv:"foo"`
RenamedFloatDefault RenamedFloat64Default `csv:"bar"`
}
type MultiTagSample struct {
Foo string `csv:"Baz,foo"`
Bar int `csv:"BAR"`
}
type TagSeparatorSample struct {
Foo string `csv:"Baz|foo"`
Bar int `csv:"BAR"`
}
type DateTime struct {
Foo time.Time `csv:"Foo"`
}
type Level0Struct struct {
Level0Field level1Struct `csv:"-"`
}
type level1Struct struct {
Level1Field level2Struct `csv:"-"`
}
type level2Struct struct {
InnerStruct
}
type InnerStruct struct {
BoolIgnoreField0 bool `csv:"-"`
BoolField1 bool `csv:"boolField1"`
StringField2 string `csv:"stringField2"`
}