1package mergo
2
3import (
4	"testing"
5	"time"
6)
7
8type structWithoutTimePointer struct {
9	Created time.Time
10}
11
12func TestIssue38Merge(t *testing.T) {
13	dst := structWithoutTimePointer{
14		time.Now(),
15	}
16
17	expected := time.Date(2009, time.November, 10, 23, 0, 0, 0, time.UTC)
18	src := structWithoutTimePointer{
19		expected,
20	}
21	if err := Merge(&dst, src); err != nil {
22		t.Errorf("Error while merging %s", err)
23	}
24	if dst.Created == src.Created {
25		t.Fatalf("Created merged unexpectedly: dst.Created(%v) == src.Created(%v)", dst.Created, src.Created)
26	}
27}
28
29func TestIssue38MergeEmptyStruct(t *testing.T) {
30	dst := structWithoutTimePointer{}
31
32	expected := time.Date(2009, time.November, 10, 23, 0, 0, 0, time.UTC)
33	src := structWithoutTimePointer{
34		expected,
35	}
36	if err := Merge(&dst, src); err != nil {
37		t.Errorf("Error while merging %s", err)
38	}
39	if dst.Created == src.Created {
40		t.Fatalf("Created merged unexpectedly: dst.Created(%v) == src.Created(%v)", dst.Created, src.Created)
41	}
42}
43
44func TestIssue38MergeWithOverwrite(t *testing.T) {
45	dst := structWithoutTimePointer{
46		time.Now(),
47	}
48
49	expected := time.Date(2009, time.November, 10, 23, 0, 0, 0, time.UTC)
50	src := structWithoutTimePointer{
51		expected,
52	}
53	if err := MergeWithOverwrite(&dst, src); err != nil {
54		t.Errorf("Error while merging %s", err)
55	}
56	if dst.Created != src.Created {
57		t.Fatalf("Created not merged in properly: dst.Created(%v) != src.Created(%v)", dst.Created, src.Created)
58	}
59}
60