github.com/elopio/cli@v6.21.2-0.20160902224010-ea909d1fdb2f+incompatible/utils/generic/map_test.go (about) 1 package generic_test 2 3 import ( 4 . "code.cloudfoundry.org/cli/utils/generic" 5 . "github.com/onsi/ginkgo" 6 . "github.com/onsi/gomega" 7 ) 8 9 func init() { 10 Describe("generic maps", func() { 11 It("deep merges, with the last map taking precedence in conflicts", func() { 12 map1 := NewMap(map[interface{}]interface{}{ 13 "key1": "val1", 14 "key2": "val2", 15 "nest1": map[interface{}]interface{}{ 16 "nestKey1": "nest1Val1", 17 "nestKey2": "nest1Val2", 18 }, 19 "nest2": []interface{}{ 20 "nest2Val1", 21 }, 22 }) 23 24 map2 := NewMap(map[interface{}]interface{}{ 25 "key1": "newVal1", 26 "nest1": map[interface{}]interface{}{ 27 "nestKey1": "newNest1Val1", 28 }, 29 "nest2": []interface{}{ 30 "something", 31 }, 32 }) 33 34 expectedMap := NewMap(map[interface{}]interface{}{ 35 "key1": "newVal1", 36 "key2": "val2", 37 "nest1": NewMap(map[interface{}]interface{}{ 38 "nestKey1": "newNest1Val1", 39 "nestKey2": "nest1Val2", 40 }), 41 "nest2": []interface{}{ 42 "nest2Val1", 43 "something", 44 }, 45 }) 46 47 mergedMap := DeepMerge(map1, map2) 48 Expect(mergedMap).To(Equal(expectedMap)) 49 }) 50 51 Describe("IsMappable", func() { 52 It("returns true for generic.Map", func() { 53 m := NewMap() 54 Expect(IsMappable(m)).To(BeTrue()) 55 }) 56 57 It("returns true for maps", func() { 58 var m map[string]interface{} 59 Expect(IsMappable(m)).To(BeTrue()) 60 61 var n map[interface{}]interface{} 62 Expect(IsMappable(n)).To(BeTrue()) 63 64 var o map[int]interface{} 65 Expect(IsMappable(o)).To(BeTrue()) 66 }) 67 68 It("returns false for other things", func() { 69 Expect(IsMappable(2)).To(BeFalse()) 70 Expect(IsMappable("2")).To(BeFalse()) 71 Expect(IsMappable(true)).To(BeFalse()) 72 Expect(IsMappable([]string{"hello"})).To(BeFalse()) 73 }) 74 }) 75 }) 76 }