From f7d4df50c004d775a296b8989bb3ac792db6e639 Mon Sep 17 00:00:00 2001 From: mame Date: Fri, 24 Oct 2008 14:01:21 +0000 Subject: [PATCH] * test/ruby/test_array.rb (test_sample): add tests for size of returned array and randomness. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19922 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ test/ruby/test_array.rb | 17 +++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/ChangeLog b/ChangeLog index b70a774919..139d8b0fe5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Fri Oct 24 22:59:27 2008 Yusuke Endoh + + * test/ruby/test_array.rb (test_sample): add tests for size of + returned array and randomness. + Fri Oct 24 21:50:21 2008 Nobuyoshi Nakada * id.h, template/id.h.tmpl (enum ruby_method_ids): reordered. diff --git a/test/ruby/test_array.rb b/test/ruby/test_array.rb index 1b917ca77a..cfb36045e3 100644 --- a/test/ruby/test_array.rb +++ b/test/ruby/test_array.rb @@ -1545,6 +1545,23 @@ class TestArray < Test::Unit::TestCase assert([0, 1, 2].include?(sample)) } end + + srand(0) + a = (1..18).to_a + (0..20).each do |n| + 10000.times do + b = a.sample(n) + assert_equal([n, 18].min, b.uniq.size) + assert_equal(a, (a | b).sort) + assert_equal(b.sort, (a & b).sort) + end + + h = Hash.new(0) + 10000.times do + a.sample(n).each {|x| h[x] += 1 } + end + assert_operator(h.values.min * 2, :>=, h.values.max) if n != 0 + end end def test_cycle