diff options
author | yugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-01-30 12:49:21 +0000 |
---|---|---|
committer | yugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-01-30 12:49:21 +0000 |
commit | 3ac7927ea610c6c1c6e3fa86fc13751fe2e7cc64 (patch) | |
tree | 30b70b7f034c47bae7b6d7b5ad73a0d99adb90dc /test | |
parent | caa2bb47b35969918e67d3339441750255edb18c (diff) |
merges r25388 from trunk into ruby_1_9_1.
--
* test/test_prime.rb
(TestPrime#test_eratosthenes_works_fine_after_timeout):
test for [ruby-dev:39465].
* lib/prime.rb (Prime::EratosthenesSieve):
fixed [ruby-dev:39465].
suppressed memory reallocation.
constantified some magic numbers.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@26491 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test')
-rw-r--r-- | test/test_prime.rb | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/test/test_prime.rb b/test/test_prime.rb index d7c3bf5720..8317c2e369 100644 --- a/test/test_prime.rb +++ b/test/test_prime.rb @@ -1,6 +1,7 @@ require 'test/unit' require 'prime' require 'stringio' +require 'timeout' class TestPrime < Test::Unit::TestCase # The first 100 prime numbers @@ -143,4 +144,29 @@ class TestPrime < Test::Unit::TestCase assert !-4.prime? end end + + def test_eratosthenes_works_fine_after_timeout + sieve = Prime::EratosthenesSieve.instance + sieve.send(:initialize) + begin + # simulates that Timeout.timeout interrupts Prime::EratosthenesSieve#extend_table + def sieve.Integer(n) + n = super(n) + sleep 10 if /extend_table/ =~ caller.first + return n + end + + begin + Timeout.timeout(0.5) { Prime.each(7*37){} } + flunk("timeout expected") + rescue Timeout::Error + end + ensure + class << sieve + remove_method :Integer + end + end + + refute_includes Prime.each(7*37).to_a, 7*37, "[ruby-dev:39465]" + end end |