diff options
author | Louis Pilfold <louis@lpil.uk> | 2019-12-11 23:13:56 +0000 |
---|---|---|
committer | Louis Pilfold <louis@lpil.uk> | 2020-05-26 19:19:29 +0100 |
commit | 8505fbdd21c5cb27679e4812f2fdcd4779ecc97b (patch) | |
tree | b33329131a3b45d0fbe3c14b0fe0eac1150aaba3 | |
parent | 59b0492625fa19e7feaa408efa63844765ec56c9 (diff) | |
download | gleam_stdlib-8505fbdd21c5cb27679e4812f2fdcd4779ecc97b.tar.gz gleam_stdlib-8505fbdd21c5cb27679e4812f2fdcd4779ecc97b.zip |
filter test
-rw-r--r-- | src/gleam/iterator.gleam | 3 | ||||
-rw-r--r-- | test/gleam/iterator_test.gleam | 20 |
2 files changed, 21 insertions, 2 deletions
diff --git a/src/gleam/iterator.gleam b/src/gleam/iterator.gleam index b51987d..32bed9c 100644 --- a/src/gleam/iterator.gleam +++ b/src/gleam/iterator.gleam @@ -134,7 +134,6 @@ fn do_map(iterator, f) { } } -// TODO: test // TODO: document pub fn map(over iterator: Iterator(a), with f: fn(a) -> b) -> Iterator(b) { iterator @@ -147,7 +146,7 @@ fn do_filter(iterator, predicate) { fn() { case iterator() { Continue(e, iterator) -> case predicate(e) { - True -> Continue(e, iterator) + True -> Continue(e, do_filter(iterator, predicate)) False -> do_filter(iterator, predicate)() } Stop -> Stop diff --git a/test/gleam/iterator_test.gleam b/test/gleam/iterator_test.gleam index 4d43053..f072889 100644 --- a/test/gleam/iterator_test.gleam +++ b/test/gleam/iterator_test.gleam @@ -72,3 +72,23 @@ pub fn map_test() { test([1, 2, 3], f) test([1, 2, 3, 4, 5, 6, 7, 8], f) } + +// a |> from_list |> filter(_, f) |> to_list == a |> list.filter(_, f) +pub fn filter_test() { + let test = fn(subject, f) { + subject + |> iterator.from_list + |> iterator.filter(_, f) + |> iterator.to_list + |> expect.equal(_, list.filter(subject, f)) + } + + let even = fn(x) { x % 2 == 0 } + test([], even) + test([1], even) + test([1, 2], even) + test([1, 2, 3], even) + test([1, 2, 3, 4], even) + test([1, 2, 3, 4, 5], even) + test([1, 2, 3, 4, 5, 6], even) +} |