summaryrefslogtreecommitdiff
path: root/test/ruby/test_lazy_enumerator.rb
diff options
context:
space:
mode:
authormarcandre <marcandre@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-02-05 03:49:41 +0000
committermarcandre <marcandre@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-02-05 03:49:41 +0000
commit44cd5f21e9d06ccc09ba8e12fb53d64f0df059a3 (patch)
treeef287c7a16e3f0fcaa3e05bf74aad4e50771da8c /test/ruby/test_lazy_enumerator.rb
parent5af821c6e93256cbc66d5d31c6ccb2e9aaae3dfa (diff)
* 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
Diffstat (limited to 'test/ruby/test_lazy_enumerator.rb')
-rw-r--r--test/ruby/test_lazy_enumerator.rb27
1 files changed, 21 insertions, 6 deletions
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: 1..10:each>",
- Enumerator::Lazy.new(1..10).inspect)
- assert_equal("#<Enumerator::Lazy: 1..10:cycle(2)>",
- Enumerator::Lazy.new(1..10, :cycle, 2).inspect)
assert_equal("#<Enumerator::Lazy: 1..10>", (1..10).lazy.inspect)
assert_equal('#<Enumerator::Lazy: #<Enumerator: "foo":each_char>>',
"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