diff --git a/ChangeLog b/ChangeLog index 02acc2ebba..66773ac554 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Thu Jul 30 21:56:18 2009 Yusuke Endoh + + * test/ruby/test_rand.rb: add tests for Random class. + Thu Jul 30 21:48:56 2009 Yusuke Endoh * random.c (init_genrand): ensure invariant of mt->next and mt->left. diff --git a/test/ruby/test_rand.rb b/test/ruby/test_rand.rb index f32696cf10..2f2e772c1b 100644 --- a/test/ruby/test_rand.rb +++ b/test/ruby/test_rand.rb @@ -168,4 +168,194 @@ class TestRand < Test::Unit::TestCase def test_big_seed assert_random_int(%w(1143843490), 0x100000000, 2**1000000-1) end + + def test_random_gc + r = Random.new(0) + %w(2357136044 2546248239 3071714933).each do |w| + assert_equal(w.to_i, r.int(0x100000000)) + end + GC.start + %w(3626093760 2588848963 3684848379).each do |w| + assert_equal(w.to_i, r.int(0x100000000)) + end + end + + def test_random_type_error + assert_raise(TypeError) { Random.new(Object.new) } + assert_raise(TypeError) { Random.new(0).int(Object.new) } + end + + def test_random_argument_error + assert_raise(ArgumentError) { Random.new(0).float(0, 0) } + end + + def test_random_seed + assert_equal(0, Random.new(0).seed) + assert_equal(0x100000000, Random.new(0x100000000).seed) + assert_equal(2**100, Random.new(2**100).seed) + end + + def test_random_dup + r1 = Random.new(0) + r2 = r1.dup + %w(2357136044 2546248239 3071714933).each do |w| + assert_equal(w.to_i, r1.int(0x100000000)) + end + %w(2357136044 2546248239 3071714933).each do |w| + assert_equal(w.to_i, r2.int(0x100000000)) + end + r2 = r1.dup + %w(3626093760 2588848963 3684848379).each do |w| + assert_equal(w.to_i, r1.int(0x100000000)) + end + %w(3626093760 2588848963 3684848379).each do |w| + assert_equal(w.to_i, r2.int(0x100000000)) + end + end + + def test_random_state + state = <