diff options
| author | KOBAYASHI Shuji <[email protected]> | 2019-04-17 21:04:46 +0900 |
|---|---|---|
| committer | KOBAYASHI Shuji <[email protected]> | 2019-04-17 21:04:46 +0900 |
| commit | 2ae727ac3aacd892f71f32ba4b3f343bd8705e54 (patch) | |
| tree | 4b6e7b58bdfe02b68fb26efd55de5b2b686ca145 /mrbgems/mruby-random | |
| parent | 77c42988c816a68a6336aef2880d700b403051fe (diff) | |
| download | mruby-2ae727ac3aacd892f71f32ba4b3f343bd8705e54.tar.gz mruby-2ae727ac3aacd892f71f32ba4b3f343bd8705e54.zip | |
Add `Array#sample` test
And simplify tests for `Array#shuffle` and `Array#shuffle!`.
Diffstat (limited to 'mrbgems/mruby-random')
| -rw-r--r-- | mrbgems/mruby-random/test/random.rb | 54 |
1 files changed, 40 insertions, 14 deletions
diff --git a/mrbgems/mruby-random/test/random.rb b/mrbgems/mruby-random/test/random.rb index 813e23968..cf4a55141 100644 --- a/mrbgems/mruby-random/test/random.rb +++ b/mrbgems/mruby-random/test/random.rb @@ -39,28 +39,20 @@ assert("return class of Kernel.rand") do end assert("Array#shuffle") do - ary = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] - orig = ary.dup + orig = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] + ary = orig.dup shuffled = ary.shuffle assert_equal(orig, ary) assert_not_equal(ary, shuffled) - assert_equal(ary.size, shuffled.size) - shuffled.each do |x| - assert_include(ary, x) - ary.delete(x) - end + assert_equal(orig, shuffled.sort) end assert('Array#shuffle!') do - ary = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] - orig = ary.dup + orig = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] + ary = orig.dup assert_same(ary, ary.shuffle!) assert_not_equal(orig, ary) - assert_equal(orig.size, ary.size) - ary.each do |x| - assert_include(orig, x) - orig.delete(x) - end + assert_equal(orig, ary.sort) end assert("Array#shuffle(random)") do @@ -94,3 +86,37 @@ assert('Array#shuffle!(random)') do assert_equal(ary1, ary2) assert_not_equal(ary1, ary3) end + +assert('Array#sample') do + 100.times do + assert_include([0, 1, 2], [2, 1, 0].sample) + [2, 1, 0].sample(2).each { |sample| assert_include([0, 1, 2], sample) } + h = {} + (1..10).to_a.sample(7).each do |sample| + assert_not_include(h, sample) + h[sample] = true + end + end + + assert_nil([].sample) + assert_equal([], [].sample(1)) + assert_equal([], [2, 1].sample(0)) + assert_raise(TypeError) { [2, 1].sample(true) } + assert_raise(ArgumentError) { [2, 1].sample(-1) } +end + +assert('Array#sample(random)') do + assert_raise(TypeError) do + # this will cause an exception due to the wrong argument + [1, 2].sample(2, "Not a Random instance") + end + + # verify that the same seed causes the same results + ary = (1..10).to_a + srand(15) + samples1 = ary.sample(4) + samples2 = ary.sample(4, Random.new(15)) + samples3 = ary.sample(4, Random.new(16)) + assert_equal(samples1, samples2) + assert_not_equal(samples1, samples3) +end |
