diff options
-rw-r--r-- | src/gleam/iterator.gleam | 1 | ||||
-rw-r--r-- | test/gleam/iterator_test.gleam | 10 |
2 files changed, 10 insertions, 1 deletions
diff --git a/src/gleam/iterator.gleam b/src/gleam/iterator.gleam index a4c9361..33ff8d0 100644 --- a/src/gleam/iterator.gleam +++ b/src/gleam/iterator.gleam @@ -45,7 +45,6 @@ fn do_unfold(initial, f) { } } -// TODO: test // TODO: document pub fn unfold(from initial: acc, with f: fn(acc) -> Step(element, acc)) -> Iterator(element) { initial diff --git a/test/gleam/iterator_test.gleam b/test/gleam/iterator_test.gleam index 447e912..fe0a854 100644 --- a/test/gleam/iterator_test.gleam +++ b/test/gleam/iterator_test.gleam @@ -107,3 +107,13 @@ pub fn cycle_test() { |> iterator.take(_, 9) |> expect.equal(_, [1, 2, 3, 1, 2, 3, 1, 2, 3]) } + +pub fn unfold_test() { + iterator.unfold(2, fn(acc) { iterator.Next(acc, acc * 2) }) + |> iterator.take(_, 5) + |> expect.equal(_, [2, 4, 8, 16, 32]) + + iterator.unfold(2, fn(_) { iterator.Done }) + |> iterator.take(_, 5) + |> expect.equal(_, []) +} |