summaryrefslogtreecommitdiff
path: root/test/ruby
diff options
context:
space:
mode:
authorJeremy Evans <code@jeremyevans.net>2021-03-05 12:25:51 -0800
committerJeremy Evans <code@jeremyevans.net>2021-03-06 13:56:16 -0800
commite1d16a9e560a615e122e457325bcfb7c47228ed6 (patch)
tree1e93b0256e763f3eedcea7a03309bd12f5007005 /test/ruby
parentbf40fe9fed19a5e22081b133661c0629988f1618 (diff)
Make Enumerator#{+,chain} create lazy chain if any included enumerator is lazy
Implements [Feature #17347]
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/3811
Diffstat (limited to 'test/ruby')
-rw-r--r--test/ruby/test_enumerator.rb12
1 files changed, 12 insertions, 0 deletions
diff --git a/test/ruby/test_enumerator.rb b/test/ruby/test_enumerator.rb
index 9b615ff9db..4e698fc478 100644
--- a/test/ruby/test_enumerator.rb
+++ b/test/ruby/test_enumerator.rb
@@ -820,6 +820,18 @@ class TestEnumerator < Test::Unit::TestCase
assert_equal([[3, 0], [4, 1]], [3].chain([4]).with_index.to_a)
end
+ def test_lazy_chain
+ ea = (10..).lazy.select(&:even?).take(10)
+ ed = (20..).lazy.select(&:odd?)
+ chain = (ea + ed).select{|x| x % 3 == 0}
+ assert_equal(12, chain.next)
+ assert_equal(18, chain.next)
+ assert_equal(24, chain.next)
+ assert_equal(21, chain.next)
+ assert_equal(27, chain.next)
+ assert_equal(33, chain.next)
+ end
+
def test_produce
assert_raise(ArgumentError) { Enumerator.produce }