diff options
author | Jeremy Evans <code@jeremyevans.net> | 2021-03-05 12:25:51 -0800 |
---|---|---|
committer | Jeremy Evans <code@jeremyevans.net> | 2021-03-06 13:56:16 -0800 |
commit | e1d16a9e560a615e122e457325bcfb7c47228ed6 (patch) | |
tree | 1e93b0256e763f3eedcea7a03309bd12f5007005 /test/ruby | |
parent | bf40fe9fed19a5e22081b133661c0629988f1618 (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.rb | 12 |
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 } |