mirror of
https://github.com/yusing/godoxy.git
synced 2025-05-19 20:32:35 +02:00
96 lines
2.2 KiB
Go
96 lines
2.2 KiB
Go
package utils
|
|
|
|
import (
|
|
"slices"
|
|
"strings"
|
|
"testing"
|
|
|
|
. "github.com/yusing/go-proxy/internal/utils/testing"
|
|
)
|
|
|
|
func TestIntersect(t *testing.T) {
|
|
t.Run("strings", func(t *testing.T) {
|
|
t.Run("no intersection", func(t *testing.T) {
|
|
var (
|
|
slice1 = []string{"a", "b", "c"}
|
|
slice2 = []string{"d", "e", "f"}
|
|
want []string
|
|
)
|
|
result := Intersect(slice1, slice2)
|
|
slices.Sort(result)
|
|
slices.Sort(want)
|
|
ExpectEqual(t, result, want)
|
|
})
|
|
t.Run("intersection", func(t *testing.T) {
|
|
var (
|
|
slice1 = []string{"a", "b", "c"}
|
|
slice2 = []string{"b", "c", "d"}
|
|
want = []string{"b", "c"}
|
|
)
|
|
result := Intersect(slice1, slice2)
|
|
slices.Sort(result)
|
|
slices.Sort(want)
|
|
ExpectEqual(t, result, want)
|
|
})
|
|
})
|
|
t.Run("ints", func(t *testing.T) {
|
|
t.Run("no intersection", func(t *testing.T) {
|
|
var (
|
|
slice1 = []int{1, 2, 3}
|
|
slice2 = []int{4, 5, 6}
|
|
want []int
|
|
)
|
|
result := Intersect(slice1, slice2)
|
|
slices.Sort(result)
|
|
slices.Sort(want)
|
|
ExpectEqual(t, result, want)
|
|
})
|
|
t.Run("intersection", func(t *testing.T) {
|
|
var (
|
|
slice1 = []int{1, 2, 3}
|
|
slice2 = []int{2, 3, 4}
|
|
want = []int{2, 3}
|
|
)
|
|
result := Intersect(slice1, slice2)
|
|
slices.Sort(result)
|
|
slices.Sort(want)
|
|
ExpectEqual(t, result, want)
|
|
})
|
|
})
|
|
t.Run("complex", func(t *testing.T) {
|
|
type T struct {
|
|
A string
|
|
B int
|
|
}
|
|
t.Run("no intersection", func(t *testing.T) {
|
|
var (
|
|
slice1 = []T{{"a", 1}, {"b", 2}, {"c", 3}}
|
|
slice2 = []T{{"d", 4}, {"e", 5}, {"f", 6}}
|
|
want []T
|
|
)
|
|
result := Intersect(slice1, slice2)
|
|
slices.SortFunc(result, func(i T, j T) int {
|
|
return strings.Compare(i.A, j.A)
|
|
})
|
|
slices.SortFunc(want, func(i T, j T) int {
|
|
return strings.Compare(i.A, j.A)
|
|
})
|
|
ExpectEqual(t, result, want)
|
|
})
|
|
t.Run("intersection", func(t *testing.T) {
|
|
var (
|
|
slice1 = []T{{"a", 1}, {"b", 2}, {"c", 3}}
|
|
slice2 = []T{{"b", 2}, {"c", 3}, {"d", 4}}
|
|
want = []T{{"b", 2}, {"c", 3}}
|
|
)
|
|
result := Intersect(slice1, slice2)
|
|
slices.SortFunc(result, func(i T, j T) int {
|
|
return strings.Compare(i.A, j.A)
|
|
})
|
|
slices.SortFunc(want, func(i T, j T) int {
|
|
return strings.Compare(i.A, j.A)
|
|
})
|
|
ExpectEqual(t, result, want)
|
|
})
|
|
})
|
|
}
|