From c777bb1828ab8bd62b937aff729929bf20478909 Mon Sep 17 00:00:00 2001 From: akupila Date: Mon, 19 Sep 2016 22:06:44 +0200 Subject: [PATCH] Fix multiple interface{} values to ToStringMapStringSliceE --- cast_test.go | 2 ++ caste.go | 7 ++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/cast_test.go b/cast_test.go index 3fbcf87..2cb0435 100644 --- a/cast_test.go +++ b/cast_test.go @@ -106,6 +106,7 @@ func TestMaps(t *testing.T) { var interfaceMapInterfaceSlice = map[interface{}][]interface{}{"key 1": []interface{}{"value 1", "value 2", "value 3"}, "key 2": []interface{}{"value 1", "value 2", "value 3"}, "key 3": []interface{}{"value 1", "value 2", "value 3"}} var stringMapStringSliceMultiple = map[string][]string{"key 1": []string{"value 1", "value 2", "value 3"}, "key 2": []string{"value 1", "value 2", "value 3"}, "key 3": []string{"value 1", "value 2", "value 3"}} + var stringMapInterfaceMultiple = map[string]interface{}{"key 1": []string{"value 1", "value 2", "value 3"}, "key 2": []string{"value 1", "value 2", "value 3"}, "key 3": []string{"value 1", "value 2", "value 3"}} var stringMapStringSliceSingle = map[string][]string{"key 1": []string{"value 1"}, "key 2": []string{"value 2"}, "key 3": []string{"value 3"}} assert.Equal(t, ToStringMap(taxonomies), map[string]interface{}{"tag": "tags", "group": "groups"}) @@ -122,6 +123,7 @@ func TestMaps(t *testing.T) { assert.Equal(t, ToStringMapStringSlice(stringMapInterfaceSlice), stringMapStringSlice) assert.Equal(t, ToStringMapStringSlice(stringMapStringSliceMultiple), stringMapStringSlice) assert.Equal(t, ToStringMapStringSlice(stringMapStringSliceMultiple), stringMapStringSlice) + assert.Equal(t, ToStringMapStringSlice(stringMapInterfaceMultiple), stringMapStringSlice) assert.Equal(t, ToStringMapStringSlice(stringMapString), stringMapStringSliceSingle) assert.Equal(t, ToStringMapStringSlice(stringMapInterface), stringMapStringSliceSingle) assert.Equal(t, ToStringMapStringSlice(interfaceMapStringSlice), stringMapStringSlice) diff --git a/caste.go b/caste.go index 863585b..0deb06c 100644 --- a/caste.go +++ b/caste.go @@ -310,7 +310,12 @@ func ToStringMapStringSliceE(i interface{}) (map[string][]string, error) { } case map[string]interface{}: for k, val := range v { - m[ToString(k)] = []string{ToString(val)} + switch val.(type) { + case []string: + m[ToString(k)] = ToStringSlice(val) + default: + m[ToString(k)] = []string{ToString(val)} + } } return m, nil case map[interface{}][]string: