Skip to content

Commit 207868b

Browse files
committed
Implement And filter
1 parent b47d8b5 commit 207868b

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

iter/filters/filters.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,15 @@ func LessThan[T constraints.Ordered](t T) func(T) bool {
1818
return s < t
1919
}
2020
}
21+
22+
func And[T constraints.Ordered](filters ...func(T) bool) func(T) bool {
23+
return func(t T) bool {
24+
for _, filter := range filters {
25+
if !filter(t) {
26+
return false
27+
}
28+
}
29+
30+
return true
31+
}
32+
}

iter/filters/filters_test.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,12 @@ func TestLessThan(t *testing.T) {
2222
items := iter.Filter[int](iter.Lift([]int{1, 2, 3, 4, 5, 1}), filters.LessThan(2))
2323
assert.SliceEqual(t, iter.Collect[int](items), []int{1, 1})
2424
}
25+
26+
func TestAnd(t *testing.T) {
27+
items := iter.Filter[int](iter.Lift([]int{1, 2, 3, 4, 5, 6, 7}), filters.And(
28+
filters.GreaterThan(2),
29+
filters.LessThan(7),
30+
))
31+
32+
assert.SliceEqual(t, iter.Collect[int](items), []int{3, 4, 5, 6})
33+
}

0 commit comments

Comments
 (0)