...

Source file src/github.com/imdario/mergo/issue64_test.go

Documentation: github.com/imdario/mergo

     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