92 lines
1.5 KiB
Go
92 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
|
|
}
|