spec/die_spec.rb in games_dice-0.3.12 vs spec/die_spec.rb in games_dice-0.4.0
- old
+ new
@@ -1,81 +1,81 @@
-require 'helpers'
-
-describe GamesDice::Die do
-
- before do
- # Set state of default PRNG
- srand(4567)
- end
-
- describe "#new" do
- it "should return an object that represents e.g. a six-sided die" do
- die = GamesDice::Die.new(6)
- die.min.should == 1
- die.max.should == 6
- die.sides.should == 6
- end
-
- it "should accept any object with a rand(Integer) method as the second param" do
- prng = TestPRNG.new()
- die = GamesDice::Die.new(20,prng)
- [16,7,3,11,16,18,20,7].each do |expected|
- die.roll.should == expected
- die.result.should == expected
- end
- end
- end
-
- describe "#roll and #result" do
- it "should return results based on Ruby's internal rand() by default" do
- die = GamesDice::Die.new(10)
- [5,4,10,4,7,8,1,9].each do |expected|
- die.roll.should == expected
- die.result.should == expected
- end
- end
- end
-
- describe "#min and #max" do
- it "should calculate correct min, max" do
- die = GamesDice::Die.new(20)
- die.min.should == 1
- die.max.should == 20
- end
- end
-
- describe "#probabilities" do
- it "should return the die's probability distribution as a GamesDice::Probabilities object" do
- die = GamesDice::Die.new(6)
- probs = die.probabilities
- probs.should be_a GamesDice::Probabilities
-
- probs.to_h.should be_valid_distribution
-
- probs.p_eql(1).should be_within(1e-10).of 1/6.0
- probs.p_eql(2).should be_within(1e-10).of 1/6.0
- probs.p_eql(3).should be_within(1e-10).of 1/6.0
- probs.p_eql(4).should be_within(1e-10).of 1/6.0
- probs.p_eql(5).should be_within(1e-10).of 1/6.0
- probs.p_eql(6).should be_within(1e-10).of 1/6.0
-
- probs.expected.should be_within(1e-10).of 3.5
- end
- end
-
- describe "#all_values" do
- it "should return array with one result value per side" do
- die = GamesDice::Die.new(8)
- die.all_values.should == [1,2,3,4,5,6,7,8]
- end
- end
-
- describe "#each_value" do
- it "should iterate through all sides of the die" do
- die = GamesDice::Die.new(10)
- arr = []
- die.each_value { |x| arr << x }
- arr.should == [1,2,3,4,5,6,7,8,9,10]
- end
- end
-
-end
\ No newline at end of file
+# frozen_string_literal: true
+
+require 'helpers'
+
+describe GamesDice::Die do
+ before do
+ # Set state of default PRNG
+ srand(4567)
+ end
+
+ describe '#new' do
+ it 'should return an object that represents e.g. a six-sided die' do
+ die = GamesDice::Die.new(6)
+ expect(die.min).to eql 1
+ expect(die.max).to eql 6
+ expect(die.sides).to eql 6
+ end
+
+ it 'should accept any object with a rand(Integer) method as the second param' do
+ prng = TestPRNG.new
+ die = GamesDice::Die.new(20, prng)
+ [16, 7, 3, 11, 16, 18, 20, 7].each do |expected|
+ expect(die.roll).to eql expected
+ expect(die.result).to eql expected
+ end
+ end
+ end
+
+ describe '#roll and #result' do
+ it "should return results based on Ruby's internal rand() by default" do
+ die = GamesDice::Die.new(10)
+ [5, 4, 10, 4, 7, 8, 1, 9].each do |expected|
+ expect(die.roll).to eql expected
+ expect(die.result).to eql expected
+ end
+ end
+ end
+
+ describe '#min and #max' do
+ it 'should calculate correct min, max' do
+ die = GamesDice::Die.new(20)
+ expect(die.min).to eql 1
+ expect(die.max).to eql 20
+ end
+ end
+
+ describe '#probabilities' do
+ it "should return the die's probability distribution as a GamesDice::Probabilities object" do
+ die = GamesDice::Die.new(6)
+ probs = die.probabilities
+ expect(probs).to be_a GamesDice::Probabilities
+
+ expect(probs.to_h).to be_valid_distribution
+
+ expect(probs.p_eql(1)).to be_within(1e-10).of 1 / 6.0
+ expect(probs.p_eql(2)).to be_within(1e-10).of 1 / 6.0
+ expect(probs.p_eql(3)).to be_within(1e-10).of 1 / 6.0
+ expect(probs.p_eql(4)).to be_within(1e-10).of 1 / 6.0
+ expect(probs.p_eql(5)).to be_within(1e-10).of 1 / 6.0
+ expect(probs.p_eql(6)).to be_within(1e-10).of 1 / 6.0
+
+ expect(probs.expected).to be_within(1e-10).of 3.5
+ end
+ end
+
+ describe '#all_values' do
+ it 'should return array with one result value per side' do
+ die = GamesDice::Die.new(8)
+ expect(die.all_values).to eql [1, 2, 3, 4, 5, 6, 7, 8]
+ end
+ end
+
+ describe '#each_value' do
+ it 'should iterate through all sides of the die' do
+ die = GamesDice::Die.new(10)
+ arr = []
+ die.each_value { |x| arr << x }
+ expect(arr).to eql [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
+ end
+ end
+end