Package list golang-github-imdario-mergo / upstream/0.3.12+git20210420.1.b968a17 issue129_test.go
upstream/0.3.12+git20210420.1.b968a17

Tree @upstream/0.3.12+git20210420.1.b968a17 (Download .tar.gz)

issue129_test.go @upstream/0.3.12+git20210420.1.b968a17raw · history · blame

package mergo_test

import (
	"testing"

	"github.com/imdario/mergo"
)

func TestIssue129Boolean(t *testing.T) {
	type Foo struct {
		A bool
		B bool
	}

	src := Foo{
		A: true,
		B: false,
	}
	dst := Foo{
		A: false,
		B: true,
	}

	// Standard behavior
	if err := mergo.Merge(&dst, src); err != nil {
		t.Error(err)
	}
	if dst.A != true {
		t.Errorf("expected true, got false")
	}
	if dst.B != true {
		t.Errorf("expected true, got false")
	}

	// Expected behavior
	dst = Foo{
		A: false,
		B: true,
	}
	if err := mergo.Merge(&dst, src, mergo.WithOverwriteWithEmptyValue); err != nil {
		t.Error(err)
	}
	if dst.A != true {
		t.Errorf("expected true, got false")
	}
	if dst.B != false {
		t.Errorf("expected false, got true")
	}
}