aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authordrew <drew@drewolson.org>2020-11-02 17:14:35 -0600
committerLouis Pilfold <louis@lpil.uk>2020-11-03 13:21:11 +0000
commitcbac55e668d7fc7df601b604e741b1baa64c7db8 (patch)
tree2da9224edc12c23a7e683c4200dbb8602cfba11c /test
parentaa1450bda6666dc22412e937deccffebaf82733c (diff)
downloadgleam_stdlib-cbac55e668d7fc7df601b604e741b1baa64c7db8.tar.gz
gleam_stdlib-cbac55e668d7fc7df601b604e741b1baa64c7db8.zip
Add flat_map and friends to iterator
The following functions are added to iterator: * append * flatten * flat_map
Diffstat (limited to 'test')
-rw-r--r--test/gleam/iterator_test.gleam54
1 files changed, 54 insertions, 0 deletions
diff --git a/test/gleam/iterator_test.gleam b/test/gleam/iterator_test.gleam
index ce3cdea..acaac81 100644
--- a/test/gleam/iterator_test.gleam
+++ b/test/gleam/iterator_test.gleam
@@ -71,6 +71,60 @@ pub fn map_test() {
test([1, 2, 3, 4, 5, 6, 7, 8], f)
}
+// a |> from_list |> flat_map(f) |> to_list ==
+// a |> list.map(f) |> list.map(to_list) |> list.flatten
+pub fn flat_map_test() {
+ let test = fn(subject, f) {
+ subject
+ |> iterator.from_list
+ |> iterator.flat_map(f)
+ |> iterator.to_list
+ |> should.equal(
+ subject
+ |> list.map(f)
+ |> list.map(iterator.to_list)
+ |> list.flatten,
+ )
+ }
+
+ let f = fn(i) { iterator.range(i, i + 2) }
+
+ test([], f)
+ test([1], f)
+ test([1, 2], f)
+}
+
+// a |> from_list |> append(from_list(b)) |> to_list == list.flatten([a, b])
+pub fn append_test() {
+ let test = fn(left, right) {
+ left
+ |> iterator.from_list
+ |> iterator.append(iterator.from_list(right))
+ |> iterator.to_list
+ |> should.equal(list.flatten([left, right]))
+ }
+
+ test([], [])
+ test([1], [2])
+ test([1, 2], [3, 4])
+}
+
+// a |> list.map(from_list) |> flatten |> to_list == list.flatten(a)
+pub fn flatten_test() {
+ let test = fn(lists) {
+ lists
+ |> list.map(iterator.from_list)
+ |> iterator.from_list
+ |> iterator.flatten
+ |> iterator.to_list
+ |> should.equal(list.flatten(lists))
+ }
+
+ test([[], []])
+ test([[1], [2]])
+ test([[1, 2], [3, 4]])
+}
+
// a |> from_list |> filter(f) |> to_list == a |> list.filter(_, f)
pub fn filter_test() {
let test = fn(subject, f) {