From 045136d47599596c78e72ecb8de688671dfae669 Mon Sep 17 00:00:00 2001 From: mame Date: Thu, 30 Jul 2009 12:57:02 +0000 Subject: * test/ruby/test_rand.rb: add tests for Random class. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24326 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 4 ++ test/ruby/test_rand.rb | 190 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 194 insertions(+) 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 = <