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  }