mirror of
https://github.com/rancher/os.git
synced 2025-09-01 14:48:55 +00:00
slices union and intersection
useful for merging and splitting configs
This commit is contained in:
@@ -6,6 +6,90 @@ import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestNilMap(t *testing.T) {
|
||||
assert := require.New(t)
|
||||
var m map[string]interface{} = nil
|
||||
assert.True(m == nil)
|
||||
}
|
||||
|
||||
func TestMapCopy(t *testing.T) {
|
||||
assert := require.New(t)
|
||||
m0 := map[interface{}]interface{}{"a": 1, "b": map[interface{}]interface{}{"c": 3}, "d": "4"}
|
||||
m1 := MapCopy(m0)
|
||||
assert.Equal(m0, m1)
|
||||
|
||||
delete(m0, "a")
|
||||
assert.Equal(len(m1), len(m0)+1)
|
||||
|
||||
b0 := m0["b"].(map[interface{}]interface{})
|
||||
b1 := m1["b"].(map[interface{}]interface{})
|
||||
b1["e"] = "queer"
|
||||
|
||||
assert.Equal(len(b1), len(b0)+1)
|
||||
}
|
||||
|
||||
func TestSliceCopy(t *testing.T) {
|
||||
assert := require.New(t)
|
||||
m0 := []interface{}{1, map[interface{}]interface{}{"c": 3}, "4"}
|
||||
m1 := SliceCopy(m0)
|
||||
assert.Equal(m0, m1)
|
||||
|
||||
m0 = m0[1:]
|
||||
assert.Equal(len(m1), len(m0)+1)
|
||||
|
||||
b0 := m0[0].(map[interface{}]interface{})
|
||||
b1 := m1[1].(map[interface{}]interface{})
|
||||
b1["e"] = "queer"
|
||||
|
||||
assert.Equal(len(b1), len(b0)+1)
|
||||
}
|
||||
|
||||
func TestMapsIntersection(t *testing.T) {
|
||||
assert := require.New(t)
|
||||
|
||||
m0 := map[interface{}]interface{}{
|
||||
"a": 1,
|
||||
"b": map[interface{}]interface{}{"c": 3},
|
||||
"d": "4",
|
||||
"e": []interface{}{1, 2, 3},
|
||||
}
|
||||
m1 := MapCopy(m0)
|
||||
|
||||
delete(m0, "a")
|
||||
b1 := m1["b"].(map[interface{}]interface{})
|
||||
delete(b1, "c")
|
||||
m1["e"] = []interface{}{2, 3, 4}
|
||||
expected := map[interface{}]interface{}{"b": map[interface{}]interface{}{}, "d": "4", "e": []interface{}{2, 3}}
|
||||
assert.Equal(expected, MapsIntersection(m0, m1, Equal))
|
||||
}
|
||||
|
||||
func TestMapsUnion(t *testing.T) {
|
||||
assert := require.New(t)
|
||||
|
||||
m0 := map[interface{}]interface{}{
|
||||
"a": 1,
|
||||
"b": map[interface{}]interface{}{"c": 3},
|
||||
"d": "4",
|
||||
"f": []interface{}{1, 2, 3},
|
||||
}
|
||||
m1 := MapCopy(m0)
|
||||
m1["e"] = "added"
|
||||
m1["d"] = "replaced"
|
||||
m1["f"] = []interface{}{2, 3, 4}
|
||||
|
||||
delete(m0, "a")
|
||||
b1 := m1["b"].(map[interface{}]interface{})
|
||||
delete(b1, "c")
|
||||
expected := map[interface{}]interface{}{
|
||||
"a": 1,
|
||||
"b": map[interface{}]interface{}{"c": 3},
|
||||
"d": "replaced",
|
||||
"e": "added",
|
||||
"f": []interface{}{1, 2, 3, 4},
|
||||
}
|
||||
assert.Equal(expected, MapsUnion(m0, m1, Replace))
|
||||
}
|
||||
|
||||
func TestLoadResourceSimple(t *testing.T) {
|
||||
assert := require.New(t)
|
||||
|
||||
|
Reference in New Issue
Block a user