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 }