diff options
author | marcandre <marcandre@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-06-12 15:45:59 +0000 |
---|---|---|
committer | marcandre <marcandre@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-06-12 15:45:59 +0000 |
commit | 7c553c96978f1d8c25040bd8f76d7bb63ffb0a2d (patch) | |
tree | 9176d4ea95572d3740eb06c8e47f771c5701eb45 | |
parent | 8de5a427a96f62aacabbe7926f8852c3699ba0a3 (diff) | |
download | ruby-7c553c96978f1d8c25040bd8f76d7bb63ffb0a2d.tar.gz |
* lib/prime.rb: Return sized enumerators.
Patch by Kenichi Kamiya [GH-931]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50857 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | lib/prime.rb | 8 | ||||
-rw-r--r-- | test/test_prime.rb | 7 |
3 files changed, 18 insertions, 2 deletions
@@ -1,3 +1,8 @@ +Sat Jun 13 00:45:08 2015 Marc-Andre Lafortune <ruby-core@marc-andre.ca> + + * lib/prime.rb: Return sized enumerators. + Patch by Kenichi Kamiya [GH-931] + Sat Jun 13 00:45:06 2015 Marc-Andre Lafortune <ruby-core@marc-andre.ca> * lib/prime.rb: Fix with_object with no block given diff --git a/lib/prime.rb b/lib/prime.rb index 1eed28d914..c9575f6a2a 100644 --- a/lib/prime.rb +++ b/lib/prime.rb @@ -270,7 +270,7 @@ class Prime # see +Enumerator+#with_index. def with_index(offset = 0) - return enum_for(:with_index, offset) unless block_given? + return enum_for(:with_index, offset) { Float::INFINITY } unless block_given? return each_with_index(&proc) if offset == 0 each do |prime| @@ -281,11 +281,15 @@ class Prime # see +Enumerator+#with_object. def with_object(obj) - return enum_for(:with_object, obj) unless block_given? + return enum_for(:with_object, obj) { Float::INFINITY } unless block_given? each do |prime| yield prime, obj end end + + def size + Float::INFINITY + end end # An implementation of +PseudoPrimeGenerator+. diff --git a/test/test_prime.rb b/test/test_prime.rb index d4f056466f..48b017e2bc 100644 --- a/test/test_prime.rb +++ b/test/test_prime.rb @@ -106,6 +106,13 @@ class TestPrime < Test::Unit::TestCase end end + def test_enumerator_size + enum = Prime.each + assert_equal Float::INFINITY, enum.size + assert_equal Float::INFINITY, enum.with_object(nil).size + assert_equal Float::INFINITY, enum.with_index(42).size + end + def test_default_instance_does_not_have_compatibility_methods assert !Prime.instance.respond_to?(:succ) assert !Prime.instance.respond_to?(:next) |