/
composition_merge_test.go
80 lines (68 loc) · 1.52 KB
/
composition_merge_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
package gilmour
import "testing"
func TestMergeHash(t *testing.T) {
src := map[string]interface{}{"a": 1}
merg := map[string]interface{}{"b": 1}
err := compositionMerge(src, merg)
if err != nil {
t.Error("Should mrge cleanly")
}
if _, ok := src["b"]; !ok {
t.Error("Should have had the key b merged.")
}
}
func TestMergeMismatch(t *testing.T) {
src := "a"
merg := map[string]interface{}{"b": 1}
err := compositionMerge(src, merg)
if err == nil {
t.Error("Should give merge conflict")
}
}
func TestMergePointer(t *testing.T) {
src := map[string]interface{}{"a": 1}
merg := map[string]interface{}{"b": 1}
err := compositionMerge(&src, merg)
if err != nil {
t.Error("Should mrge cleanly")
}
if _, ok := src["b"]; !ok {
t.Error("Should have had the key b merged.")
}
}
func TestMergeInterface(t *testing.T) {
src := map[string]interface{}{"a": 1}
merg := map[string]interface{}{"b": 1}
err := compositionMerge(
func() interface{} {
return src
}(),
func() interface{} {
return merg
}(),
)
if err != nil {
t.Error("Should mrge cleanly")
}
if _, ok := src["b"]; !ok {
t.Error("Should have had the key b merged.")
}
}
func TestMergeInterfacePointer(t *testing.T) {
src := map[string]interface{}{"a": 1}
merg := map[string]interface{}{"b": 1}
err := compositionMerge(
func() interface{} {
return &src
}(),
func() interface{} {
return merg
}(),
)
if err != nil {
t.Error("Should mrge cleanly")
}
if _, ok := src["b"]; !ok {
t.Error("Should have had the key b merged.")
}
}