rodders 0.3.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/VERSION +1 -1
- data/lib/MutuallyExclusiveCollection.rb +2 -2
- data/rodders.gemspec +2 -2
- data/spec/FixedOdds_spec.rb +79 -74
- data/spec/MutuallyExclusiveCollection_spec.rb +16 -9
- metadata +15 -15
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
1.0.0
|
@@ -8,13 +8,13 @@ class MutuallyExclusiveCollection
|
|
8
8
|
|
9
9
|
# the least likely of the events to occur
|
10
10
|
# @return [FixedOdds] the least likely event
|
11
|
-
def
|
11
|
+
def least_likely
|
12
12
|
@events.first
|
13
13
|
end
|
14
14
|
|
15
15
|
# the most likely of the events to occur
|
16
16
|
# @return [FixedOdds] the most likely event
|
17
|
-
def
|
17
|
+
def most_likely
|
18
18
|
@events.last
|
19
19
|
end
|
20
20
|
|
data/rodders.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "rodders"
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "1.0.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Nigel Lowry"]
|
12
|
-
s.date = "
|
12
|
+
s.date = "2012-01-02"
|
13
13
|
s.description = "Converts between fractional, decimal and moneyline odds for betting and gambling. Calculates how much can be won on a given stake."
|
14
14
|
s.email = "nigel-lowry@ultra.eclipse.co.uk"
|
15
15
|
s.extra_rdoc_files = [
|
data/spec/FixedOdds_spec.rb
CHANGED
@@ -3,8 +3,8 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
|
3
3
|
|
4
4
|
describe "FixedOdds" do
|
5
5
|
|
6
|
-
describe "fractional_odds
|
7
|
-
it "
|
6
|
+
describe ".fractional_odds" do
|
7
|
+
it "raises error if not fractional odds" do
|
8
8
|
expect {
|
9
9
|
FixedOdds.fractional_odds '5'
|
10
10
|
}.to raise_error(
|
@@ -13,47 +13,47 @@ describe "FixedOdds" do
|
|
13
13
|
)
|
14
14
|
end
|
15
15
|
|
16
|
-
it "
|
16
|
+
it "does not change the input string with 'against'" do
|
17
17
|
value = '4/1 against'
|
18
18
|
FixedOdds.fractional_odds(value)
|
19
19
|
value.end_with?('against').should == true
|
20
20
|
end
|
21
21
|
|
22
|
-
it "
|
22
|
+
it "does not modify the input string with 'on'" do
|
23
23
|
value = '4/1 on'
|
24
24
|
FixedOdds.fractional_odds(value)
|
25
25
|
value.end_with?('on').should == true
|
26
26
|
end
|
27
27
|
|
28
|
-
it "
|
28
|
+
it "treats '4/1 against' the same as '4/1'" do
|
29
29
|
FixedOdds.fractional_odds('4/1 against').should == FixedOdds.fractional_odds('4/1')
|
30
30
|
end
|
31
31
|
|
32
|
-
it "
|
32
|
+
it "treats '4/1 on' the same as '1/4'" do
|
33
33
|
FixedOdds.fractional_odds('4/1 on').should == FixedOdds.fractional_odds('1/4')
|
34
34
|
end
|
35
35
|
|
36
|
-
it "
|
36
|
+
it "treats 'evens' as '1/1'" do
|
37
37
|
FixedOdds.fractional_odds('evens').should == FixedOdds.fractional_odds('1/1')
|
38
38
|
end
|
39
39
|
|
40
|
-
it "
|
40
|
+
it "treats 'even money' as '1/1'" do
|
41
41
|
FixedOdds.fractional_odds('even money').should == FixedOdds.fractional_odds('1/1')
|
42
42
|
end
|
43
43
|
|
44
|
-
it "
|
44
|
+
it "recognises '4-to-1' as '4/1'" do
|
45
45
|
FixedOdds.fractional_odds('4-to-1').should == FixedOdds.fractional_odds('4/1')
|
46
46
|
end
|
47
47
|
|
48
|
-
it "
|
48
|
+
it "recognises '4-to-1 against' as '4/1'" do
|
49
49
|
FixedOdds.fractional_odds('4-to-1 against').should == FixedOdds.fractional_odds('4/1')
|
50
50
|
end
|
51
51
|
|
52
|
-
it "
|
52
|
+
it "recognises '4-to-1 on' as '1/4'" do
|
53
53
|
FixedOdds.fractional_odds('4-to-1 on').should == FixedOdds.fractional_odds('1/4')
|
54
54
|
end
|
55
55
|
|
56
|
-
it "
|
56
|
+
it "raises error if numerator has decimal point" do
|
57
57
|
expect {
|
58
58
|
FixedOdds.fractional_odds '1.1/4'
|
59
59
|
}.to raise_error(
|
@@ -62,7 +62,7 @@ describe "FixedOdds" do
|
|
62
62
|
)
|
63
63
|
end
|
64
64
|
|
65
|
-
it "
|
65
|
+
it "raises error if denominator has decimal point" do
|
66
66
|
expect {
|
67
67
|
FixedOdds.fractional_odds '1/4.1'
|
68
68
|
}.to raise_error(
|
@@ -71,7 +71,7 @@ describe "FixedOdds" do
|
|
71
71
|
)
|
72
72
|
end
|
73
73
|
|
74
|
-
it "
|
74
|
+
it "raises error if both numerator and denominator have decimal points" do
|
75
75
|
expect {
|
76
76
|
FixedOdds.fractional_odds '1.1/4.1'
|
77
77
|
}.to raise_error(
|
@@ -81,17 +81,17 @@ describe "FixedOdds" do
|
|
81
81
|
end
|
82
82
|
end
|
83
83
|
|
84
|
-
describe "moneyline_odds
|
85
|
-
it "
|
84
|
+
describe ".moneyline_odds" do
|
85
|
+
it "raises error if not moneyline odds" do
|
86
86
|
expect {
|
87
|
-
FixedOdds.moneyline_odds '1
|
87
|
+
FixedOdds.moneyline_odds '1/4'
|
88
88
|
}.to raise_error(
|
89
89
|
RuntimeError,
|
90
|
-
/could not parse "1
|
90
|
+
/could not parse "1\/4" as moneyline odds/
|
91
91
|
)
|
92
92
|
end
|
93
93
|
|
94
|
-
it "
|
94
|
+
it "raises error if moneyline odds has decimal point" do
|
95
95
|
expect {
|
96
96
|
FixedOdds.moneyline_odds '-100.1'
|
97
97
|
}.to raise_error(
|
@@ -101,32 +101,37 @@ describe "FixedOdds" do
|
|
101
101
|
end
|
102
102
|
|
103
103
|
describe "positive figures" do
|
104
|
-
it "
|
104
|
+
it "treats '+400' as meaning winning £400 on a £100 bet" do
|
105
105
|
plus400 = FixedOdds.moneyline_odds('+400')
|
106
106
|
plus400.profit_on_winning_stake(Money.from_fixnum(100, :GBP)).should == Money.from_fixnum(400, :GBP)
|
107
107
|
end
|
108
108
|
|
109
|
-
it "
|
109
|
+
it "treats +100 as meaning winning £100 on a £100 bet" do
|
110
110
|
plus100 = FixedOdds.moneyline_odds('+100')
|
111
111
|
plus100.profit_on_winning_stake(Money.from_fixnum(100, :GBP)).should == Money.from_fixnum(100, :GBP)
|
112
112
|
end
|
113
113
|
end
|
114
114
|
|
115
115
|
describe "negative figures" do
|
116
|
-
it "
|
116
|
+
it "treats '-400' as meaning you need to wager £400 to win £100" do
|
117
117
|
minus400 = FixedOdds.moneyline_odds('-400')
|
118
118
|
minus400.profit_on_winning_stake(Money.from_fixnum(400, :GBP)).should == Money.from_fixnum(100, :GBP)
|
119
119
|
end
|
120
120
|
|
121
|
-
it "
|
121
|
+
it "treats '-100' as meaning you need to wager £100 to win £100" do
|
122
122
|
minus100 = FixedOdds.moneyline_odds('-100')
|
123
123
|
minus100.profit_on_winning_stake(Money.from_fixnum(100, :GBP)).should == Money.from_fixnum(100, :GBP)
|
124
124
|
end
|
125
|
+
|
126
|
+
it "treats '+100' as meaning you need to wager £100 to win £100" do
|
127
|
+
plus100 = FixedOdds.moneyline_odds('+100')
|
128
|
+
plus100.profit_on_winning_stake(Money.from_fixnum(100, :GBP)).should == Money.from_fixnum(100, :GBP)
|
129
|
+
end
|
125
130
|
end
|
126
131
|
end
|
127
132
|
|
128
|
-
describe "decimal_odds
|
129
|
-
it "
|
133
|
+
describe ".decimal_odds" do
|
134
|
+
it "raises error if not decimal odds" do
|
130
135
|
expect {
|
131
136
|
FixedOdds.decimal_odds '-400'
|
132
137
|
}.to raise_error(
|
@@ -135,25 +140,25 @@ describe "FixedOdds" do
|
|
135
140
|
)
|
136
141
|
end
|
137
142
|
|
138
|
-
it "
|
143
|
+
it "treats '2' as meaning you have to wager £100 to win £100" do
|
139
144
|
d2 = FixedOdds.decimal_odds('2')
|
140
145
|
d2.profit_on_winning_stake(Money.from_fixnum(100, :GBP)).should == Money.from_fixnum(100, :GBP)
|
141
146
|
end
|
142
147
|
|
143
|
-
it "
|
148
|
+
it "treats '5' as meaning you have to wager £100 to win £400" do
|
144
149
|
d5 = FixedOdds.decimal_odds('5')
|
145
150
|
d5.profit_on_winning_stake(Money.from_fixnum(100, :GBP)).should == Money.from_fixnum(400, :GBP)
|
146
151
|
end
|
147
152
|
|
148
|
-
it "
|
153
|
+
it "treats '1.25' as meaning yo have to wager £400 to win £100" do
|
149
154
|
d1_25 = FixedOdds.decimal_odds('1.25')
|
150
155
|
d1_25.profit_on_winning_stake(Money.from_fixnum(400, :GBP)).should == Money.from_fixnum(100, :GBP)
|
151
156
|
end
|
152
157
|
end
|
153
158
|
|
154
|
-
describe "
|
159
|
+
describe ".from_s" do
|
155
160
|
describe "bad input" do
|
156
|
-
it "
|
161
|
+
it "rejects garbage" do
|
157
162
|
expect {
|
158
163
|
FixedOdds.from_s('garbage')
|
159
164
|
}.to raise_error(
|
@@ -163,7 +168,7 @@ describe "FixedOdds" do
|
|
163
168
|
end
|
164
169
|
end
|
165
170
|
|
166
|
-
it "
|
171
|
+
it "rejects an empty string" do
|
167
172
|
expect {
|
168
173
|
FixedOdds.from_s('')
|
169
174
|
}.to raise_error(
|
@@ -173,39 +178,39 @@ describe "FixedOdds" do
|
|
173
178
|
end
|
174
179
|
|
175
180
|
describe "fractional odds" do
|
176
|
-
it "
|
181
|
+
it "parses '4/1'" do
|
177
182
|
FixedOdds.from_s('4/1').should == FixedOdds.fractional_odds('4/1')
|
178
183
|
end
|
179
184
|
|
180
|
-
it "
|
185
|
+
it "parses 'evens'" do
|
181
186
|
FixedOdds.from_s('evens').should == FixedOdds.fractional_odds('1/1')
|
182
187
|
end
|
183
188
|
|
184
|
-
it "
|
189
|
+
it "parses 'even money'" do
|
185
190
|
FixedOdds.from_s('even money').should == FixedOdds.fractional_odds('1/1')
|
186
191
|
end
|
187
192
|
|
188
|
-
it "
|
193
|
+
it "parses '4/1 against'" do
|
189
194
|
FixedOdds.from_s('4/1 against').should == FixedOdds.fractional_odds('4/1')
|
190
195
|
end
|
191
196
|
|
192
|
-
it "
|
197
|
+
it "parses '4/1 on'" do
|
193
198
|
FixedOdds.from_s('4/1 on').should == FixedOdds.fractional_odds('1/4')
|
194
199
|
end
|
195
200
|
|
196
|
-
it "
|
201
|
+
it "parses '4-to-1'" do
|
197
202
|
FixedOdds.from_s('4-to-1').should == FixedOdds.fractional_odds('4/1')
|
198
203
|
end
|
199
204
|
|
200
|
-
it "
|
205
|
+
it "parses '4-to-1 against'" do
|
201
206
|
FixedOdds.from_s('4-to-1 against').should == FixedOdds.fractional_odds('4/1')
|
202
207
|
end
|
203
208
|
|
204
|
-
it "
|
209
|
+
it "parses '4-to-1 on'" do
|
205
210
|
FixedOdds.from_s('4-to-1 on').should == FixedOdds.fractional_odds('1/4')
|
206
211
|
end
|
207
212
|
|
208
|
-
it "
|
213
|
+
it "raises an error for a zero denominator" do
|
209
214
|
expect {
|
210
215
|
FixedOdds.from_s('4/0')
|
211
216
|
}.to raise_error(
|
@@ -215,17 +220,17 @@ describe "FixedOdds" do
|
|
215
220
|
end
|
216
221
|
|
217
222
|
describe "moneyline odds" do
|
218
|
-
it "
|
223
|
+
it "parses positive moneyline odds" do
|
219
224
|
FixedOdds.from_s('+400').should == FixedOdds.moneyline_odds('+400')
|
220
225
|
end
|
221
226
|
|
222
|
-
it "
|
227
|
+
it "parses negative moneyline odds" do
|
223
228
|
FixedOdds.from_s('-400').should == FixedOdds.moneyline_odds('-400')
|
224
229
|
end
|
225
230
|
end
|
226
231
|
|
227
232
|
describe "decimal odds" do
|
228
|
-
it "
|
233
|
+
it "parses integral odds of '2' as decimal odds, not as fractional odds of '2/1'" do
|
229
234
|
decimal_odds_2 = FixedOdds.from_s('2')
|
230
235
|
|
231
236
|
decimal_odds_2.should == FixedOdds.decimal_odds('2')
|
@@ -239,146 +244,146 @@ describe "FixedOdds" do
|
|
239
244
|
end
|
240
245
|
|
241
246
|
describe "#==" do
|
242
|
-
it "
|
247
|
+
it "treats equivalent fractions equally" do
|
243
248
|
FixedOdds.fractional_odds('100/30').should == FixedOdds.fractional_odds('10/3')
|
244
249
|
end
|
245
250
|
|
246
|
-
it "
|
251
|
+
it "recognises '1/1' and '2' are the same" do
|
247
252
|
FixedOdds.fractional_odds('1/1').should == FixedOdds.decimal_odds('2')
|
248
253
|
end
|
249
254
|
|
250
|
-
it "
|
255
|
+
it "recognises '4/1' and '5' are the same" do
|
251
256
|
FixedOdds.fractional_odds('4/1').should == FixedOdds.decimal_odds('5')
|
252
257
|
end
|
253
258
|
|
254
|
-
it "
|
259
|
+
it "recognises '1/4' and '1.25' are the same" do
|
255
260
|
FixedOdds.fractional_odds('1/4').should == FixedOdds.decimal_odds('1.25')
|
256
261
|
end
|
257
262
|
|
258
|
-
it "
|
263
|
+
it "recognises '4/1' and '+400' are the same" do
|
259
264
|
FixedOdds.fractional_odds('4/1').should == FixedOdds.moneyline_odds('+400')
|
260
265
|
end
|
261
266
|
|
262
|
-
it "
|
267
|
+
it "recognises '1/4' and '-400' are the same" do
|
263
268
|
FixedOdds.fractional_odds('1/4').should == FixedOdds.moneyline_odds('-400')
|
264
269
|
end
|
265
270
|
|
266
|
-
it "
|
271
|
+
it "recognises '+100' and '-100' are the same" do
|
267
272
|
FixedOdds.moneyline_odds('+100').should == FixedOdds.moneyline_odds('-100')
|
268
273
|
end
|
269
274
|
end
|
270
275
|
|
271
276
|
describe "#to_s" do
|
272
|
-
it "
|
277
|
+
it "is in fractional odds format" do
|
273
278
|
FixedOdds.from_s('+400').to_s.should == '4/1'
|
274
279
|
end
|
275
280
|
end
|
276
281
|
|
277
282
|
describe "#to_s_fractional" do
|
278
|
-
it "
|
283
|
+
it "displays '4/1' as '4/1'" do
|
279
284
|
FixedOdds.fractional_odds('4/1').to_s_fractional.should == '4/1'
|
280
285
|
end
|
281
286
|
|
282
|
-
it "
|
287
|
+
it "is in the lowest terms" do
|
283
288
|
FixedOdds.fractional_odds('100/30').to_s_fractional.should == '10/3'
|
284
289
|
end
|
285
290
|
|
286
|
-
it "
|
291
|
+
it "is '4/1' for '+400'" do
|
287
292
|
FixedOdds.moneyline_odds('+400').to_s_fractional.should == '4/1'
|
288
293
|
end
|
289
294
|
|
290
|
-
it "
|
295
|
+
it "is '4/1' for '5'" do
|
291
296
|
FixedOdds.decimal_odds('5').to_s_fractional.should == '4/1'
|
292
297
|
end
|
293
298
|
|
294
|
-
it "
|
299
|
+
it "is '1/1' for '+100'" do
|
295
300
|
FixedOdds.moneyline_odds('+100').to_s_fractional.should == '1/1'
|
296
301
|
end
|
297
302
|
|
298
|
-
it "
|
303
|
+
it "is '1/1' for '-100'" do
|
299
304
|
FixedOdds.moneyline_odds('-100').to_s_fractional.should == '1/1'
|
300
305
|
end
|
301
306
|
end
|
302
307
|
|
303
308
|
describe "#to_s_moneyline" do
|
304
|
-
it "
|
309
|
+
it "is '+400' for '+400'" do
|
305
310
|
FixedOdds.moneyline_odds('+400').to_s_moneyline.should == ('+400')
|
306
311
|
end
|
307
312
|
|
308
|
-
it "
|
313
|
+
it "is '-100' for '+100' as '-100'" do
|
309
314
|
FixedOdds.moneyline_odds('+100').to_s_moneyline.should == ('-100')
|
310
315
|
end
|
311
316
|
|
312
|
-
it "
|
317
|
+
it "is '-100' as '-100'" do
|
313
318
|
FixedOdds.moneyline_odds('-100').to_s_moneyline.should == ('-100')
|
314
319
|
end
|
315
320
|
|
316
|
-
it "
|
321
|
+
it "is '+400' for '4/1'" do
|
317
322
|
FixedOdds.fractional_odds('4/1').to_s_moneyline.should == '+400'
|
318
323
|
end
|
319
324
|
|
320
|
-
it "
|
325
|
+
it "is '+400' for '5'" do
|
321
326
|
FixedOdds.decimal_odds('5').to_s_moneyline.should == '+400'
|
322
327
|
end
|
323
328
|
|
324
|
-
it "
|
329
|
+
it "is '-400' for '1.25'" do
|
325
330
|
FixedOdds.decimal_odds('1.25').to_s_moneyline.should == '-400'
|
326
331
|
end
|
327
332
|
end
|
328
333
|
|
329
334
|
describe "#to_s_decimal" do
|
330
|
-
it "
|
335
|
+
it "is '1.25' for '1.25'" do
|
331
336
|
FixedOdds.decimal_odds('1.25').to_s_decimal.should == '1.25'
|
332
337
|
end
|
333
338
|
|
334
|
-
it "
|
339
|
+
it "is '1.25' for '1/4'" do
|
335
340
|
FixedOdds.fractional_odds('1/4').to_s_decimal.should == '1.25'
|
336
341
|
end
|
337
342
|
|
338
|
-
it "
|
343
|
+
it "is '1.25' for '-400'" do
|
339
344
|
FixedOdds.moneyline_odds('-400').to_s_decimal.should == '1.25'
|
340
345
|
end
|
341
346
|
|
342
|
-
it "
|
347
|
+
it "is '2' for '+100'" do
|
343
348
|
FixedOdds.moneyline_odds('+100').to_s_decimal.should == '2'
|
344
349
|
end
|
345
350
|
|
346
|
-
it "
|
351
|
+
it "is '2' for '-100'" do
|
347
352
|
FixedOdds.moneyline_odds('-100').to_s_decimal.should == '2'
|
348
353
|
end
|
349
354
|
end
|
350
355
|
|
351
356
|
describe "#profit_on_winning_stake" do
|
352
|
-
it "
|
357
|
+
it "is £400 on a £100 stake on a 4/1 bet" do
|
353
358
|
fourToOne = FixedOdds.fractional_odds '4/1'
|
354
359
|
fourToOne.profit_on_winning_stake(Money.from_fixnum(100, :GBP)).should == Money.from_fixnum(400, :GBP)
|
355
360
|
end
|
356
361
|
|
357
|
-
it "
|
362
|
+
it "is £25 on a £100 stake with a 1/4 bet" do
|
358
363
|
oneToFour = FixedOdds.fractional_odds '1/4'
|
359
364
|
oneToFour.profit_on_winning_stake(Money.from_fixnum(100, :GBP)).should == Money.from_fixnum(25, :GBP)
|
360
365
|
end
|
361
366
|
end
|
362
367
|
|
363
368
|
describe "#total_return_on_winning_stake" do
|
364
|
-
it "
|
369
|
+
it "is £500 on a winning 4/1 bet with a £100 stake" do
|
365
370
|
fourToOne = FixedOdds.fractional_odds '4/1'
|
366
371
|
fourToOne.total_return_on_winning_stake(Money.from_fixnum(100, :GBP)).should == Money.from_fixnum(500, :GBP)
|
367
372
|
end
|
368
373
|
|
369
|
-
it "
|
374
|
+
it "is £125 on a winning 1/4 bet with a £100 stake" do
|
370
375
|
oneToFour = FixedOdds.fractional_odds '1/4'
|
371
376
|
oneToFour.total_return_on_winning_stake(Money.from_fixnum(100, :GBP)).should == Money.from_fixnum(125, :GBP)
|
372
377
|
end
|
373
378
|
end
|
374
379
|
|
375
380
|
describe "#stake_needed_to_win" do
|
376
|
-
it "
|
381
|
+
it "is £1 on a 1/1 to win £1" do
|
377
382
|
oneToOne = FixedOdds.fractional_odds '1/1'
|
378
383
|
oneToOne.stake_needed_to_win(Money.from_fixnum(1, :GBP)).should == Money.from_fixnum(1, :GBP)
|
379
384
|
end
|
380
385
|
|
381
|
-
it "
|
386
|
+
it "is £100 on 4/1 to win £400" do
|
382
387
|
fourToOne = FixedOdds.fractional_odds '4/1'
|
383
388
|
fourToOne.stake_needed_to_win(Money.from_fixnum(400, :GBP)).should == Money.from_fixnum(100, :GBP)
|
384
389
|
end
|
@@ -10,20 +10,27 @@ describe "MutuallyExclusiveCollection" do
|
|
10
10
|
@events = MutuallyExclusiveCollection.new [@draw, @bad_team, @good_team]
|
11
11
|
end
|
12
12
|
|
13
|
-
|
14
|
-
|
13
|
+
describe "#least_likely" do
|
14
|
+
it "is the least likely event" do
|
15
|
+
@events.least_likely.should == @bad_team
|
16
|
+
end
|
15
17
|
end
|
16
18
|
|
17
|
-
|
18
|
-
|
19
|
+
describe "#most_likely" do
|
20
|
+
it "is the most likely event" do
|
21
|
+
@events.most_likely.should == @good_team
|
22
|
+
end
|
19
23
|
end
|
20
24
|
|
21
|
-
|
22
|
-
|
25
|
+
describe "#in_descending_probability" do
|
26
|
+
it "is in descending order of probability" do
|
27
|
+
@events.in_descending_probability.should == [@good_team, @draw, @bad_team]
|
28
|
+
end
|
23
29
|
end
|
24
30
|
|
25
|
-
|
26
|
-
|
31
|
+
describe "#in_ascending_probability" do
|
32
|
+
it "is in ascending order of probability" do
|
33
|
+
@events.in_ascending_probability.should == [@bad_team, @draw, @good_team]
|
34
|
+
end
|
27
35
|
end
|
28
|
-
|
29
36
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rodders
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2012-01-02 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: money
|
16
|
-
requirement: &
|
16
|
+
requirement: &70289789377020 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70289789377020
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rspec
|
27
|
-
requirement: &
|
27
|
+
requirement: &70289789376500 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 2.3.0
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70289789376500
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: yard
|
38
|
-
requirement: &
|
38
|
+
requirement: &70289789353180 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 0.6.0
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70289789353180
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: bundler
|
49
|
-
requirement: &
|
49
|
+
requirement: &70289789352580 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 1.0.0
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70289789352580
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: jeweler
|
60
|
-
requirement: &
|
60
|
+
requirement: &70289789352000 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: 1.6.4
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70289789352000
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rcov
|
71
|
-
requirement: &
|
71
|
+
requirement: &70289789351400 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,7 +76,7 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70289789351400
|
80
80
|
description: Converts between fractional, decimal and moneyline odds for betting and
|
81
81
|
gambling. Calculates how much can be won on a given stake.
|
82
82
|
email: nigel-lowry@ultra.eclipse.co.uk
|
@@ -116,7 +116,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
116
116
|
version: '0'
|
117
117
|
segments:
|
118
118
|
- 0
|
119
|
-
hash:
|
119
|
+
hash: 3132446332163279190
|
120
120
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
121
121
|
none: false
|
122
122
|
requirements:
|