File: merge_appendslice_test.go

package info (click to toggle)
golang-github-imdario-mergo 0.3.8-3
  • links: PTS, VCS
  • area: main
  • in suites: bullseye, sid
  • size: 216 kB
  • sloc: makefile: 2
file content (33 lines) | stat: -rw-r--r-- 1,052 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package mergo

import (
	"testing"
)

var testDataS = []struct {
	S1            Student
	S2            Student
	ExpectedSlice []string
}{
	{Student{"Jack", []string{"a", "B"}}, Student{"Tom", []string{"1"}}, []string{"1", "a", "B"}},
	{Student{"Jack", []string{"a", "B"}}, Student{"Tom", []string{}}, []string{"a", "B"}},
	{Student{"Jack", []string{}}, Student{"Tom", []string{"1"}}, []string{"1"}},
	{Student{"Jack", []string{}}, Student{"Tom", []string{}}, []string{}},
}

func TestMergeSliceWithOverrideWithAppendSlice(t *testing.T) {
	for _, data := range testDataS {
		err := Merge(&data.S2, data.S1, WithOverride, WithAppendSlice)
		if err != nil {
			t.Errorf("Error while merging %s", err)
		}
		if len(data.S2.Books) != len(data.ExpectedSlice) {
			t.Fatalf("Got %d elements in slice, but expected %d", len(data.S2.Books), len(data.ExpectedSlice))
		}
		for i, val := range data.S2.Books {
			if val != data.ExpectedSlice[i] {
				t.Fatalf("Expected %s, but got %s while merging slice with override", data.ExpectedSlice[i], val)
			}
		}
	}
}