aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorMarcin Puc <tranzystorek.io@protonmail.com>2022-12-22 00:17:22 +0100
committerLouis Pilfold <louis@lpil.uk>2022-12-22 20:18:07 +0000
commit91bc303735833f41b615d3ebe8e2606068ed501d (patch)
tree9cdc5df028eb911e73ba00100d1a6117f23db768 /test
parent20ba2e15981bbd1b502015cec86dcc51f9c55098 (diff)
downloadgleam_stdlib-91bc303735833f41b615d3ebe8e2606068ed501d.tar.gz
gleam_stdlib-91bc303735833f41b615d3ebe8e2606068ed501d.zip
add more test cases for transform
Diffstat (limited to 'test')
-rw-r--r--test/gleam/iterator_test.gleam49
1 files changed, 47 insertions, 2 deletions
diff --git a/test/gleam/iterator_test.gleam b/test/gleam/iterator_test.gleam
index e31b628..87cb848 100644
--- a/test/gleam/iterator_test.gleam
+++ b/test/gleam/iterator_test.gleam
@@ -69,14 +69,59 @@ pub fn take_test() {
test(22, [0, 1, 2, 3, 4])
}
-pub fn transform_test() {
+pub fn transform_index_test() {
+ let f = fn(i, el) { Next(#(i, el), i + 1) }
+
["a", "b", "c", "d"]
|> iterator.from_list
- |> iterator.transform(0, fn(i, el) { Next(#(i, el), i + 1) })
+ |> iterator.transform(0, f)
|> iterator.to_list
|> should.equal([#(0, "a"), #(1, "b"), #(2, "c"), #(3, "d")])
}
+pub fn transform_take_test() {
+ let f = fn(rem, el) {
+ case rem > 0 {
+ False -> Done
+ True -> Next(el, rem - 1)
+ }
+ }
+
+ [1, 2, 3, 4, 5]
+ |> iterator.from_list
+ |> iterator.transform(3, f)
+ |> iterator.to_list
+ |> should.equal([1, 2, 3])
+}
+
+pub fn transform_take_while_test() {
+ let f = fn(_, el) {
+ case el < 3 {
+ True -> Next(el, Nil)
+ False -> Done
+ }
+ }
+
+ [1, 2, 3, 2, 4]
+ |> iterator.from_list
+ |> iterator.transform(Nil, f)
+ |> iterator.to_list
+ |> should.equal([1, 2])
+}
+
+pub fn transform_scan_test() {
+ let f = fn(acc, el) {
+ let result = acc + el
+ Next(result, result)
+ }
+
+ [1, 2, 3, 4, 5]
+ |> iterator.from_list
+ |> iterator.transform(0, f)
+ |> iterator.to_list
+ |> should.equal([1, 3, 6, 10, 15])
+}
+
// a |> from_list |> fold(a, f) == a |> list.fold(_, a, f)
pub fn fold_test() {
let test = fn(subject, acc, f) {