-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuiltin_test.go
98 lines (86 loc) · 1.57 KB
/
builtin_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
package applicator
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestTrim(t *testing.T) {
s := &struct {
A string `apply:"trim"`
}{
A: " 123 ",
}
err := Apply(s)
require.Nil(t, err)
assert.Equal(t, "123", s.A)
str := " 234 "
s2 := &struct {
A *string `apply:"trim"`
}{
A: &str,
}
err = Apply(s2)
require.Nil(t, err)
assert.Equal(t, "234", *s2.A)
s3 := &struct {
A *string `apply:"trim"`
}{}
err = Apply(s3)
require.Nil(t, err)
assert.Nil(t, s3.A)
}
func TestLower(t *testing.T) {
s := &struct {
A string `apply:"lower"`
}{
A: "AAA",
}
err := Apply(s)
require.Nil(t, err)
assert.Equal(t, "aaa", s.A)
str := "BBB"
s2 := &struct {
A *string `apply:"lower"`
}{
A: &str,
}
err = Apply(s2)
require.Nil(t, err)
assert.Equal(t, "bbb", *s2.A)
s3 := &struct {
A *string `apply:"lower"`
}{}
err = Apply(s3)
require.Nil(t, err)
assert.Nil(t, s3.A)
}
func TestNonNil(t *testing.T) {
s := &struct {
A []string `apply:"fillNil"`
}{}
err := Apply(s)
require.Nil(t, err)
require.NotNil(t, s.A)
assert.Equal(t, []string{}, s.A)
s2 := &struct {
A *string `apply:"fillNil"`
}{}
err = Apply(s2)
require.Nil(t, err)
require.NotNil(t, s2.A)
assert.Equal(t, "", *s2.A)
str := "A"
s2.A = &str
err = Apply(s2)
require.Nil(t, err)
require.NotNil(t, s2.A)
assert.Equal(t, &str, s2.A)
assert.Equal(t, str, *s2.A)
s3 := &struct {
A map[string]string `apply:"fillNil"`
}{}
err = Apply(s3)
require.Nil(t, err)
require.NotNil(t, s3.A)
assert.Equal(t, map[string]string{}, s3.A)
}