From b402cc71616169bab03fb856e73a7d6519330ca3 Mon Sep 17 00:00:00 2001 From: nobu Date: Tue, 10 May 2016 05:57:11 +0000 Subject: random.c: use bytes * random.c (obj_random_bytes): base on bytes method instead of rand method, not to call toplevel rand method. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54968 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/ruby/test_rand.rb | 11 +++++++++++ test/test_securerandom.rb | 14 ++++++++++++++ 2 files changed, 25 insertions(+) (limited to 'test') diff --git a/test/ruby/test_rand.rb b/test/ruby/test_rand.rb index d4258a7f1c..c24d6cd1ff 100644 --- a/test/ruby/test_rand.rb +++ b/test/ruby/test_rand.rb @@ -526,6 +526,17 @@ END assert_equal(2, gen.limit, bug7935) end + def test_random_ulong_limited_no_rand + c = Class.new do + undef rand + def bytes(n) + "\0"*n + end + end + gen = c.new.extend(Random::Formatter) + assert_equal(1, [1, 2].sample(random: gen)) + end + def test_default_seed assert_separately([], <<-End) seed = Random::DEFAULT::seed diff --git a/test/test_securerandom.rb b/test/test_securerandom.rb index 515d05e6b2..cd5cb1dee2 100644 --- a/test/test_securerandom.rb +++ b/test/test_securerandom.rb @@ -157,6 +157,20 @@ end end end + def test_s_random_number_not_default + msg = "SecureRandom#random_number should not be affected by srand" + seed = srand(0) + x = @it.random_number(1000) + 10.times do|i| + srand(0) + return unless @it.random_number(1000) == x + end + srand(0) + assert_not_equal(x, @it.random_number(1000), msg) + ensure + srand(seed) if seed + end + def test_uuid uuid = @it.uuid assert_equal(36, uuid.size) -- cgit v1.2.3