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