Commit c2eecab
Changed files (2)
pkg
pkg/x/iterate.go
@@ -20,3 +20,8 @@ func FindAll[T any](items []T, predicate Predicate[T]) []T {
}
return results
}
+
+func Contains[T comparable](items []T, predicate Predicate[T]) bool {
+ item := Find[T](items, predicate)
+ return item != Default[T]()
+}
pkg/x/iterate_test.go
@@ -49,3 +49,25 @@ func TestFindAll(t *testing.T) {
assert.Empty(t, results)
})
}
+
+func TestContains(t *testing.T) {
+ t.Run("returns true", func(t *testing.T) {
+ items := []int{1, 2, 3, 4, 5}
+
+ result := Contains(items, func(item int) bool {
+ return item == 3
+ })
+
+ assert.True(t, result)
+ })
+
+ t.Run("returns false", func(t *testing.T) {
+ items := []int{1, 2, 3, 4, 5}
+
+ result := Contains(items, func(item int) bool {
+ return item == 7
+ })
+
+ assert.False(t, result)
+ })
+}