1require_relative '../../spec_helper' 2require_relative 'fixtures/classes' 3 4describe "Kernel.srand" do 5 it "is a private method" do 6 Kernel.should have_private_instance_method(:srand) 7 end 8 9 it "returns the previous seed value" do 10 srand(10) 11 srand(20).should == 10 12 end 13 14 it "seeds the RNG correctly and repeatably" do 15 srand(10) 16 x = rand 17 srand(10) 18 rand.should == x 19 end 20 21 it "defaults number to a random value" do 22 lambda { srand }.should_not raise_error 23 srand.should_not == 0 24 end 25 26 it "accepts and uses a seed of 0" do 27 srand(0) 28 srand.should == 0 29 end 30 31 it "accepts a negative seed" do 32 srand(-17) 33 srand.should == -17 34 end 35 36 it "accepts a Bignum as a seed" do 37 srand(0x12345678901234567890) 38 srand.should == 0x12345678901234567890 39 end 40 41 it "calls #to_int on seed" do 42 srand(3.8) 43 srand.should == 3 44 45 s = mock('seed') 46 s.should_receive(:to_int).and_return 0 47 srand(s) 48 end 49 50 it "raises a TypeError when passed nil" do 51 lambda { srand(nil) }.should raise_error(TypeError) 52 end 53 54 it "raises a TypeError when passed a String" do 55 lambda { srand("7") }.should raise_error(TypeError) 56 end 57end 58 59describe "Kernel#srand" do 60 it "needs to be reviewed for spec completeness" 61end 62