package mergo import ( "testing" "time" ) type structWithoutTimePointer struct { Created time.Time } func TestIssue38Merge(t *testing.T) { dst := structWithoutTimePointer{ time.Now(), } expected := time.Date(2009, time.November, 10, 23, 0, 0, 0, time.UTC) src := structWithoutTimePointer{ expected, } if err := Merge(&dst, src); err != nil { t.Errorf("Error while merging %s", err) } if dst.Created == src.Created { t.Fatalf("Created merged unexpectedly: dst.Created(%v) == src.Created(%v)", dst.Created, src.Created) } } func TestIssue38MergeEmptyStruct(t *testing.T) { dst := structWithoutTimePointer{} expected := time.Date(2009, time.November, 10, 23, 0, 0, 0, time.UTC) src := structWithoutTimePointer{ expected, } if err := Merge(&dst, src); err != nil { t.Errorf("Error while merging %s", err) } if dst.Created == src.Created { t.Fatalf("Created merged unexpectedly: dst.Created(%v) == src.Created(%v)", dst.Created, src.Created) } } func TestIssue38MergeWithOverwrite(t *testing.T) { dst := structWithoutTimePointer{ time.Now(), } expected := time.Date(2009, time.November, 10, 23, 0, 0, 0, time.UTC) src := structWithoutTimePointer{ expected, } if err := MergeWithOverwrite(&dst, src); err != nil { t.Errorf("Error while merging %s", err) } if dst.Created != src.Created { t.Fatalf("Created not merged in properly: dst.Created(%v) != src.Created(%v)", dst.Created, src.Created) } }