aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/gleam/iterator.gleam1
-rw-r--r--test/gleam/iterator_test.gleam10
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(_, [])
+}