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