spec/FixedOdds_spec.rb in rodders-0.3.0 vs spec/FixedOdds_spec.rb in rodders-1.0.0
- old
+ new
@@ -1,233 +1,238 @@
# coding: utf-8
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
describe "FixedOdds" do
- describe "fractional_odds factory" do
- it "should raise error if not fractional odds" do
+ describe ".fractional_odds" do
+ it "raises error if not fractional odds" do
expect {
FixedOdds.fractional_odds '5'
}.to raise_error(
RuntimeError,
/could not parse "5" as fractional odds/
)
end
- it "should not modify the input string with 'against'" do
+ it "does not change the input string with 'against'" do
value = '4/1 against'
FixedOdds.fractional_odds(value)
value.end_with?('against').should == true
end
- it "should not modify the input string with 'on'" do
+ it "does not modify the input string with 'on'" do
value = '4/1 on'
FixedOdds.fractional_odds(value)
value.end_with?('on').should == true
end
- it "should treat '4/1 against' the same as '4/1'" do
+ it "treats '4/1 against' the same as '4/1'" do
FixedOdds.fractional_odds('4/1 against').should == FixedOdds.fractional_odds('4/1')
end
- it "should treat '4/1 on' the same as '1/4'" do
+ 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 "should treat 'evens' as '1/1'" do
+ it "treats 'evens' as '1/1'" do
FixedOdds.fractional_odds('evens').should == FixedOdds.fractional_odds('1/1')
end
- it "should treat 'even money' as '1/1'" do
+ it "treats 'even money' as '1/1'" do
FixedOdds.fractional_odds('even money').should == FixedOdds.fractional_odds('1/1')
end
- it "should recognise '4-to-1' as '4/1'" do
+ it "recognises '4-to-1' as '4/1'" do
FixedOdds.fractional_odds('4-to-1').should == FixedOdds.fractional_odds('4/1')
end
- it "should recognise '4-to-1 against' as '4/1'" do
+ it "recognises '4-to-1 against' as '4/1'" do
FixedOdds.fractional_odds('4-to-1 against').should == FixedOdds.fractional_odds('4/1')
end
- it "should recognise '4-to-1 on' as '1/4'" do
+ it "recognises '4-to-1 on' as '1/4'" do
FixedOdds.fractional_odds('4-to-1 on').should == FixedOdds.fractional_odds('1/4')
end
- it "should raise error if numerator has decimal point" do
+ it "raises error if numerator has decimal point" do
expect {
FixedOdds.fractional_odds '1.1/4'
}.to raise_error(
RuntimeError,
/could not parse "1.1\/4" as fractional odds/
)
end
- it "should raise error if denominator has decimal point" do
+ it "raises error if denominator has decimal point" do
expect {
FixedOdds.fractional_odds '1/4.1'
}.to raise_error(
RuntimeError,
/could not parse "1\/4.1" as fractional odds/
)
end
- it "should raise error if both numerator and denominator have decimal points" do
+ it "raises error if both numerator and denominator have decimal points" do
expect {
FixedOdds.fractional_odds '1.1/4.1'
}.to raise_error(
RuntimeError,
/could not parse "1.1\/4.1" as fractional odds/
)
end
end
- describe "moneyline_odds factory" do
- it "should raise error if not moneyline odds" do
+ describe ".moneyline_odds" do
+ it "raises error if not moneyline odds" do
expect {
- FixedOdds.moneyline_odds '1.25'
+ FixedOdds.moneyline_odds '1/4'
}.to raise_error(
RuntimeError,
- /could not parse "1.25" as moneyline odds/
+ /could not parse "1\/4" as moneyline odds/
)
end
- it "should raise error if moneyline odds has decimal point" do
+ it "raises error if moneyline odds has decimal point" do
expect {
FixedOdds.moneyline_odds '-100.1'
}.to raise_error(
RuntimeError,
/could not parse "-100.1" as moneyline odds/
)
end
describe "positive figures" do
- it "should treat '+400' as meaning winning £400 on a £100 bet" do
+ it "treats '+400' as meaning winning £400 on a £100 bet" do
plus400 = FixedOdds.moneyline_odds('+400')
plus400.profit_on_winning_stake(Money.from_fixnum(100, :GBP)).should == Money.from_fixnum(400, :GBP)
end
- it "should treat +100 as meaning winning £100 on a £100 bet" do
+ it "treats +100 as meaning winning £100 on a £100 bet" do
plus100 = FixedOdds.moneyline_odds('+100')
plus100.profit_on_winning_stake(Money.from_fixnum(100, :GBP)).should == Money.from_fixnum(100, :GBP)
end
end
describe "negative figures" do
- it "should treat '-400' as meaning you need to wager £400 to win £100" do
+ it "treats '-400' as meaning you need to wager £400 to win £100" do
minus400 = FixedOdds.moneyline_odds('-400')
minus400.profit_on_winning_stake(Money.from_fixnum(400, :GBP)).should == Money.from_fixnum(100, :GBP)
end
- it "should treat '-100' as meaning you need to wager £100 to win £100 (which is identical to '+100')" do
+ it "treats '-100' as meaning you need to wager £100 to win £100" do
minus100 = FixedOdds.moneyline_odds('-100')
minus100.profit_on_winning_stake(Money.from_fixnum(100, :GBP)).should == Money.from_fixnum(100, :GBP)
end
+
+ it "treats '+100' as meaning you need to wager £100 to win £100" do
+ plus100 = FixedOdds.moneyline_odds('+100')
+ plus100.profit_on_winning_stake(Money.from_fixnum(100, :GBP)).should == Money.from_fixnum(100, :GBP)
+ end
end
end
- describe "decimal_odds factory" do
- it "should raise error if not decimal odds" do
+ describe ".decimal_odds" do
+ it "raises error if not decimal odds" do
expect {
FixedOdds.decimal_odds '-400'
}.to raise_error(
RuntimeError,
/could not parse "-400" as decimal odds/
)
end
- it "should treat '2' as meaning you have to wager £100 to win £100" do
+ it "treats '2' as meaning you have to wager £100 to win £100" do
d2 = FixedOdds.decimal_odds('2')
d2.profit_on_winning_stake(Money.from_fixnum(100, :GBP)).should == Money.from_fixnum(100, :GBP)
end
- it "should treat '5' as meaning you have to wager £100 to win £400" do
+ it "treats '5' as meaning you have to wager £100 to win £400" do
d5 = FixedOdds.decimal_odds('5')
d5.profit_on_winning_stake(Money.from_fixnum(100, :GBP)).should == Money.from_fixnum(400, :GBP)
end
- it "should treat '1.25' as meaning yo have to wager £400 to win £100" do
+ it "treats '1.25' as meaning yo have to wager £400 to win £100" do
d1_25 = FixedOdds.decimal_odds('1.25')
d1_25.profit_on_winning_stake(Money.from_fixnum(400, :GBP)).should == Money.from_fixnum(100, :GBP)
end
end
- describe "#from_s" do
+ describe ".from_s" do
describe "bad input" do
- it "should reject garbage" do
+ it "rejects garbage" do
expect {
FixedOdds.from_s('garbage')
}.to raise_error(
ArgumentError,
/could not parse "garbage"/
)
end
end
- it "should reject an empty string" do
+ it "rejects an empty string" do
expect {
FixedOdds.from_s('')
}.to raise_error(
ArgumentError,
/could not parse ""/
)
end
describe "fractional odds" do
- it "should parse '4/1'" do
+ it "parses '4/1'" do
FixedOdds.from_s('4/1').should == FixedOdds.fractional_odds('4/1')
end
- it "should parse 'evens'" do
+ it "parses 'evens'" do
FixedOdds.from_s('evens').should == FixedOdds.fractional_odds('1/1')
end
- it "should parse 'even money'" do
+ it "parses 'even money'" do
FixedOdds.from_s('even money').should == FixedOdds.fractional_odds('1/1')
end
- it "should parse '4/1 against'" do
+ it "parses '4/1 against'" do
FixedOdds.from_s('4/1 against').should == FixedOdds.fractional_odds('4/1')
end
- it "should parse '4/1 on'" do
+ it "parses '4/1 on'" do
FixedOdds.from_s('4/1 on').should == FixedOdds.fractional_odds('1/4')
end
- it "should parse '4-to-1'" do
+ it "parses '4-to-1'" do
FixedOdds.from_s('4-to-1').should == FixedOdds.fractional_odds('4/1')
end
- it "should parse '4-to-1 against'" do
+ it "parses '4-to-1 against'" do
FixedOdds.from_s('4-to-1 against').should == FixedOdds.fractional_odds('4/1')
end
- it "should parse '4-to-1 on'" do
+ it "parses '4-to-1 on'" do
FixedOdds.from_s('4-to-1 on').should == FixedOdds.fractional_odds('1/4')
end
- it "should raise an error for a zero denominator" do
+ it "raises an error for a zero denominator" do
expect {
FixedOdds.from_s('4/0')
}.to raise_error(
ZeroDivisionError
)
end
end
describe "moneyline odds" do
- it "should parse positive moneyline odds" do
+ it "parses positive moneyline odds" do
FixedOdds.from_s('+400').should == FixedOdds.moneyline_odds('+400')
end
- it "should parse negative moneyline odds" do
+ it "parses negative moneyline odds" do
FixedOdds.from_s('-400').should == FixedOdds.moneyline_odds('-400')
end
end
describe "decimal odds" do
- it "should parse integral odds of '2' as decimal odds, not as fractional odds of '2/1'" do
+ it "parses integral odds of '2' as decimal odds, not as fractional odds of '2/1'" do
decimal_odds_2 = FixedOdds.from_s('2')
decimal_odds_2.should == FixedOdds.decimal_odds('2')
decimal_odds_2.should_not == FixedOdds.fractional_odds('2/1')
end
@@ -237,149 +242,149 @@
end
end
end
describe "#==" do
- it "should treat similar fractions equally" do
+ it "treats equivalent fractions equally" do
FixedOdds.fractional_odds('100/30').should == FixedOdds.fractional_odds('10/3')
end
- it "should recognise '1/1' and '2' are the same" do
+ it "recognises '1/1' and '2' are the same" do
FixedOdds.fractional_odds('1/1').should == FixedOdds.decimal_odds('2')
end
- it "should recognise '4/1' and '5' are the same" do
+ it "recognises '4/1' and '5' are the same" do
FixedOdds.fractional_odds('4/1').should == FixedOdds.decimal_odds('5')
end
- it "should recognise '1/4' and '1.25' are the same" do
+ it "recognises '1/4' and '1.25' are the same" do
FixedOdds.fractional_odds('1/4').should == FixedOdds.decimal_odds('1.25')
end
- it "should recognise '4/1' and '+400' are the same" do
+ it "recognises '4/1' and '+400' are the same" do
FixedOdds.fractional_odds('4/1').should == FixedOdds.moneyline_odds('+400')
end
- it "should recognise '1/4' and '-400' are the same" do
+ it "recognises '1/4' and '-400' are the same" do
FixedOdds.fractional_odds('1/4').should == FixedOdds.moneyline_odds('-400')
end
- it "should recognise '+100' and '-100' are the same" do
+ it "recognises '+100' and '-100' are the same" do
FixedOdds.moneyline_odds('+100').should == FixedOdds.moneyline_odds('-100')
end
end
describe "#to_s" do
- it "should display the odds in fractional odds format" 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 "should display '4/1' as '4/1'" do
+ it "displays '4/1' as '4/1'" do
FixedOdds.fractional_odds('4/1').to_s_fractional.should == '4/1'
end
- it "should print out '100/30' as '10/3' in lowest terms" do
+ it "is in the lowest terms" do
FixedOdds.fractional_odds('100/30').to_s_fractional.should == '10/3'
end
- it "should display '+400' as '4/1'" do
+ it "is '4/1' for '+400'" do
FixedOdds.moneyline_odds('+400').to_s_fractional.should == '4/1'
end
- it "should display '5' as '4/1'" do
+ it "is '4/1' for '5'" do
FixedOdds.decimal_odds('5').to_s_fractional.should == '4/1'
end
- it "should display '+100' as '1/1'" do
+ it "is '1/1' for '+100'" do
FixedOdds.moneyline_odds('+100').to_s_fractional.should == '1/1'
end
- it "should display '-100' as '1/1'" do
+ it "is '1/1' for '-100'" do
FixedOdds.moneyline_odds('-100').to_s_fractional.should == '1/1'
end
end
describe "#to_s_moneyline" do
- it "should display '+400' as '+400'" do
+ it "is '+400' for '+400'" do
FixedOdds.moneyline_odds('+400').to_s_moneyline.should == ('+400')
end
- it "should display '+100' as '-100' (but this could have equally been '+100')" do
+ it "is '-100' for '+100' as '-100'" do
FixedOdds.moneyline_odds('+100').to_s_moneyline.should == ('-100')
end
- it "should display '-100' as '-100' (but this could have equally been '+100')" do
+ it "is '-100' as '-100'" do
FixedOdds.moneyline_odds('-100').to_s_moneyline.should == ('-100')
end
- it "should display '4/1' as '+400'" do
+ it "is '+400' for '4/1'" do
FixedOdds.fractional_odds('4/1').to_s_moneyline.should == '+400'
end
- it "should display '5' as '+400'" do
+ it "is '+400' for '5'" do
FixedOdds.decimal_odds('5').to_s_moneyline.should == '+400'
end
- it "should display '1.25' as '-400'" do
+ it "is '-400' for '1.25'" do
FixedOdds.decimal_odds('1.25').to_s_moneyline.should == '-400'
end
end
describe "#to_s_decimal" do
- it "should display '1.25' as '1.25'" do
+ it "is '1.25' for '1.25'" do
FixedOdds.decimal_odds('1.25').to_s_decimal.should == '1.25'
end
- it "should display '1/4' as '1.25'" do
+ it "is '1.25' for '1/4'" do
FixedOdds.fractional_odds('1/4').to_s_decimal.should == '1.25'
end
- it "should display '-400' as '1.25'" do
+ it "is '1.25' for '-400'" do
FixedOdds.moneyline_odds('-400').to_s_decimal.should == '1.25'
end
- it "should display '+100' as '2'" do
+ it "is '2' for '+100'" do
FixedOdds.moneyline_odds('+100').to_s_decimal.should == '2'
end
- it "should display '-100' as '2'" do
+ it "is '2' for '-100'" do
FixedOdds.moneyline_odds('-100').to_s_decimal.should == '2'
end
end
describe "#profit_on_winning_stake" do
- it "should return a profit of £400 on a £100 stake on a 4/1 bet" do
+ it "is £400 on a £100 stake on a 4/1 bet" do
fourToOne = FixedOdds.fractional_odds '4/1'
fourToOne.profit_on_winning_stake(Money.from_fixnum(100, :GBP)).should == Money.from_fixnum(400, :GBP)
end
- it "should return a profit of £25 on a £100 stake with a 1/4 bet" do
+ it "is £25 on a £100 stake with a 1/4 bet" do
oneToFour = FixedOdds.fractional_odds '1/4'
oneToFour.profit_on_winning_stake(Money.from_fixnum(100, :GBP)).should == Money.from_fixnum(25, :GBP)
end
end
describe "#total_return_on_winning_stake" do
- it "should show that the full amount back on a winning 4/1 bet with a £100 stake is £500" do
+ it "is £500 on a winning 4/1 bet with a £100 stake" do
fourToOne = FixedOdds.fractional_odds '4/1'
fourToOne.total_return_on_winning_stake(Money.from_fixnum(100, :GBP)).should == Money.from_fixnum(500, :GBP)
end
- it "should show that the full amount back on a winning 1/4 bet with a £100 stake is £125" do
+ it "is £125 on a winning 1/4 bet with a £100 stake" do
oneToFour = FixedOdds.fractional_odds '1/4'
oneToFour.total_return_on_winning_stake(Money.from_fixnum(100, :GBP)).should == Money.from_fixnum(125, :GBP)
end
end
describe "#stake_needed_to_win" do
- it "should be £1 on a 1/1 to win £1" do
+ it "is £1 on a 1/1 to win £1" do
oneToOne = FixedOdds.fractional_odds '1/1'
oneToOne.stake_needed_to_win(Money.from_fixnum(1, :GBP)).should == Money.from_fixnum(1, :GBP)
end
- it "should be £100 on 4/1 to win £400" do
+ it "is £100 on 4/1 to win £400" do
fourToOne = FixedOdds.fractional_odds '4/1'
fourToOne.stake_needed_to_win(Money.from_fixnum(400, :GBP)).should == Money.from_fixnum(100, :GBP)
end
end