feat(Go-StudyExample):2021/02/09:新增merge源码阅读和单测代码
This commit is contained in:
@@ -0,0 +1,92 @@
|
||||
package mergo_test
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/imdario/mergo"
|
||||
)
|
||||
|
||||
type inner struct {
|
||||
A int
|
||||
}
|
||||
|
||||
type outer struct {
|
||||
inner
|
||||
B int
|
||||
}
|
||||
|
||||
func TestV039Issue139(t *testing.T) {
|
||||
dst := outer{
|
||||
inner: inner{A: 1},
|
||||
B: 2,
|
||||
}
|
||||
src := outer{
|
||||
inner: inner{A: 10},
|
||||
B: 20,
|
||||
}
|
||||
err := mergo.MergeWithOverwrite(&dst, src)
|
||||
if err != nil {
|
||||
panic(err.Error())
|
||||
}
|
||||
if dst.inner.A == 1 {
|
||||
t.Errorf("expected %d, got %d", src.inner.A, dst.inner.A)
|
||||
}
|
||||
}
|
||||
|
||||
func TestV039Issue152(t *testing.T) {
|
||||
dst := map[string]interface{}{
|
||||
"properties": map[string]interface{}{
|
||||
"field1": map[string]interface{}{
|
||||
"type": "text",
|
||||
},
|
||||
"field2": "ohai",
|
||||
},
|
||||
}
|
||||
src := map[string]interface{}{
|
||||
"properties": map[string]interface{}{
|
||||
"field1": "wrong",
|
||||
},
|
||||
}
|
||||
if err := mergo.Map(&dst, src, mergo.WithOverride); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
|
||||
type issue146Foo struct {
|
||||
A string
|
||||
B map[string]issue146Bar
|
||||
}
|
||||
|
||||
type issue146Bar struct {
|
||||
C *string
|
||||
D *string
|
||||
}
|
||||
|
||||
func TestV039Issue146(t *testing.T) {
|
||||
var (
|
||||
s1 = "asd"
|
||||
s2 = "sdf"
|
||||
)
|
||||
dst := issue146Foo{
|
||||
A: "two",
|
||||
B: map[string]issue146Bar{
|
||||
"foo": {
|
||||
C: &s1,
|
||||
},
|
||||
},
|
||||
}
|
||||
src := issue146Foo{
|
||||
A: "one",
|
||||
B: map[string]issue146Bar{
|
||||
"foo": {
|
||||
D: &s2,
|
||||
},
|
||||
},
|
||||
}
|
||||
if err := mergo.Merge(&dst, src, mergo.WithOverride); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
if dst.B["foo"].D == nil {
|
||||
t.Errorf("expected %v, got nil", &s2)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user