1 // Copyright 2009 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
12 func setUpSAFlagSet(sap *[]string) *FlagSet {
13 f := NewFlagSet("test", ContinueOnError)
14 f.StringArrayVar(sap, "sa", []string{}, "Command separated list!")
18 func setUpSAFlagSetWithDefault(sap *[]string) *FlagSet {
19 f := NewFlagSet("test", ContinueOnError)
20 f.StringArrayVar(sap, "sa", []string{"default", "values"}, "Command separated list!")
24 func TestEmptySA(t *testing.T) {
26 f := setUpSAFlagSet(&sa)
27 err := f.Parse([]string{})
29 t.Fatal("expected no error; got", err)
32 getSA, err := f.GetStringArray("sa")
34 t.Fatal("got an error from GetStringArray():", err)
37 t.Fatalf("got sa %v with len=%d but expected length=0", getSA, len(getSA))
41 func TestEmptySAValue(t *testing.T) {
43 f := setUpSAFlagSet(&sa)
44 err := f.Parse([]string{"--sa="})
46 t.Fatal("expected no error; got", err)
49 getSA, err := f.GetStringArray("sa")
51 t.Fatal("got an error from GetStringArray():", err)
54 t.Fatalf("got sa %v with len=%d but expected length=0", getSA, len(getSA))
58 func TestSADefault(t *testing.T) {
60 f := setUpSAFlagSetWithDefault(&sa)
62 vals := []string{"default", "values"}
64 err := f.Parse([]string{})
66 t.Fatal("expected no error; got", err)
68 for i, v := range sa {
70 t.Fatalf("expected sa[%d] to be %s but got: %s", i, vals[i], v)
74 getSA, err := f.GetStringArray("sa")
76 t.Fatal("got an error from GetStringArray():", err)
78 for i, v := range getSA {
80 t.Fatalf("expected sa[%d] to be %s from GetStringArray but got: %s", i, vals[i], v)
85 func TestSAWithDefault(t *testing.T) {
87 f := setUpSAFlagSetWithDefault(&sa)
90 arg := fmt.Sprintf("--sa=%s", val)
91 err := f.Parse([]string{arg})
93 t.Fatal("expected no error; got", err)
97 t.Fatalf("expected number of values to be %d but %d", 1, len(sa))
101 t.Fatalf("expected value to be %s but got: %s", sa[0], val)
104 getSA, err := f.GetStringArray("sa")
106 t.Fatal("got an error from GetStringArray():", err)
110 t.Fatalf("expected number of values to be %d but %d", 1, len(getSA))
114 t.Fatalf("expected value to be %s but got: %s", getSA[0], val)
118 func TestSACalledTwice(t *testing.T) {
120 f := setUpSAFlagSet(&sa)
122 in := []string{"one", "two"}
123 expected := []string{"one", "two"}
125 arg1 := fmt.Sprintf(argfmt, in[0])
126 arg2 := fmt.Sprintf(argfmt, in[1])
127 err := f.Parse([]string{arg1, arg2})
129 t.Fatal("expected no error; got", err)
132 if len(expected) != len(sa) {
133 t.Fatalf("expected number of sa to be %d but got: %d", len(expected), len(sa))
135 for i, v := range sa {
136 if expected[i] != v {
137 t.Fatalf("expected sa[%d] to be %s but got: %s", i, expected[i], v)
141 values, err := f.GetStringArray("sa")
143 t.Fatal("expected no error; got", err)
146 if len(expected) != len(values) {
147 t.Fatalf("expected number of values to be %d but got: %d", len(expected), len(sa))
149 for i, v := range values {
150 if expected[i] != v {
151 t.Fatalf("expected got sa[%d] to be %s but got: %s", i, expected[i], v)
156 func TestSAWithSpecialChar(t *testing.T) {
158 f := setUpSAFlagSet(&sa)
160 in := []string{"one,two", `"three"`, `"four,five",six`, "seven eight"}
161 expected := []string{"one,two", `"three"`, `"four,five",six`, "seven eight"}
163 arg1 := fmt.Sprintf(argfmt, in[0])
164 arg2 := fmt.Sprintf(argfmt, in[1])
165 arg3 := fmt.Sprintf(argfmt, in[2])
166 arg4 := fmt.Sprintf(argfmt, in[3])
167 err := f.Parse([]string{arg1, arg2, arg3, arg4})
169 t.Fatal("expected no error; got", err)
172 if len(expected) != len(sa) {
173 t.Fatalf("expected number of sa to be %d but got: %d", len(expected), len(sa))
175 for i, v := range sa {
176 if expected[i] != v {
177 t.Fatalf("expected sa[%d] to be %s but got: %s", i, expected[i], v)
181 values, err := f.GetStringArray("sa")
183 t.Fatal("expected no error; got", err)
186 if len(expected) != len(values) {
187 t.Fatalf("expected number of values to be %d but got: %d", len(expected), len(values))
189 for i, v := range values {
190 if expected[i] != v {
191 t.Fatalf("expected got sa[%d] to be %s but got: %s", i, expected[i], v)
196 func TestSAWithSquareBrackets(t *testing.T) {
198 f := setUpSAFlagSet(&sa)
200 in := []string{"][]-[", "[a-z]", "[a-z]+"}
201 expected := []string{"][]-[", "[a-z]", "[a-z]+"}
203 arg1 := fmt.Sprintf(argfmt, in[0])
204 arg2 := fmt.Sprintf(argfmt, in[1])
205 arg3 := fmt.Sprintf(argfmt, in[2])
206 err := f.Parse([]string{arg1, arg2, arg3})
208 t.Fatal("expected no error; got", err)
211 if len(expected) != len(sa) {
212 t.Fatalf("expected number of sa to be %d but got: %d", len(expected), len(sa))
214 for i, v := range sa {
215 if expected[i] != v {
216 t.Fatalf("expected sa[%d] to be %s but got: %s", i, expected[i], v)
220 values, err := f.GetStringArray("sa")
222 t.Fatal("expected no error; got", err)
225 if len(expected) != len(values) {
226 t.Fatalf("expected number of values to be %d but got: %d", len(expected), len(values))
228 for i, v := range values {
229 if expected[i] != v {
230 t.Fatalf("expected got sa[%d] to be %s but got: %s", i, expected[i], v)