/ internal / flag / stringslice_test.go
stringslice_test.go
 1  package flag_test
 2  
 3  import (
 4  	"flag"
 5  	"testing"
 6  
 7  	internalFlag "codeflow.dananglin.me.uk/apollo/enbas/internal/flag"
 8  )
 9  
10  func TestStringSliceValue(t *testing.T) {
11  	flagset := flag.NewFlagSet("test", flag.ExitOnError)
12  	stringSliceVal := internalFlag.NewStringSliceValue()
13  
14  	if !stringSliceVal.Empty() {
15  		t.Fatalf("The initialised StringSliceValue is not empty")
16  	}
17  
18  	flagset.Var(&stringSliceVal, "colour", "String value")
19  
20  	args := []string{
21  		"--colour", "orange",
22  		"--colour", "blue",
23  		"--colour", "magenta",
24  		"--colour", "red",
25  		"--colour", "green",
26  		"--colour", "silver",
27  	}
28  
29  	if err := flagset.Parse(args); err != nil {
30  		t.Fatalf("Received an error parsing the flag: %v", err)
31  	}
32  
33  	wantLength := 6
34  	if !stringSliceVal.ExpectedLength(wantLength) {
35  		t.Fatalf(
36  			"Error: intSliceVal.ExpectedLength(%d) == false: actual length is %d",
37  			wantLength,
38  			len(stringSliceVal),
39  		)
40  	}
41  
42  	want := "orange, blue, magenta, red, green, silver"
43  	got := stringSliceVal.String()
44  
45  	if got != want {
46  		t.Errorf(
47  			"Unexpected result after parsing StringSliceValue: want %s, got %s",
48  			want,
49  			got,
50  		)
51  	} else {
52  		t.Logf(
53  			"Expected result after parsing StringSliceValue: got %s",
54  			got,
55  		)
56  	}
57  }