source: EcnlProtoTool/trunk/mruby-2.1.1/mrbgems/mruby-random/test/random.rb@ 439

Last change on this file since 439 was 439, checked in by coas-nagasima, 4 years ago

mrubyを2.1.1に更新

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/x-ruby;charset=UTF-8
File size: 3.0 KB
Line 
1##
2# Random Test
3
4assert("Random.new") do
5 r1 = Random.new(123)
6 r2 = Random.new(123)
7 r3 = Random.new(124)
8 assert_equal(r1.rand, r2.rand)
9 assert_not_equal(r1.rand, r3.rand)
10end
11
12assert("Kernel.srand") do
13 srand(234)
14 r1 = rand
15 srand(234)
16 r2 = rand
17 srand(235)
18 r3 = rand
19 assert_equal(r1, r2)
20 assert_not_equal(r1, r3)
21end
22
23assert("Random.srand") do
24 Random.srand(345)
25 r1 = rand
26 srand(345)
27 r2 = Random.rand
28 Random.srand(346)
29 r3 = rand
30 assert_equal(r1, r2)
31 assert_not_equal(r1, r3)
32end
33
34assert("return class of Kernel.rand") do
35 assert_kind_of(Fixnum, rand(3))
36 assert_kind_of(Fixnum, rand(1.5))
37 assert_kind_of(Float, rand)
38 assert_kind_of(Float, rand(0.5))
39end
40
41assert("Array#shuffle") do
42 orig = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
43 ary = orig.dup
44 shuffled = ary.shuffle
45 assert_equal(orig, ary)
46 assert_not_equal(ary, shuffled)
47 assert_equal(orig, shuffled.sort)
48end
49
50assert('Array#shuffle!') do
51 orig = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
52 ary = orig.dup
53 assert_same(ary, ary.shuffle!)
54 assert_not_equal(orig, ary)
55 assert_equal(orig, ary.sort)
56end
57
58assert("Array#shuffle(random)") do
59 assert_raise(TypeError) do
60 # this will cause an exception due to the wrong argument
61 [1, 2].shuffle "Not a Random instance"
62 end
63
64 # verify that the same seed causes the same results
65 ary = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
66 shuffled1 = ary.shuffle Random.new 345
67 shuffled2 = ary.shuffle Random.new 345
68 shuffled3 = ary.shuffle Random.new 346
69 assert_equal(shuffled1, shuffled2)
70 assert_not_equal(shuffled1, shuffled3)
71end
72
73assert('Array#shuffle!(random)') do
74 assert_raise(TypeError) do
75 # this will cause an exception due to the wrong argument
76 [1, 2].shuffle! "Not a Random instance"
77 end
78
79 # verify that the same seed causes the same results
80 ary1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
81 ary1.shuffle! Random.new 345
82 ary2 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
83 ary2.shuffle! Random.new 345
84 ary3 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
85 ary3.shuffle! Random.new 346
86 assert_equal(ary1, ary2)
87 assert_not_equal(ary1, ary3)
88end
89
90assert('Array#sample') do
91 100.times do
92 assert_include([0, 1, 2], [2, 1, 0].sample)
93 [2, 1, 0].sample(2).each { |sample| assert_include([0, 1, 2], sample) }
94 h = {}
95 (1..10).to_a.sample(7).each do |sample|
96 assert_not_include(h, sample)
97 h[sample] = true
98 end
99 end
100
101 assert_nil([].sample)
102 assert_equal([], [].sample(1))
103 assert_equal([], [2, 1].sample(0))
104 assert_raise(TypeError) { [2, 1].sample(true) }
105 assert_raise(ArgumentError) { [2, 1].sample(-1) }
106end
107
108assert('Array#sample(random)') do
109 assert_raise(TypeError) do
110 # this will cause an exception due to the wrong argument
111 [1, 2].sample(2, "Not a Random instance")
112 end
113
114 # verify that the same seed causes the same results
115 ary = (1..10).to_a
116 srand(15)
117 samples1 = ary.sample(4)
118 samples2 = ary.sample(4, Random.new(15))
119 samples3 = ary.sample(4, Random.new(16))
120 assert_equal(samples1, samples2)
121 assert_not_equal(samples1, samples3)
122end
Note: See TracBrowser for help on using the repository browser.