-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathregistry_test.go
124 lines (117 loc) · 3.43 KB
/
registry_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
package flags
import (
"testing"
"github.com/xitonix/flags/core"
"github.com/xitonix/flags/mocks"
"github.com/xitonix/flags/test"
)
func TestRegistry_Add(t *testing.T) {
testCases := []struct {
title string
first core.Flag
firstKey string
expectedFirstErr string
second core.Flag
secondKey string
expectedSecondErr string
}{
{
title: "with none empty long name",
first: mocks.NewFlag("long", "s"),
expectedFirstErr: "",
},
{
title: "with an invalid short name",
first: mocks.NewFlag("long", "invalid-short"),
expectedFirstErr: "can only be a single character",
},
{
title: "with empty long name",
first: mocks.NewFlag("", "s"),
expectedFirstErr: core.ErrEmptyFlagName.Error(),
},
{
title: "with empty short name",
first: mocks.NewFlag("long", ""),
expectedFirstErr: "",
},
{
title: "two flags with the same long name",
first: mocks.NewFlag("long", "s"),
expectedFirstErr: "",
second: mocks.NewFlag("long", "t"),
expectedSecondErr: "flag already exists",
},
{
title: "two flags with the same short name",
first: mocks.NewFlag("long-1", "s"),
expectedFirstErr: "",
second: mocks.NewFlag("long-2", "s"),
expectedSecondErr: "flag already exists",
},
{
title: "two flags with the same keys",
first: mocks.NewFlag("long-1", "s"),
firstKey: "key",
expectedFirstErr: "",
second: mocks.NewFlag("long-2", "t"),
secondKey: "key",
expectedSecondErr: "flag key already exists",
},
{
title: "two flags with different keys",
first: mocks.NewFlag("long-1", "s"),
firstKey: "key-1",
expectedFirstErr: "",
second: mocks.NewFlag("long-2", "t"),
secondKey: "key-2",
expectedSecondErr: "",
},
{
title: "two flags with different short name casing",
first: mocks.NewFlag("long-1", "s"),
expectedFirstErr: "",
second: mocks.NewFlag("long-2", "S"),
expectedSecondErr: "",
},
{
title: "two flags with different long name casing",
first: mocks.NewFlag("long", "s"),
expectedFirstErr: "",
second: mocks.NewFlag("LONG", "t"),
expectedSecondErr: "flag already exists",
},
{
title: "reserved help long flag",
first: mocks.NewFlag("help", "s"),
expectedFirstErr: "reserved",
},
{
title: "reserved h short flag",
first: mocks.NewFlag("long", "h"),
expectedFirstErr: "reserved",
},
{
title: "reserved H short flag",
first: mocks.NewFlag("long", "H"),
expectedFirstErr: "",
},
}
for _, tc := range testCases {
t.Run(tc.title, func(t *testing.T) {
tc.first.Key().SetID(tc.firstKey)
reg := newRegistry()
err := reg.add(tc.first)
if !test.ErrorContains(err, tc.expectedFirstErr) {
t.Errorf("Expected to get '%v' error, but received '%v'", tc.expectedFirstErr, err)
}
if tc.second != nil {
tc.second.Key().SetID(tc.secondKey)
err = reg.add(tc.second)
if !test.ErrorContains(err, tc.expectedSecondErr) {
t.Errorf("Second Flag: Expected to get '%v' error, but received '%v'", tc.expectedSecondErr, err)
}
}
})
}
}