github.com/bhameyie/otto@v0.2.1-0.20160406174117-16052efa52ec/helper/flag/flag_test.go (about) 1 package flag 2 3 import ( 4 "flag" 5 "reflect" 6 "testing" 7 ) 8 9 func TestFilterArgs(t *testing.T) { 10 cases := []struct { 11 Flags []string 12 Args []string 13 Inc []string 14 Exc []string 15 Pos []string 16 }{ 17 { 18 []string{"foo"}, 19 []string{"-foo=bar"}, 20 []string{"-foo=bar"}, 21 []string{}, 22 []string{}, 23 }, 24 25 { 26 []string{"foo"}, 27 []string{"-foo=bar", "-bar=baz"}, 28 []string{"-foo=bar"}, 29 []string{"-bar=baz"}, 30 []string{}, 31 }, 32 33 { 34 []string{"foo"}, 35 []string{"-foo", "bar", "-bar=baz"}, 36 []string{"-foo", "bar"}, 37 []string{"-bar=baz"}, 38 []string{}, 39 }, 40 41 { 42 []string{"foo"}, 43 []string{"hello"}, 44 []string{}, 45 []string{}, 46 []string{"hello"}, 47 }, 48 49 { 50 []string{"foo"}, 51 []string{"-h"}, 52 []string{"-h"}, 53 []string{}, 54 []string{}, 55 }, 56 } 57 58 for _, tc := range cases { 59 fs := flag.NewFlagSet("", flag.ContinueOnError) 60 for _, a := range tc.Flags { 61 fs.String(a, "", "") 62 } 63 64 inc, exc, pos := FilterArgs(fs, tc.Args) 65 if !reflect.DeepEqual(inc, tc.Inc) { 66 t.Fatalf( 67 "Flags: %#v\n\nArgs: %#v\n\nInc: %#v\n\nActual: %#v", 68 tc.Flags, tc.Args, tc.Inc, inc) 69 } 70 if !reflect.DeepEqual(exc, tc.Exc) { 71 t.Fatalf( 72 "Flags: %#v\n\nArgs: %#v\n\nExc: %#v\n\nActual: %#v", 73 tc.Flags, tc.Args, tc.Exc, exc) 74 } 75 if !reflect.DeepEqual(pos, tc.Pos) { 76 t.Fatalf( 77 "Flags: %#v\n\nArgs: %#v\n\nPos: %#v\n\nActual: %#v", 78 tc.Flags, tc.Args, tc.Pos, pos) 79 } 80 } 81 }