Skip to content

Instantly share code, notes, and snippets.

@dlapiduz
Created June 12, 2015 03:10
Show Gist options
  • Save dlapiduz/5eff17e54f82ae20d628 to your computer and use it in GitHub Desktop.
Save dlapiduz/5eff17e54f82ae20d628 to your computer and use it in GitHub Desktop.
Manifest inheritance merge
package generic_test
import (
. "github.com/cloudfoundry/cli/generic"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
func init() {
Describe("generic maps", func() {
It("deep merges, with the last map taking precedence in conflicts", func() {
map1 := NewMap(map[interface{}]interface{}{
"key1": "val1",
"key2": "val2",
"nest1": map[interface{}]interface{}{
"nestKey1": "nest1Val1",
"nestKey2": "nest1Val2",
},
"nest2": []interface{}{
"nest2Val1",
},
"nest3": []interface{}{
map[interface{}]interface{}{
"nestKey1": "nest3Val1",
"nestKey2": "nest3Val2",
},
},
})
map2 := NewMap(map[interface{}]interface{}{
"key1": "newVal1",
"nest1": map[interface{}]interface{}{
"nestKey1": "newNest1Val1",
},
"nest2": []interface{}{
"something",
},
"nest3": []interface{}{
map[interface{}]interface{}{
"nestKey2": "nest3newval",
},
},
})
expectedMap := NewMap(map[interface{}]interface{}{
"key1": "newVal1",
"key2": "val2",
"nest1": NewMap(map[interface{}]interface{}{
"nestKey1": "newNest1Val1",
"nestKey2": "nest1Val2",
}),
"nest2": []interface{}{
"nest2Val1",
"something",
},
"nest3": []interface{}{
map[interface{}]interface{}{
"nestKey1": "nest3Val1",
"nestKey2": "nest3newval",
},
},
})
mergedMap := DeepMerge(map1, map2)
Expect(mergedMap).To(Equal(expectedMap))
})
})
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment