aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authordrew <drew@drewolson.org>2020-11-03 07:22:37 -0600
committerLouis Pilfold <louis@lpil.uk>2020-11-03 13:25:01 +0000
commite1dce822e1ff14664a30b429b5e2e2cbf3748221 (patch)
tree0c940f1d641fac784d7dd120414de29e4b80b2f9 /test
parentcbac55e668d7fc7df601b604e741b1baa64c7db8 (diff)
downloadgleam_stdlib-e1dce822e1ff14664a30b429b5e2e2cbf3748221.tar.gz
gleam_stdlib-e1dce822e1ff14664a30b429b5e2e2cbf3748221.zip
Add `step` eliminator for iterators
The `step` function allows eager access to the first item in the iterator, but does not force the rest of the iterator.
Diffstat (limited to 'test')
-rw-r--r--test/gleam/iterator_test.gleam26
1 files changed, 25 insertions, 1 deletions
diff --git a/test/gleam/iterator_test.gleam b/test/gleam/iterator_test.gleam
index acaac81..426c9f7 100644
--- a/test/gleam/iterator_test.gleam
+++ b/test/gleam/iterator_test.gleam
@@ -1,5 +1,5 @@
import gleam/should
-import gleam/iterator
+import gleam/iterator.{Done, Next}
import gleam/list
// a |> from_list |> to_list == a
@@ -17,6 +17,30 @@ pub fn to_from_list_test() {
test([1, 2, 4, 8])
}
+pub fn step_test() {
+ let test = fn(subject) {
+ let step =
+ subject
+ |> iterator.from_list
+ |> iterator.step
+
+ case subject {
+ [] ->
+ step
+ |> should.equal(Done)
+
+ [h, ..t] ->
+ step
+ |> should.equal(Next(h, iterator.from_list(t)))
+ }
+ }
+
+ test([])
+ test([1])
+ test([1, 2])
+ test([1, 2, 3])
+}
+
// a |> from_list |> take(n) == a |> list.take(_, n)
pub fn take_test() {
let test = fn(n, subject) {