extra/collections/merge_test.go

93 lines
1.5 KiB
Go

package collections
import (
"reflect"
"testing"
)
func TestMergeScalar(t *testing.T) {
type args struct {
s1 []int
s2 []int
}
tests := []struct {
name string
args args
want []int
}{
{
name: "test 1",
args: args{
s1: []int{1, 2, 4, 5, 6},
s2: []int{3, 3},
},
want: []int{1, 2, 3, 3, 4, 5, 6},
},
{
name: "test 2",
args: args{
s1: []int{1, 3, 5, 7},
s2: []int{0, 2, 4, 6, 8},
},
want: []int{0, 1, 2, 3, 4, 5, 6, 7, 8},
},
{
name: "test 3",
args: args{
s1: []int{8, 6, 4, 2, 0},
s2: []int{1, 3, 5, 7},
},
want: []int{1, 3, 5, 7, 8, 6, 4, 2, 0},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := MergeScalar(tt.args.s1, tt.args.s2); !reflect.DeepEqual(got, tt.want) {
t.Errorf("MergeScalar() = %v, want %v", got, tt.want)
}
})
}
}
func TestMerge(t *testing.T) {
type args struct {
s1 []*myType
s2 []*myType
}
tests := []struct {
name string
args args
want []*myType
}{
{
name: "test1",
args: args{
s1: []*myType{
{400}, {200}, {100},
},
s2: []*myType{
{300},
},
},
want: []*myType{
{400}, {300}, {200}, {100},
},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := Merge(tt.args.s1, tt.args.s2); !reflect.DeepEqual(got, tt.want) {
t.Errorf("Merge() = %v, want %v", got, tt.want)
}
})
}
}
type myType struct {
Weight int
}
func (t *myType) Less(t2 *myType) bool {
return t2.Weight < t.Weight
}