package command import ( "flag" "reflect" "testing" ) func TestFlagStringKV_impl(t *testing.T) { var _ flag.Value = new(FlagStringKV) } func TestFlagStringKV(t *testing.T) { cases := []struct { Input string Output map[string]string Error bool }{ { "key=value", map[string]string{"key": "value"}, false, }, { "key=", map[string]string{"key": ""}, false, }, { "key=foo=bar", map[string]string{"key": "foo=bar"}, false, }, { "map.key=foo", map[string]string{"map.key": "foo"}, false, }, { "key", nil, true, }, { "key=/path", map[string]string{"key": "/path"}, false, }, } for _, tc := range cases { f := new(FlagStringKV) err := f.Set(tc.Input) if err != nil != tc.Error { t.Fatalf("bad error. Input: %#v\n\nError: %s", tc.Input, err) } actual := map[string]string(*f) if !reflect.DeepEqual(actual, tc.Output) { t.Fatalf("bad: %#v", actual) } } }