From 44cd5f21e9d06ccc09ba8e12fb53d64f0df059a3 Mon Sep 17 00:00:00 2001 From: marcandre Date: Tue, 5 Feb 2013 03:49:41 +0000 Subject: * enumerator.c: Finalize and document Lazy.new. [Bug #7248] Add Lazy#to_enum and simplify Lazy#size. * test/ruby/test_lazy_enumerator.rb: tests for above git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39057 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/ruby/test_lazy_enumerator.rb | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) (limited to 'test/ruby/test_lazy_enumerator.rb') diff --git a/test/ruby/test_lazy_enumerator.rb b/test/ruby/test_lazy_enumerator.rb index 65f0446b52..8e0fd50f55 100644 --- a/test/ruby/test_lazy_enumerator.rb +++ b/test/ruby/test_lazy_enumerator.rb @@ -20,7 +20,8 @@ class TestLazyEnumerator < Test::Unit::TestCase def test_initialize assert_equal([1, 2, 3], [1, 2, 3].lazy.to_a) - assert_equal([1, 2, 3], Enumerator::Lazy.new([1, 2, 3]).to_a) + assert_equal([1, 2, 3], Enumerator::Lazy.new([1, 2, 3]){|y, v| y << v}.to_a) + assert_raise(ArgumentError) { Enumerator::Lazy.new([1, 2, 3]) } end def test_each_args @@ -361,10 +362,6 @@ class TestLazyEnumerator < Test::Unit::TestCase end def test_inspect - assert_equal("#", - Enumerator::Lazy.new(1..10).inspect) - assert_equal("#", - Enumerator::Lazy.new(1..10, :cycle, 2).inspect) assert_equal("#", (1..10).lazy.inspect) assert_equal('#>', "foo".each_char.lazy.inspect) @@ -388,10 +385,28 @@ class TestLazyEnumerator < Test::Unit::TestCase EOS end + def test_lazy_to_enum + lazy = [1, 2, 3].lazy + def lazy.foo(*args) + yield args + yield args + end + enum = lazy.to_enum(:foo, :hello, :world) + assert_equal Enumerator::Lazy, enum.class + assert_equal nil, enum.size + assert_equal [[:hello, :world], [:hello, :world]], enum.to_a + + assert_equal [1, 2, 3], lazy.to_enum.to_a + end + def test_size lazy = [1, 2, 3].lazy assert_equal 3, lazy.size - assert_equal 42, Enumerator.new(42){}.lazy.size + assert_equal 42, Enumerator::Lazy.new([],->{42}){}.size + assert_equal 42, Enumerator::Lazy.new([],42){}.size + assert_equal 42, Enumerator::Lazy.new([],42){}.lazy.size + assert_equal 42, lazy.to_enum{ 42 }.size + %i[map collect].each do |m| assert_equal 3, lazy.send(m){}.size end -- cgit v1.2.3