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.
14 func setUpISFlagSet(isp *[]int) *FlagSet {
15 f := NewFlagSet("test", ContinueOnError)
16 f.IntSliceVar(isp, "is", []int{}, "Command separated list!")
20 func setUpISFlagSetWithDefault(isp *[]int) *FlagSet {
21 f := NewFlagSet("test", ContinueOnError)
22 f.IntSliceVar(isp, "is", []int{0, 1}, "Command separated list!")
26 func TestEmptyIS(t *testing.T) {
28 f := setUpISFlagSet(&is)
29 err := f.Parse([]string{})
31 t.Fatal("expected no error; got", err)
34 getIS, err := f.GetIntSlice("is")
36 t.Fatal("got an error from GetIntSlice():", err)
39 t.Fatalf("got is %v with len=%d but expected length=0", getIS, len(getIS))
43 func TestIS(t *testing.T) {
45 f := setUpISFlagSet(&is)
47 vals := []string{"1", "2", "4", "3"}
48 arg := fmt.Sprintf("--is=%s", strings.Join(vals, ","))
49 err := f.Parse([]string{arg})
51 t.Fatal("expected no error; got", err)
53 for i, v := range is {
54 d, err := strconv.Atoi(vals[i])
56 t.Fatalf("got error: %v", err)
59 t.Fatalf("expected is[%d] to be %s but got: %d", i, vals[i], v)
62 getIS, err := f.GetIntSlice("is")
64 t.Fatalf("got error: %v", err)
66 for i, v := range getIS {
67 d, err := strconv.Atoi(vals[i])
69 t.Fatalf("got error: %v", err)
72 t.Fatalf("expected is[%d] to be %s but got: %d from GetIntSlice", i, vals[i], v)
77 func TestISDefault(t *testing.T) {
79 f := setUpISFlagSetWithDefault(&is)
81 vals := []string{"0", "1"}
83 err := f.Parse([]string{})
85 t.Fatal("expected no error; got", err)
87 for i, v := range is {
88 d, err := strconv.Atoi(vals[i])
90 t.Fatalf("got error: %v", err)
93 t.Fatalf("expected is[%d] to be %d but got: %d", i, d, v)
97 getIS, err := f.GetIntSlice("is")
99 t.Fatal("got an error from GetIntSlice():", err)
101 for i, v := range getIS {
102 d, err := strconv.Atoi(vals[i])
104 t.Fatal("got an error from GetIntSlice():", err)
107 t.Fatalf("expected is[%d] to be %d from GetIntSlice but got: %d", i, d, v)
112 func TestISWithDefault(t *testing.T) {
114 f := setUpISFlagSetWithDefault(&is)
116 vals := []string{"1", "2"}
117 arg := fmt.Sprintf("--is=%s", strings.Join(vals, ","))
118 err := f.Parse([]string{arg})
120 t.Fatal("expected no error; got", err)
122 for i, v := range is {
123 d, err := strconv.Atoi(vals[i])
125 t.Fatalf("got error: %v", err)
128 t.Fatalf("expected is[%d] to be %d but got: %d", i, d, v)
132 getIS, err := f.GetIntSlice("is")
134 t.Fatal("got an error from GetIntSlice():", err)
136 for i, v := range getIS {
137 d, err := strconv.Atoi(vals[i])
139 t.Fatalf("got error: %v", err)
142 t.Fatalf("expected is[%d] to be %d from GetIntSlice but got: %d", i, d, v)
147 func TestISCalledTwice(t *testing.T) {
149 f := setUpISFlagSet(&is)
151 in := []string{"1,2", "3"}
152 expected := []int{1, 2, 3}
154 arg1 := fmt.Sprintf(argfmt, in[0])
155 arg2 := fmt.Sprintf(argfmt, in[1])
156 err := f.Parse([]string{arg1, arg2})
158 t.Fatal("expected no error; got", err)
160 for i, v := range is {
161 if expected[i] != v {
162 t.Fatalf("expected is[%d] to be %d but got: %d", i, expected[i], v)