package mergo_test import ( "testing" "github.com/imdario/mergo" ) func TestIssue89Boolean(t *testing.T) { type Foo struct { Bar bool `json:"bar"` } src := Foo{Bar: true} dst := Foo{Bar: false} if err := mergo.Merge(&dst, src); err != nil { t.Error(err) } if dst.Bar == false { t.Errorf("expected true, got false") } } func TestIssue89MergeWithEmptyValue(t *testing.T) { p1 := map[string]interface{}{ "A": 3, "B": "note", "C": true, } p2 := map[string]interface{}{ "B": "", "C": false, } if err := mergo.Merge(&p1, p2, mergo.WithOverwriteWithEmptyValue); err != nil { t.Error(err) } testCases := []struct { key string expected interface{} }{ { "A", 3, }, { "B", "", }, { "C", false, }, } for _, tC := range testCases { if p1[tC.key] != tC.expected { t.Errorf("expected %v in p1[%q], got %v", tC.expected, tC.key, p1[tC.key]) } } }