package util import ( "testing" "github.com/stretchr/testify/require" ) func TestInSlice(t *testing.T) { require := require.New(t) require.True(InSlice(1, []int{1, 2, 3})) require.False(InSlice(0, []int{1, 2, 3})) require.True(InSlice("foo", []string{"foo", "bar"})) require.False(InSlice("not exist", []string{"foo", "bar"})) } type testStructA struct { Name string Age int } func TestInSliceAny(t *testing.T) { require := require.New(t) a := testStructA{Name: "foo", Age: 20} b := testStructA{Name: "foo", Age: 30} c := testStructA{Name: "bar", Age: 20} equalFn := func(o, p testStructA) bool { return o.Name == p.Name } require.True(InSliceAny(a, []testStructA{b, c}, equalFn)) require.False(InSliceAny(c, []testStructA{a, b}, equalFn)) } func TestInSliceAnyFunc(t *testing.T) { require := require.New(t) a := testStructA{Name: "foo", Age: 20} b := testStructA{Name: "foo", Age: 30} c := testStructA{Name: "bar", Age: 20} equalFn := func(o, p testStructA) bool { return o.Name == p.Name } testStructAInSlice := InSliceAnyFunc(equalFn) require.True(testStructAInSlice(a, []testStructA{b, c})) require.False(testStructAInSlice(c, []testStructA{a, b})) }