spec/fixed_odds_spec.rb in rodders-3.0.0 vs spec/fixed_odds_spec.rb in rodders-3.0.1
- old
+ new
@@ -23,38 +23,18 @@
value = '4/1 on'
FixedOdds.fractional_odds(value)
value.end_with?('on').should == true
end
- it "treats '4/1 against' the same as '4/1'" do
- FixedOdds.fractional_odds('4/1 against').should == FixedOdds.fractional_odds('4/1')
- end
+ specify { FixedOdds.fractional_odds('4/1 against').should == FixedOdds.fractional_odds('4/1') }
+ specify { FixedOdds.fractional_odds('4/1 on').should == FixedOdds.fractional_odds('1/4') }
+ specify { FixedOdds.fractional_odds('evens').should == FixedOdds.fractional_odds('1/1') }
+ specify { FixedOdds.fractional_odds('even money').should == FixedOdds.fractional_odds('1/1') }
+ specify { FixedOdds.fractional_odds('4-to-1').should == FixedOdds.fractional_odds('4/1') }
+ specify { FixedOdds.fractional_odds('4-to-1 against').should == FixedOdds.fractional_odds('4/1') }
+ specify { FixedOdds.fractional_odds('4-to-1 on').should == FixedOdds.fractional_odds('1/4') }
- it "treats '4/1 on' the same as '1/4'" do
- FixedOdds.fractional_odds('4/1 on').should == FixedOdds.fractional_odds('1/4')
- end
-
- it "treats 'evens' as '1/1'" do
- FixedOdds.fractional_odds('evens').should == FixedOdds.fractional_odds('1/1')
- end
-
- it "treats 'even money' as '1/1'" do
- FixedOdds.fractional_odds('even money').should == FixedOdds.fractional_odds('1/1')
- end
-
- it "treats '4-to-1' as '4/1'" do
- FixedOdds.fractional_odds('4-to-1').should == FixedOdds.fractional_odds('4/1')
- end
-
- it "treats '4-to-1 against' as '4/1'" do
- FixedOdds.fractional_odds('4-to-1 against').should == FixedOdds.fractional_odds('4/1')
- end
-
- it "treats '4-to-1 on' as '1/4'" do
- FixedOdds.fractional_odds('4-to-1 on').should == FixedOdds.fractional_odds('1/4')
- end
-
it "raises error if numerator has decimal point" do
expect {
FixedOdds.fractional_odds '1.1/4'
}.to raise_error(
RuntimeError,
@@ -98,38 +78,16 @@
RuntimeError,
/could not parse "-100.1" as moneyline odds/
)
end
- describe "positive figures" do
- it "treats '+400' as meaning winning £400 on a £100 bet" do
- plus400 = FixedOdds.moneyline_odds('+400')
- plus400.profit_on_stake(Money.parse '£100').should == Money.parse('£400')
- end
+ specify { FixedOdds.moneyline_odds('+400').profit_on_stake(Money.parse '£100').should == Money.parse('£400') }
+ specify { FixedOdds.moneyline_odds('+100').profit_on_stake(Money.parse '£100').should == Money.parse('£100') }
- it "treats +100 as meaning winning £100 on a £100 bet" do
- plus100 = FixedOdds.moneyline_odds('+100')
- plus100.profit_on_stake(Money.parse '£100').should == Money.parse('£100')
- end
- end
-
- describe "negative figures" do
- it "treats '-400' as meaning you need to wager £400 to win £100" do
- minus400 = FixedOdds.moneyline_odds('-400')
- minus400.profit_on_stake(Money.parse '£400').should == Money.parse('£100')
- end
-
- it "treats '-100' as meaning you need to wager £100 to win £100" do
- minus100 = FixedOdds.moneyline_odds('-100')
- minus100.profit_on_stake(Money.parse '£100').should == Money.parse('£100')
- end
-
- it "treats '+100' as meaning you need to wager £100 to win £100" do
- plus100 = FixedOdds.moneyline_odds('+100')
- plus100.profit_on_stake(Money.parse '£100').should == Money.parse('£100')
- end
- end
+ specify { FixedOdds.moneyline_odds('-400').profit_on_stake(Money.parse '£400').should == Money.parse('£100') }
+ specify { FixedOdds.moneyline_odds('-100').profit_on_stake(Money.parse '£100').should == Money.parse('£100') }
+ specify { FixedOdds.moneyline_odds('+100').profit_on_stake(Money.parse '£100').should == Money.parse('£100') }
end
describe ".decimal_odds" do
it "raises error if not decimal odds" do
expect {
@@ -138,24 +96,13 @@
RuntimeError,
/could not parse "-400" as decimal odds/
)
end
- it "treats '2' as meaning you have to wager £1 to win £1" do
- d2 = FixedOdds.decimal_odds '2'
- d2.profit_on_stake(Money.parse '£1').should == Money.parse('£1')
- end
-
- it "treats '5' as meaning you have to wager £1 to win £4" do
- d5 = FixedOdds.decimal_odds '5'
- d5.profit_on_stake(Money.parse '£1').should == Money.parse('£4')
- end
-
- it "treats '1.25' as meaning you have to wager £4 to win £1" do
- d1_25 = FixedOdds.decimal_odds '1.25'
- d1_25.profit_on_stake(Money.parse '£4').should == Money.parse('£1')
- end
+ specify { FixedOdds.decimal_odds('2').profit_on_stake(Money.parse '£1').should == Money.parse('£1') }
+ specify { FixedOdds.decimal_odds('5').profit_on_stake(Money.parse '£1').should == Money.parse('£4') }
+ specify { FixedOdds.decimal_odds('1.25').profit_on_stake(Money.parse '£4').should == Money.parse('£1') }
end
describe ".from_s" do
describe "bad input" do
it "rejects garbage" do
@@ -176,47 +123,32 @@
/could not parse ""/
)
end
describe "fractional odds" do
- it "parses '4/1'" do
- FixedOdds.from_s('4/1').should == FixedOdds.fractional_odds('4/1')
- end
+ specify { FixedOdds.from_s('4/1').should == FixedOdds.fractional_odds('4/1') }
+ specify { FixedOdds.from_s('evens').should == FixedOdds.fractional_odds('1/1') }
+ specify { FixedOdds.from_s('even money').should == FixedOdds.fractional_odds('1/1') }
+ specify { FixedOdds.from_s('4/1 against').should == FixedOdds.fractional_odds('4/1') }
+ specify { FixedOdds.from_s('4/1 on').should == FixedOdds.fractional_odds('1/4') }
+ specify { FixedOdds.from_s('4-to-1').should == FixedOdds.fractional_odds('4/1') }
+ specify { FixedOdds.from_s('4-to-1 against').should == FixedOdds.fractional_odds('4/1') }
+ specify { FixedOdds.from_s('4-to-1 on').should == FixedOdds.fractional_odds('1/4') }
- it "parses 'evens'" do
- FixedOdds.from_s('evens').should == FixedOdds.fractional_odds('1/1')
+ it "raises an error for a zero numerator" do
+ expect {
+ FixedOdds.from_s '0/4'
+ }.to raise_error(
+ ArgumentError
+ )
end
- it "parses 'even money'" do
- FixedOdds.from_s('even money').should == FixedOdds.fractional_odds('1/1')
- end
-
- it "parses '4/1 against'" do
- FixedOdds.from_s('4/1 against').should == FixedOdds.fractional_odds('4/1')
- end
-
- it "parses '4/1 on'" do
- FixedOdds.from_s('4/1 on').should == FixedOdds.fractional_odds('1/4')
- end
-
- it "parses '4-to-1'" do
- FixedOdds.from_s('4-to-1').should == FixedOdds.fractional_odds('4/1')
- end
-
- it "parses '4-to-1 against'" do
- FixedOdds.from_s('4-to-1 against').should == FixedOdds.fractional_odds('4/1')
- end
-
- it "parses '4-to-1 on'" do
- FixedOdds.from_s('4-to-1 on').should == FixedOdds.fractional_odds('1/4')
- end
-
it "raises an error for a zero denominator" do
expect {
FixedOdds.from_s '4/0'
}.to raise_error(
- ZeroDivisionError
+ ArgumentError
)
end
end
describe "moneyline odds" do
@@ -246,156 +178,72 @@
describe "#==" do
it "treats equivalent fractions equally" do
FixedOdds.fractional_odds('100/30').should == FixedOdds.fractional_odds('10/3')
end
- it "recognises '1/1' and '2' are the same" do
- FixedOdds.fractional_odds('1/1').should == FixedOdds.decimal_odds('2')
- end
-
- it "recognises '4/1' and '5' are the same" do
- FixedOdds.fractional_odds('4/1').should == FixedOdds.decimal_odds('5')
- end
-
- it "recognises '1/4' and '1.25' are the same" do
- FixedOdds.fractional_odds('1/4').should == FixedOdds.decimal_odds('1.25')
- end
-
- it "recognises '4/1' and '+400' are the same" do
- FixedOdds.fractional_odds('4/1').should == FixedOdds.moneyline_odds('+400')
- end
-
- it "recognises '1/4' and '-400' are the same" do
- FixedOdds.fractional_odds('1/4').should == FixedOdds.moneyline_odds('-400')
- end
-
it "recognises '+100' and '-100' are the same" do
FixedOdds.moneyline_odds('+100').should == FixedOdds.moneyline_odds('-100')
end
+
+ specify { FixedOdds.fractional_odds('1/1').should == FixedOdds.decimal_odds('2') }
+ specify { FixedOdds.fractional_odds('4/1').should == FixedOdds.decimal_odds('5') }
+ specify { FixedOdds.fractional_odds('1/4').should == FixedOdds.decimal_odds('1.25') }
+ specify { FixedOdds.fractional_odds('4/1').should == FixedOdds.moneyline_odds('+400') }
+ specify { FixedOdds.fractional_odds('1/4').should == FixedOdds.moneyline_odds('-400') }
end
describe "#to_s" do
it "is in fractional odds format" do
FixedOdds.from_s('+400').to_s.should == '4/1'
end
end
describe "#to_s_fractional" do
- it "displays '4/1' as '4/1'" do
- FixedOdds.fractional_odds('4/1').to_s_fractional.should == '4/1'
- end
-
- it "is in the lowest terms" do
- FixedOdds.fractional_odds('100/30').to_s_fractional.should == '10/3'
- end
-
- it "is '4/1' for '+400'" do
- FixedOdds.moneyline_odds('+400').to_s_fractional.should == '4/1'
- end
-
- it "is '4/1' for '5'" do
- FixedOdds.decimal_odds('5').to_s_fractional.should == '4/1'
- end
-
- it "is '1/1' for '+100'" do
- FixedOdds.moneyline_odds('+100').to_s_fractional.should == '1/1'
- end
-
- it "is '1/1' for '-100'" do
- FixedOdds.moneyline_odds('-100').to_s_fractional.should == '1/1'
- end
+ specify { FixedOdds.fractional_odds('4/1').to_s_fractional.should == '4/1' }
+ specify { FixedOdds.fractional_odds('100/30').to_s_fractional.should == '10/3' }
+ specify { FixedOdds.moneyline_odds('+400').to_s_fractional.should == '4/1' }
+ specify { FixedOdds.decimal_odds('5').to_s_fractional.should == '4/1' }
+ specify { FixedOdds.moneyline_odds('+100').to_s_fractional.should == '1/1' }
+ specify { FixedOdds.moneyline_odds('-100').to_s_fractional.should == '1/1' }
end
describe "#to_s_moneyline" do
- it "is '+400' for '+400'" do
- FixedOdds.moneyline_odds('+400').to_s_moneyline.should == ('+400')
- end
-
- it "is '-100' for '+100' as '-100'" do
- FixedOdds.moneyline_odds('+100').to_s_moneyline.should == ('-100')
- end
-
- it "is '-100' as '-100'" do
- FixedOdds.moneyline_odds('-100').to_s_moneyline.should == ('-100')
- end
-
- it "is '+400' for '4/1'" do
- FixedOdds.fractional_odds('4/1').to_s_moneyline.should == '+400'
- end
-
- it "is '+400' for '5'" do
- FixedOdds.decimal_odds('5').to_s_moneyline.should == '+400'
- end
-
- it "is '-400' for '1.25'" do
- FixedOdds.decimal_odds('1.25').to_s_moneyline.should == '-400'
- end
+ specify { FixedOdds.moneyline_odds('+400').to_s_moneyline.should == ('+400') }
+ specify { FixedOdds.moneyline_odds('+100').to_s_moneyline.should == ('-100') }
+ specify { FixedOdds.moneyline_odds('-100').to_s_moneyline.should == ('-100') }
+ specify { FixedOdds.fractional_odds('4/1').to_s_moneyline.should == '+400' }
+ specify { FixedOdds.fractional_odds('22/7').to_s_moneyline.should == '+314' }
+ specify { FixedOdds.decimal_odds('5').to_s_moneyline.should == '+400' }
+ specify { FixedOdds.decimal_odds('1.25').to_s_moneyline.should == '-400' }
end
describe "#to_s_decimal" do
- it "is '1.25' for '1.25'" do
- FixedOdds.decimal_odds('1.25').to_s_decimal.should == '1.25'
- end
-
- it "is '1.25' for '1/4'" do
- FixedOdds.fractional_odds('1/4').to_s_decimal.should == '1.25'
- end
-
- it "is '1.25' for '-400'" do
- FixedOdds.moneyline_odds('-400').to_s_decimal.should == '1.25'
- end
-
- it "is '2' for '+100'" do
- FixedOdds.moneyline_odds('+100').to_s_decimal.should == '2'
- end
-
- it "is '2' for '-100'" do
- FixedOdds.moneyline_odds('-100').to_s_decimal.should == '2'
- end
+ specify { FixedOdds.decimal_odds('1.25').to_s_decimal.should == '1.25' }
+ specify { FixedOdds.fractional_odds('1/4').to_s_decimal.should == '1.25' }
+ specify { FixedOdds.moneyline_odds('-400').to_s_decimal.should == '1.25' }
+ specify { FixedOdds.moneyline_odds('+100').to_s_decimal.should == '2' }
+ specify { FixedOdds.moneyline_odds('-100').to_s_decimal.should == '2' }
end
describe "#profit_on_stake" do
- it "is £4 on a £1 stake on a 4/1 bet" do
- fourToOne = FixedOdds.fractional_odds '4/1'
- fourToOne.profit_on_stake(Money.parse '£1').should == Money.parse('£4')
- end
+ specify { FixedOdds.fractional_odds('1/1').profit_on_stake(Money.parse '£1').should == Money.parse('£1') }
+ specify { FixedOdds.fractional_odds('2/1').profit_on_stake(Money.parse '£1').should == Money.parse('£2') }
+ specify { FixedOdds.fractional_odds('3/2').profit_on_stake(Money.parse '£2').should == Money.parse('£3') }
+ end
- it "is £0.25 on a £1 stake with a 1/4 bet" do
- oneToFour = FixedOdds.fractional_odds '1/4'
- oneToFour.profit_on_stake(Money.parse '£1').should == Money.parse('£0.25')
- end
+ describe "#stake_to_profit" do
+ specify { FixedOdds.fractional_odds('1/1').stake_to_profit(Money.parse '£1').should == Money.parse('£1') }
+ specify { FixedOdds.fractional_odds('2/1').stake_to_profit(Money.parse '£2').should == Money.parse('£1') }
+ specify { FixedOdds.fractional_odds('3/2').stake_to_profit(Money.parse '£3').should == Money.parse('£2') }
end
describe "#total_return_on_stake" do
- it "is £5 on a winning 4/1 bet with a £1 stake" do
- fourToOne = FixedOdds.fractional_odds '4/1'
- fourToOne.total_return_on_stake(Money.parse '£1').should == Money.parse('£5')
- end
-
- it "is £125 on a winning 1/4 bet with a £100 stake" do
- oneToFour = FixedOdds.fractional_odds '1/4'
- oneToFour.total_return_on_stake(Money.parse '£100').should == Money.parse('£125')
- end
+ specify { FixedOdds.fractional_odds('1/1').total_return_on_stake(Money.parse '£1').should == Money.parse('£2') }
+ specify { FixedOdds.fractional_odds('2/1').total_return_on_stake(Money.parse '£1').should == Money.parse('£3') }
+ specify { FixedOdds.fractional_odds('3/2').total_return_on_stake(Money.parse '£2').should == Money.parse('£5') }
end
- describe "#stake_to_profit" do
- it "is £1 on a 1/1 to win £1" do
- oneToOne = FixedOdds.fractional_odds '1/1'
- oneToOne.stake_to_profit(Money.parse '£1').should == Money.parse('£1')
- end
-
- it "is £1 on 2/1 to win £2" do
- fourToOne = FixedOdds.fractional_odds '2/1'
- fourToOne.stake_to_profit(Money.parse '£2').should == Money.parse('£1')
- end
- end
-
describe "object comparison" do
- it "'+200' is less likely than '-200'" do
- FixedOdds.from_s('+200').should be < FixedOdds.from_s('-200')
- end
-
- it "'-200' is more likely than '+200'" do
- FixedOdds.from_s('-200').should be > FixedOdds.from_s('+200')
- end
+ specify { FixedOdds.from_s('+200').should be < FixedOdds.from_s('-200') }
+ specify { FixedOdds.from_s('-200').should be > FixedOdds.from_s('+200') }
end
-end
+end
\ No newline at end of file