...
1 package mergo_test
2
3 import (
4 "testing"
5
6 "github.com/imdario/mergo"
7 )
8
9 type Student struct {
10 Name string
11 Books []string
12 }
13
14 type issue64TestData struct {
15 S1 Student
16 S2 Student
17 ExpectedSlice []string
18 }
19
20 func issue64Data() []issue64TestData {
21 return []issue64TestData{
22 {Student{"Jack", []string{"a", "B"}}, Student{"Tom", []string{"1"}}, []string{"a", "B"}},
23 {Student{"Jack", []string{"a", "B"}}, Student{"Tom", []string{}}, []string{"a", "B"}},
24 {Student{"Jack", []string{}}, Student{"Tom", []string{"1"}}, []string{"1"}},
25 {Student{"Jack", []string{}}, Student{"Tom", []string{}}, []string{}},
26 }
27 }
28
29 func TestIssue64MergeSliceWithOverride(t *testing.T) {
30 for _, data := range issue64Data() {
31 err := mergo.Merge(&data.S2, data.S1, mergo.WithOverride)
32 if err != nil {
33 t.Errorf("Error while merging %s", err)
34 }
35
36 if len(data.S2.Books) != len(data.ExpectedSlice) {
37 t.Errorf("Got %d elements in slice, but expected %d", len(data.S2.Books), len(data.ExpectedSlice))
38 }
39
40 for i, val := range data.S2.Books {
41 if val != data.ExpectedSlice[i] {
42 t.Errorf("Expected %s, but got %s while merging slice with override", data.ExpectedSlice[i], val)
43 }
44 }
45 }
46 }
47
View as plain text