From 032861ade7bdbe2c7e939b9b2995ed2ad1a1cdc6 Mon Sep 17 00:00:00 2001 From: shugo Date: Thu, 15 Mar 2012 09:25:03 +0000 Subject: * enumerator.c (lazy_zip, lazy_cycle): Enumerator::Lazy#{zip,cycle} should be eager when a block is given, to be consistent with Enumerable#{zip,cycle}. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35041 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/ruby/test_lazy_enumerator.rb | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'test/ruby') diff --git a/test/ruby/test_lazy_enumerator.rb b/test/ruby/test_lazy_enumerator.rb index 7450875fc0..f6fc870fb6 100644 --- a/test/ruby/test_lazy_enumerator.rb +++ b/test/ruby/test_lazy_enumerator.rb @@ -139,9 +139,12 @@ class TestLazyEnumerator < Test::Unit::TestCase end def test_zip_with_block + # zip should be eager when a block is given a = Step.new(1..3) - assert_equal(["a", 1], a.lazy.zip("a".."c") {|x, y| [y, x]}.first) - assert_equal(1, a.current) + ary = [] + assert_equal(nil, a.lazy.zip("a".."c") {|x, y| ary << [x, y]}) + assert_equal(a.zip("a".."c"), ary) + assert_equal(3, a.current) end def test_take @@ -190,8 +193,15 @@ class TestLazyEnumerator < Test::Unit::TestCase assert_equal(3, a.current) assert_equal("1", a.lazy.cycle(2).map(&:to_s).first) assert_equal(1, a.current) - assert_equal("1", a.lazy.cycle(2, &:to_s).first) - assert_equal(1, a.current) + end + + def test_cycle_with_block + # cycle should be eager when a block is given + a = Step.new(1..3) + ary = [] + assert_equal(nil, a.lazy.cycle(2) {|i| ary << i}) + assert_equal(a.cycle(2).to_a, ary) + assert_equal(3, a.current) end def test_force -- cgit v1.2.3