summaryrefslogtreecommitdiff
path: root/spec/ruby/core/random/bytes_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/ruby/core/random/bytes_spec.rb')
-rw-r--r--spec/ruby/core/random/bytes_spec.rb29
1 files changed, 29 insertions, 0 deletions
diff --git a/spec/ruby/core/random/bytes_spec.rb b/spec/ruby/core/random/bytes_spec.rb
new file mode 100644
index 0000000000..c9be07cd3f
--- /dev/null
+++ b/spec/ruby/core/random/bytes_spec.rb
@@ -0,0 +1,29 @@
+# encoding: binary
+require_relative '../../spec_helper'
+require_relative 'shared/bytes'
+
+describe "Random#bytes" do
+ it_behaves_like :random_bytes, :bytes, Random.new
+
+ it "returns the same output for a given seed" do
+ Random.new(33).bytes(2).should == Random.new(33).bytes(2)
+ end
+
+ it "returns the same numeric output for a given seed across all implementations and platforms" do
+ rnd = Random.new(33)
+ rnd.bytes(2).should == "\x14\\"
+ rnd.bytes(1000) # skip some
+ rnd.bytes(2).should == "\xA1p"
+ end
+
+ it "returns the same numeric output for a given huge seed across all implementations and platforms" do
+ rnd = Random.new(2 ** (63 * 4))
+ rnd.bytes(2).should == "_\x91"
+ rnd.bytes(1000) # skip some
+ rnd.bytes(2).should == "\x17\x12"
+ end
+end
+
+describe "Random.bytes" do
+ it_behaves_like :random_bytes, :bytes, Random
+end