-
Notifications
You must be signed in to change notification settings - Fork 5
/
string_test.go
61 lines (53 loc) · 1.14 KB
/
string_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
package sets
import (
"flag"
"io"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestString(t *testing.T) {
t.Parallel()
set := NewString("logr", "logr", "klog")
assert.Equal(t, []string{"klog", "logr"}, set.List())
assert.Equal(t, "klog,logr", set.String())
assert.True(t, set.Has("logr"))
assert.True(t, set.Has("klog"))
assert.False(t, set.Has("zap"))
}
func TestString_Flag(t *testing.T) {
testCases := []struct {
name string
flagValue string
want []string
}{
{
name: "empty",
flagValue: "",
want: nil,
},
{
name: "klog",
flagValue: "klog",
want: []string{"klog"},
},
{
name: "klog-and-logr",
flagValue: "logr,klog",
want: []string{"klog", "logr"},
},
}
for _, tc := range testCases {
tc := tc
t.Run(tc.name, func(t *testing.T) {
t.Parallel()
f := StringSet{}
fs := flag.NewFlagSet("test", flag.ContinueOnError)
fs.SetOutput(io.Discard)
fs.Var(&f, "set", "")
err := fs.Parse([]string{"-set=" + tc.flagValue})
require.NoError(t, err)
assert.Equal(t, tc.want, f.List())
})
}
}