mirror of https://github.com/portainer/portainer
30 lines
618 B
Go
30 lines
618 B
Go
package slicesx_test
|
|
|
|
import (
|
|
"reflect"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
type libFunc[T, U, V any] func([]T, func(T) U) V
|
|
type predicateFunc[T, U any] func(T) U
|
|
|
|
func test[T, U, V any](t *testing.T, libFn libFunc[T, U, V], name string, input []T, expected V, predicate predicateFunc[T, U]) {
|
|
t.Helper()
|
|
|
|
t.Run(name, func(t *testing.T) {
|
|
is := assert.New(t)
|
|
|
|
result := libFn(input, predicate)
|
|
|
|
switch reflect.TypeOf(result).Kind() {
|
|
case reflect.Slice, reflect.Array:
|
|
is.Equal(expected, result)
|
|
is.ElementsMatch(expected, result)
|
|
default:
|
|
is.Equal(expected, result)
|
|
}
|
|
})
|
|
}
|