package collections import ( "strings" "testing" "github.com/stretchr/testify/require" ) func TestIndex(t *testing.T) { var strs = []string{"peach", "apple", "pear", "plum"} actual := Index(strs, "pear") require.Equal(t, 2, actual) } func TestInclude(t *testing.T) { var strs = []string{"peach", "apple", "pear", "plum"} actual := Include(strs, "grape") require.False(t, actual) } func TestAny(t *testing.T) { var strs = []string{"peach", "apple", "pear", "plum"} actual := Any(strs, func(v string) bool { return strings.HasPrefix(v, "p") }) require.True(t, actual) } func TestAll(t *testing.T) { var strs = []string{"peach", "apple", "pear", "plum"} actual := All(strs, func(v string) bool { return strings.HasPrefix(v, "p") }) require.False(t, actual) } func TestFilter(t *testing.T) { var strs = []string{"peach", "apple", "pear", "plum"} actual := Filter(strs, func(v string) bool { return strings.Contains(v, "e") }) require.Contains(t, actual, "peach") require.Contains(t, actual, "apple") require.Contains(t, actual, "pear") require.NotContains(t, actual, "plum") } func TestMap(t *testing.T) { var strs = []string{"peach", "apple", "pear", "plum"} actual := Map(strs, func(v string) string { return strings.ToUpper(v) }) expected := []string{"PEACH", "APPLE", "PEAR", "PLUM"} require.EqualValues(t, expected, actual) }