aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorRobert Attard <robert.attard@mail.mcgill.ca>2021-07-12 09:51:14 -0400
committerLouis Pilfold <louis@lpil.uk>2021-07-13 17:11:38 +0100
commit42daa4dd149d33e99dc92d0b701132eb92b48000 (patch)
tree147780a0d80608b1af5c0f5777293958e458da12 /test
parentb9200d18f54a6f7aa3bf2fbda2782ab84a2289f9 (diff)
downloadgleam_stdlib-42daa4dd149d33e99dc92d0b701132eb92b48000.tar.gz
gleam_stdlib-42daa4dd149d33e99dc92d0b701132eb92b48000.zip
iterator.fold_until
Diffstat (limited to 'test')
-rw-r--r--test/gleam/iterator_test.gleam26
1 files changed, 26 insertions, 0 deletions
diff --git a/test/gleam/iterator_test.gleam b/test/gleam/iterator_test.gleam
index 0c0176f..c8e2c4d 100644
--- a/test/gleam/iterator_test.gleam
+++ b/test/gleam/iterator_test.gleam
@@ -421,3 +421,29 @@ if erlang {
|> should.equal([1, 100, 2, 3, 4])
}
}
+
+// a |> from_list |> fold_until(a, f) == a |> list.fold_until(_, a, f)
+pub fn fold_until_test() {
+ let test = fn(subject, acc, f) {
+ subject
+ |> iterator.from_list()
+ |> iterator.fold_until(acc, f)
+ |> should.equal(list.fold_until(subject, acc, f))
+ }
+
+ let f = fn(e, acc) {
+ case e {
+ _ if e < 6 -> list.Continue([e, ..acc])
+ _ -> list.Stop(acc)
+ }
+ }
+ test([], [], f)
+ test([1], [], f)
+ test([1, 2, 3], [], f)
+ test([1, 2, 3, 4, 5, 6, 7, 8], [], f)
+
+ [1, 2, 3, 4, 5, 6, 7, 8]
+ |> iterator.from_list()
+ |> iterator.fold_until([], f)
+ |> should.equal([5, 4, 3, 2, 1])
+}