icu_tournament 1.1.0 → 1.1.1
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/lib/icu_tournament/player.rb +16 -15
- data/lib/icu_tournament/tournament.rb +7 -5
- data/lib/icu_tournament/tournament_fcsv.rb +1 -1
- data/lib/icu_tournament/tournament_krause.rb +30 -15
- data/lib/icu_tournament/tournament_sp.rb +13 -8
- data/lib/icu_tournament/version.rb +1 -1
- data/spec/player_spec.rb +18 -5
- data/spec/tournament_krause_spec.rb +66 -32
- data/spec/tournament_sp_spec.rb +38 -38
- metadata +3 -3
|
@@ -15,17 +15,17 @@ Names are automatically cannonicalised (tidied up).
|
|
|
15
15
|
bobby.last_name # => 'Fischer'
|
|
16
16
|
|
|
17
17
|
In addition, players have a number of optional attributes which can be specified
|
|
18
|
-
via setters or in constructor hash options: _id_ (
|
|
19
|
-
_fed_ (federation), _title_, _rating_, _rank_ and _dob_ (date of birth).
|
|
18
|
+
via setters or in constructor hash options: _id_ (local or national ID), _fide_
|
|
19
|
+
(FIDE ID), _fed_ (federation), _title_, _rating_, _rank_ and _dob_ (date of birth).
|
|
20
20
|
|
|
21
21
|
peter = ICU::Player.new('Peter', 'Svidler', 21, :fed => 'rus', :title => 'g', :rating = 2700)
|
|
22
22
|
peter.dob = '17th June, 1976'
|
|
23
23
|
peter.rank = 1
|
|
24
24
|
|
|
25
25
|
Some of these values will also be canonicalised to some extent. For example,
|
|
26
|
-
|
|
26
|
+
date of birth will be turned into _yyyy-mm-dd_ format, the chess title will be two
|
|
27
27
|
to three capital letters always ending in _M_ and the federation, if it's three
|
|
28
|
-
letters long, will be
|
|
28
|
+
letters long, will be upcased.
|
|
29
29
|
|
|
30
30
|
peter.dob # => 1976-07-17
|
|
31
31
|
peter.title # => 'GM'
|
|
@@ -33,17 +33,18 @@ letters long, will be upper-cased.
|
|
|
33
33
|
|
|
34
34
|
It is preferable to add results (ICU::Result) to a player via the tournament (ICU::Tournament) object's
|
|
35
35
|
_add_result_ method rather than the method of the same name belonging to player instances. Doing so
|
|
36
|
-
allows mirrored results to be added to both players with one
|
|
36
|
+
allows mirrored results to be added to both players with one call (e.g. one player won, so the
|
|
37
37
|
other lost). A player's results can later be retieved via the _results_ accessor.
|
|
38
38
|
|
|
39
39
|
Total scores is available via the _points_ method.
|
|
40
40
|
|
|
41
41
|
peter.points # => 5.5
|
|
42
42
|
|
|
43
|
-
A player
|
|
43
|
+
A player can have up to two ID numbers (both positive integers or nil): _id_ (local or national ID,
|
|
44
|
+
such as ICU number) and _fide_ (FIDE ID).
|
|
44
45
|
|
|
45
|
-
peter.id = 16790 # ICU
|
|
46
|
-
peter.
|
|
46
|
+
peter.id = 16790 # ICU
|
|
47
|
+
peter.fide = 4102142 # FIDE
|
|
47
48
|
|
|
48
49
|
Players can be compared to see if they're roughly or exactly the same, which may be useful in detecting duplicates.
|
|
49
50
|
If the names match and the federations don't disagree then two players are equal according to the _==_ operator.
|
|
@@ -56,7 +57,7 @@ The player number is irrelevant.
|
|
|
56
57
|
john1 == john2 # => true (federations don't disagree because one is unset)
|
|
57
58
|
john2 == john3 # => false (federations disagree)
|
|
58
59
|
|
|
59
|
-
If, in addition, _rating_, _dob_, _gender_ and
|
|
60
|
+
If, in addition, _rating_, _dob_, _gender_, _id_ and _fide_ do not disagree then two players are equal
|
|
60
61
|
according to the stricter criteria of _eql?_.
|
|
61
62
|
|
|
62
63
|
mark1 = ICU::Player.new('Mark', 'Orr', 31, :fed = 'IRL', :rating => 2100)
|
|
@@ -69,7 +70,7 @@ according to the stricter criteria of _eql?_.
|
|
|
69
70
|
The presence of two players in the same tournament that are equal according to _==_ but unequal
|
|
70
71
|
according to _eql?__ is likely to indicate a data entry error.
|
|
71
72
|
|
|
72
|
-
If two instances represent the same player and are equal according to _==_ then the _id_, _rating_,
|
|
73
|
+
If two instances represent the same player and are equal according to _==_ then the _id_, _fide_, _rating_,
|
|
73
74
|
_title_ and _fed_ attributes of the two can be merged. For example:
|
|
74
75
|
|
|
75
76
|
fox1 = ICU::Player.new('Tony', 'Fox', 12, :id => 456)
|
|
@@ -89,7 +90,7 @@ All other attributes are unaffected.
|
|
|
89
90
|
|
|
90
91
|
extend ICU::Accessor
|
|
91
92
|
attr_integer :num
|
|
92
|
-
attr_positive_or_nil :id, :rating, :rank
|
|
93
|
+
attr_positive_or_nil :id, :fide, :rating, :rank
|
|
93
94
|
attr_date_or_nil :dob
|
|
94
95
|
|
|
95
96
|
attr_reader :results, :first_name, :last_name, :fed, :title, :gender
|
|
@@ -99,7 +100,7 @@ All other attributes are unaffected.
|
|
|
99
100
|
self.first_name = first_name
|
|
100
101
|
self.last_name = last_name
|
|
101
102
|
self.num = num
|
|
102
|
-
[:id, :fed, :title, :rating, :rank, :dob, :gender].each do |atr|
|
|
103
|
+
[:id, :fide, :fed, :title, :rating, :rank, :dob, :gender].each do |atr|
|
|
103
104
|
self.send("#{atr}=", opt[atr]) unless opt[atr].nil?
|
|
104
105
|
end
|
|
105
106
|
@results = []
|
|
@@ -193,11 +194,11 @@ All other attributes are unaffected.
|
|
|
193
194
|
true
|
|
194
195
|
end
|
|
195
196
|
|
|
196
|
-
# Strict equality test. Passes if the playes are loosly equal and also if their
|
|
197
|
+
# Strict equality test. Passes if the playes are loosly equal and also if their IDs, rating, gender and title are not different.
|
|
197
198
|
def eql?(other)
|
|
198
199
|
return true if equal?(other)
|
|
199
200
|
return false unless self == other
|
|
200
|
-
[:id, :rating, :title, :gender].each do |m|
|
|
201
|
+
[:id, :fide, :rating, :title, :gender].each do |m|
|
|
201
202
|
return false if self.send(m) && other.send(m) && self.send(m) != other.send(m)
|
|
202
203
|
end
|
|
203
204
|
true
|
|
@@ -206,7 +207,7 @@ All other attributes are unaffected.
|
|
|
206
207
|
# Merge in some of the details of another player.
|
|
207
208
|
def merge(other)
|
|
208
209
|
raise "cannot merge two players that are not equal" unless self == other
|
|
209
|
-
[:id, :rating, :title, :fed, :gender].each do |m|
|
|
210
|
+
[:id, :fide, :rating, :title, :fed, :gender].each do |m|
|
|
210
211
|
self.send("#{m}=", other.send(m)) unless self.send(m)
|
|
211
212
|
end
|
|
212
213
|
end
|
|
@@ -395,17 +395,19 @@ in which case any options supplied to this method will be silently ignored.
|
|
|
395
395
|
type = format.to_s
|
|
396
396
|
raise "Invalid format" unless type.match(/^(SwissPerfect|Krause|ForeignCSV)$/);
|
|
397
397
|
parser = "ICU::Tournament::#{format}".constantize.new
|
|
398
|
-
if type == '
|
|
399
|
-
|
|
400
|
-
else
|
|
398
|
+
if type == 'ForeignCSV'
|
|
399
|
+
# Doesn't take options.
|
|
401
400
|
parser.parse_file!(file)
|
|
401
|
+
else
|
|
402
|
+
# The others can take options.
|
|
403
|
+
parser.parse_file!(file, opts)
|
|
402
404
|
end
|
|
403
405
|
end
|
|
404
406
|
|
|
405
407
|
# Convenience method to serialise the tournament into a supported format.
|
|
406
408
|
# Throws an exception unless the name of a supported format is supplied
|
|
407
409
|
# or if the tournament is unsuitable for serialisation in that format.
|
|
408
|
-
def serialize(format)
|
|
410
|
+
def serialize(format, arg={})
|
|
409
411
|
serializer = case format.to_s.downcase
|
|
410
412
|
when 'krause' then ICU::Tournament::Krause.new
|
|
411
413
|
when 'foreigncsv' then ICU::Tournament::ForeignCSV.new
|
|
@@ -413,7 +415,7 @@ in which case any options supplied to this method will be silently ignored.
|
|
|
413
415
|
when '' then raise "no format supplied"
|
|
414
416
|
else raise "unsupported serialisation format: '#{format}'"
|
|
415
417
|
end
|
|
416
|
-
serializer.serialize(self)
|
|
418
|
+
serializer.serialize(self, arg)
|
|
417
419
|
end
|
|
418
420
|
|
|
419
421
|
private
|
|
@@ -205,7 +205,7 @@ For example, here are the commands to reproduce the example above.
|
|
|
205
205
|
end
|
|
206
206
|
|
|
207
207
|
# Serialise a tournament back into CSV format.
|
|
208
|
-
def serialize(t)
|
|
208
|
+
def serialize(t, arg={})
|
|
209
209
|
t.validate!(:type => self)
|
|
210
210
|
Util::CSV.generate do |csv|
|
|
211
211
|
csv << ["Event", t.name]
|
|
@@ -49,8 +49,17 @@ A player can be retrieved from the tournament via the _players_ array or by send
|
|
|
49
49
|
daffy.rating # => 2200
|
|
50
50
|
daffy.fed # => "IRL"
|
|
51
51
|
daffy.id # => 7654321
|
|
52
|
+
daffy.fide # => nil
|
|
52
53
|
daffy.dob # => "1937-04-17"
|
|
53
54
|
|
|
55
|
+
By default, ID numbers in the input are interpreted as local IDs. If, instead, they should be interpreted as
|
|
56
|
+
FIDE IDs, add the following option:
|
|
57
|
+
|
|
58
|
+
tournament = parser.parse_file('tournament.tab', :fide => true)
|
|
59
|
+
daffy = tournament.player(2)
|
|
60
|
+
daffy.id # => nil
|
|
61
|
+
daffy.fide # => 7654321
|
|
62
|
+
|
|
54
63
|
If the ranking numbers are missing from the file or inconsistent (e.g. player A is ranked above player B
|
|
55
64
|
but has less points than player B) they are recalculated as a side effect of the parse.
|
|
56
65
|
|
|
@@ -77,6 +86,12 @@ Or alternatively, by the _serialize_ method of the tournament object if the name
|
|
|
77
86
|
|
|
78
87
|
krause = tournament.serialize('Krause')
|
|
79
88
|
|
|
89
|
+
By default, local (ICU) IDs are used for the serialization, but both methods accept an option that
|
|
90
|
+
causes FIDE IDs to be used instead:
|
|
91
|
+
|
|
92
|
+
krause = parser.serialize(tournament, :fide => true)
|
|
93
|
+
krause = parser.serialize(tournament, :fide => true)
|
|
94
|
+
|
|
80
95
|
The following lists Krause data identification numbers, their description and, where available, their corresponding
|
|
81
96
|
attributes in an ICU::Tournament instance.
|
|
82
97
|
|
|
@@ -102,7 +117,7 @@ attributes in an ICU::Tournament instance.
|
|
|
102
117
|
attr_reader :error, :comments
|
|
103
118
|
|
|
104
119
|
# Parse Krause data returning a Tournament on success or raising an exception on error.
|
|
105
|
-
def parse!(krs)
|
|
120
|
+
def parse!(krs, arg={})
|
|
106
121
|
@lineno = 0
|
|
107
122
|
@tournament = Tournament.new('Dummy', '2000-01-01')
|
|
108
123
|
@name_set, @start_set = false, false
|
|
@@ -116,7 +131,7 @@ attributes in an ICU::Tournament instance.
|
|
|
116
131
|
next if line == '' # skip blank lines
|
|
117
132
|
@line = line # remember this line for later
|
|
118
133
|
|
|
119
|
-
# Does it
|
|
134
|
+
# Does it have a DIN or is it just a comment?
|
|
120
135
|
if @line.match(/^(\d{3}) (.*)$/)
|
|
121
136
|
din = $1 # data identification number (DIN)
|
|
122
137
|
@data = $2 # the data after the DIN
|
|
@@ -128,7 +143,7 @@ attributes in an ICU::Tournament instance.
|
|
|
128
143
|
# Process the line given the DIN.
|
|
129
144
|
begin
|
|
130
145
|
case din
|
|
131
|
-
when '001' then add_player
|
|
146
|
+
when '001' then add_player(arg) # player and results record
|
|
132
147
|
when '012' then set_name # name (mandatory)
|
|
133
148
|
when '013' then add_team # team name and members
|
|
134
149
|
when '022' then @tournament.city = @data # city
|
|
@@ -172,9 +187,9 @@ attributes in an ICU::Tournament instance.
|
|
|
172
187
|
|
|
173
188
|
# Parse Krause data returning a Tournament on success or a nil on failure.
|
|
174
189
|
# In the case of failure, an error message can be retrived via the <em>error</em> method.
|
|
175
|
-
def parse(krs)
|
|
190
|
+
def parse(krs, arg={})
|
|
176
191
|
begin
|
|
177
|
-
parse!(krs)
|
|
192
|
+
parse!(krs, arg)
|
|
178
193
|
rescue => ex
|
|
179
194
|
@error = ex.message
|
|
180
195
|
nil
|
|
@@ -182,15 +197,15 @@ attributes in an ICU::Tournament instance.
|
|
|
182
197
|
end
|
|
183
198
|
|
|
184
199
|
# Same as <em>parse!</em> except the input is a file name rather than file contents.
|
|
185
|
-
def parse_file!(file)
|
|
200
|
+
def parse_file!(file, arg={})
|
|
186
201
|
krause = open(file) { |f| f.read }
|
|
187
|
-
parse!(krause)
|
|
202
|
+
parse!(krause, arg)
|
|
188
203
|
end
|
|
189
204
|
|
|
190
205
|
# Same as <em>parse</em> except the input is a file name rather than file contents.
|
|
191
|
-
def parse_file(file)
|
|
206
|
+
def parse_file(file, arg={})
|
|
192
207
|
begin
|
|
193
|
-
parse_file!(file)
|
|
208
|
+
parse_file!(file, arg)
|
|
194
209
|
rescue => ex
|
|
195
210
|
@error = ex.message
|
|
196
211
|
nil
|
|
@@ -198,7 +213,7 @@ attributes in an ICU::Tournament instance.
|
|
|
198
213
|
end
|
|
199
214
|
|
|
200
215
|
# Serialise a tournament back into Krause format.
|
|
201
|
-
def serialize(t)
|
|
216
|
+
def serialize(t, arg={})
|
|
202
217
|
t.validate!(:type => self)
|
|
203
218
|
krause = ''
|
|
204
219
|
krause << "012 #{t.name}\n"
|
|
@@ -221,7 +236,7 @@ attributes in an ICU::Tournament instance.
|
|
|
221
236
|
t.round_dates.each{ |d| krause << d.sub(/^../, ' ') }
|
|
222
237
|
krause << "\n"
|
|
223
238
|
end
|
|
224
|
-
t.players.each{ |p| krause << p.to_krause(rounds) }
|
|
239
|
+
t.players.each{ |p| krause << p.to_krause(rounds, arg) }
|
|
225
240
|
krause
|
|
226
241
|
end
|
|
227
242
|
|
|
@@ -242,7 +257,7 @@ attributes in an ICU::Tournament instance.
|
|
|
242
257
|
@start_set = true
|
|
243
258
|
end
|
|
244
259
|
|
|
245
|
-
def add_player
|
|
260
|
+
def add_player(arg={})
|
|
246
261
|
raise "player record less than minimum length" if @line.length < 99
|
|
247
262
|
|
|
248
263
|
# Player details.
|
|
@@ -254,10 +269,10 @@ attributes in an ICU::Tournament instance.
|
|
|
254
269
|
:title => @data[6, 3],
|
|
255
270
|
:rating => @data[44, 4],
|
|
256
271
|
:fed => @data[49, 3],
|
|
257
|
-
:id => @data[53, 11],
|
|
258
272
|
:dob => @data[65, 10],
|
|
259
273
|
:rank => @data[81, 4],
|
|
260
274
|
}
|
|
275
|
+
opt[arg[:fide] ? :fide : :id] = @data[53, 11]
|
|
261
276
|
player = Player.new(nam.first, nam.last, num, opt)
|
|
262
277
|
@tournament.add_player(player)
|
|
263
278
|
|
|
@@ -320,7 +335,7 @@ attributes in an ICU::Tournament instance.
|
|
|
320
335
|
|
|
321
336
|
class Player
|
|
322
337
|
# Format a player's 001 record as it would appear in a Krause formatted file (including the final newline).
|
|
323
|
-
def to_krause(rounds)
|
|
338
|
+
def to_krause(rounds, arg)
|
|
324
339
|
krause = '001'
|
|
325
340
|
krause << sprintf(' %4d', @num)
|
|
326
341
|
krause << sprintf(' %1s', case @gender; when 'M' then 'm'; when 'F' then 'w'; else ''; end)
|
|
@@ -328,7 +343,7 @@ attributes in an ICU::Tournament instance.
|
|
|
328
343
|
krause << sprintf(' %-33s', "#{@last_name},#{@first_name}")
|
|
329
344
|
krause << sprintf(' %4s', @rating)
|
|
330
345
|
krause << sprintf(' %3s', @fed)
|
|
331
|
-
krause << sprintf(' %11s', @id)
|
|
346
|
+
krause << sprintf(' %11s', arg[:fide] ? @fide : @id)
|
|
332
347
|
krause << sprintf(' %10s', @dob)
|
|
333
348
|
krause << sprintf(' %4.1f', points)
|
|
334
349
|
krause << sprintf(' %4s', @rank)
|
|
@@ -43,16 +43,19 @@ If no start date is supplied it will default to 2000-01-01, and can be reset lat
|
|
|
43
43
|
tournament.start # => '2000-01-01'
|
|
44
44
|
tournament.start = '2010-07-03'
|
|
45
45
|
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
SwissPerfect files have slots for both local and international IDs and these, if present
|
|
47
|
+
and if intergers are copied to the _id_ and _fide_ attributes respectively.
|
|
48
|
+
|
|
49
|
+
By default, the parser extracts the local rating from the SwissPerfect files and not the international one.
|
|
50
|
+
If international ratings are required instead, set the _rating_ option to "intl". For example:
|
|
48
51
|
|
|
49
52
|
tournament = parser.parse_file('ncc', :start => '2010-05-08')
|
|
50
53
|
tournament.player(2).id # => 12379 (ICU ID)
|
|
51
|
-
tournament.player(2).
|
|
54
|
+
tournament.player(2).fide # => 1205064 (FIDE ID)
|
|
55
|
+
tournament.player(2).rating # => 2556 (ICU rating)
|
|
52
56
|
|
|
53
|
-
tournament = parser.parse_file('ncc', :start => '2010-05-08', :
|
|
54
|
-
tournament.player(2).
|
|
55
|
-
tournament.player(2).rating # => 2530 (FIDE rating)
|
|
57
|
+
tournament = parser.parse_file('ncc', :start => '2010-05-08', :rating => 'intl')
|
|
58
|
+
tournament.player(2).rating # => 2530 (FIDE rating)
|
|
56
59
|
|
|
57
60
|
By default, the parse will fail completely if the ".trn" file contains any invalid federations (see ICU::Federation).
|
|
58
61
|
There are two alternative behaviours controlled by setting the _fed_ option:
|
|
@@ -109,7 +112,8 @@ See ICU::Tournament for more about tie-breaks.
|
|
|
109
112
|
:fed => "FEDER",
|
|
110
113
|
:first_name => "FIRSTNAME",
|
|
111
114
|
:gender => "SEX",
|
|
112
|
-
:id =>
|
|
115
|
+
:id => "LOC_ID",
|
|
116
|
+
:fide => "INTL_ID",
|
|
113
117
|
:last_name => "SURNAME",
|
|
114
118
|
:num => "ID",
|
|
115
119
|
:rank => "ORDER",
|
|
@@ -145,7 +149,7 @@ See ICU::Tournament for more about tie-breaks.
|
|
|
145
149
|
end
|
|
146
150
|
|
|
147
151
|
# Serialise a tournament to SwissPerfect text export format.
|
|
148
|
-
def serialize(t)
|
|
152
|
+
def serialize(t, arg={})
|
|
149
153
|
t.validate!(:type => self)
|
|
150
154
|
|
|
151
155
|
# Ensure a nice set of numbers.
|
|
@@ -287,6 +291,7 @@ See ICU::Tournament for more about tie-breaks.
|
|
|
287
291
|
when :fed then val = val && val.match(/^[A-Z]{3}$/i) ? val.upcase : nil
|
|
288
292
|
when :gender then val = val.to_i > 0 ? %w(M F)[val.to_i-1] : nil
|
|
289
293
|
when :id then val = val.to_i > 0 ? val : nil
|
|
294
|
+
when :fide then val = val.to_i > 0 ? val : nil
|
|
290
295
|
when :rating then val = val.to_i > 0 ? val : nil
|
|
291
296
|
when :title then val = val.to_i > 0 ? %w(GM WGM IM WIM FM WFM)[val.to_i-1] : nil
|
|
292
297
|
end
|
data/spec/player_spec.rb
CHANGED
|
@@ -63,18 +63,30 @@ module ICU
|
|
|
63
63
|
end
|
|
64
64
|
end
|
|
65
65
|
|
|
66
|
-
context "ID" do
|
|
66
|
+
context "local ID" do
|
|
67
67
|
it "defaults to nil" do
|
|
68
68
|
Player.new('Mark', 'Orr', 3).id.should be_nil
|
|
69
69
|
end
|
|
70
70
|
|
|
71
71
|
it "should be a positive integer" do
|
|
72
72
|
Player.new('Mark', 'Orr', 3, :id => 1350).id.should == 1350
|
|
73
|
-
Player.new('
|
|
73
|
+
Player.new('Stephen', 'Brady', 4, :id => ' 90 ').id.should == 90
|
|
74
74
|
lambda { Player.new('Mark', 'Orr', 3, :id => ' 0 ') }.should raise_error(/invalid positive integer/)
|
|
75
75
|
end
|
|
76
76
|
end
|
|
77
|
-
|
|
77
|
+
|
|
78
|
+
context "FIDE ID" do
|
|
79
|
+
it "defaults to nil" do
|
|
80
|
+
Player.new('Stephen', 'Brady', 1).fide.should be_nil
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
it "should be a positive integer" do
|
|
84
|
+
Player.new('Stephen', 'Brady', 1, :fide => 2500124).fide.should == 2500124
|
|
85
|
+
Player.new('Gary', 'Kasparov', 2, :fide => '4100018').fide.should == 4100018
|
|
86
|
+
lambda { Player.new('Mark', 'Orr', 3, :fide => ' 0 ') }.should raise_error(/invalid positive integer/)
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
78
90
|
context "federation" do
|
|
79
91
|
it "defaults to nil" do
|
|
80
92
|
Player.new('Mark', 'Orr', 3).fed.should be_nil
|
|
@@ -212,8 +224,8 @@ module ICU
|
|
|
212
224
|
context "merge" do
|
|
213
225
|
before(:each) do
|
|
214
226
|
@p1 = Player.new('Mark', 'Orr', 1, :id => 1350)
|
|
215
|
-
@p2 = Player.new('Mark', 'Orr', 2, :rating => 2100, :title => 'IM', :fed => 'IRL')
|
|
216
|
-
@p3 = Player.new('Gearoidin', 'Ui Laighleis', 3, :rating => 1600, :title => 'WIM', :fed => 'IRL')
|
|
227
|
+
@p2 = Player.new('Mark', 'Orr', 2, :rating => 2100, :title => 'IM', :fed => 'IRL', :fide => 2500035)
|
|
228
|
+
@p3 = Player.new('Gearoidin', 'Ui Laighleis', 3, :rating => 1600, :title => 'WIM', :fed => 'IRL', :fide => 2501171)
|
|
217
229
|
end
|
|
218
230
|
|
|
219
231
|
it "takes on the ID, rating, title and fed of the other player but not the player number" do
|
|
@@ -223,6 +235,7 @@ module ICU
|
|
|
223
235
|
@p1.rating.should == 2100
|
|
224
236
|
@p1.title.should == 'IM'
|
|
225
237
|
@p1.fed.should == 'IRL'
|
|
238
|
+
@p1.fide.should == 2500035
|
|
226
239
|
end
|
|
227
240
|
|
|
228
241
|
it "should have a kind of symmetry" do
|
|
@@ -7,21 +7,17 @@ module ICU
|
|
|
7
7
|
p = @t.player(num)
|
|
8
8
|
p.first_name.should == first
|
|
9
9
|
p.last_name.should == last
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
p.fed.should == other[:fed]
|
|
14
|
-
p.id.should == other[:id]
|
|
15
|
-
p.dob.should == other[:dob]
|
|
16
|
-
p.rank.should == other[:rank]
|
|
10
|
+
[:gender, :title, :rating, :fed, :id, :fide, :dob, :rank].each do |key|
|
|
11
|
+
p.send(key).should == other[key] if other.has_key?(key)
|
|
12
|
+
end
|
|
17
13
|
end
|
|
18
|
-
|
|
14
|
+
|
|
19
15
|
def check_results(num, results, points)
|
|
20
16
|
p = @t.player(num)
|
|
21
17
|
p.results.size.should == results
|
|
22
18
|
p.points.should == points
|
|
23
19
|
end
|
|
24
|
-
|
|
20
|
+
|
|
25
21
|
context "a typical tournament" do
|
|
26
22
|
before(:all) do
|
|
27
23
|
krause = <<KRAUSE
|
|
@@ -41,54 +37,54 @@ module ICU
|
|
|
41
37
|
0 1 2 3 4 5 6 7 8 9 0 1 2
|
|
42
38
|
0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
|
|
43
39
|
132 08.06.07 08.06.08 08.06.09
|
|
44
|
-
001 1 w Ui Laighleis,Gearoidin 1985 IRL 2501171 1964.06.10 1.0 2 2 b 0 3 w 1
|
|
40
|
+
001 1 w Ui Laighleis,Gearoidin 1985 IRL 2501171 1964.06.10 1.0 2 2 b 0 3 w 1
|
|
45
41
|
001 2 m m Orr,Mark 2258 IRL 2500035 1955.11.09 2.0 1 1 w 1 3 b 1
|
|
46
42
|
001 3 m g Bologan,Viktor 2663 MDA 13900048 1971.01.01 0.0 3 1 b 0 2 w 0
|
|
47
43
|
KRAUSE
|
|
48
44
|
@p = ICU::Tournament::Krause.new
|
|
49
45
|
@t = @p.parse!(krause)
|
|
50
46
|
end
|
|
51
|
-
|
|
47
|
+
|
|
52
48
|
it "should have a name, city and federation" do
|
|
53
49
|
@t.name.should == 'Las Vegas National Open'
|
|
54
50
|
@t.city.should == 'Las Vegas'
|
|
55
51
|
@t.fed.should == 'USA'
|
|
56
52
|
end
|
|
57
|
-
|
|
53
|
+
|
|
58
54
|
it "should have start and end dates" do
|
|
59
55
|
@t.start.should == '2008-06-07'
|
|
60
56
|
@t.finish.should == '2008-06-09'
|
|
61
57
|
end
|
|
62
|
-
|
|
58
|
+
|
|
63
59
|
it "should have a number of rounds, a type and a time control" do
|
|
64
60
|
@t.rounds.should == 3
|
|
65
61
|
@t.last_round.should == 3
|
|
66
62
|
@t.type.should == 'All-Play-All'
|
|
67
63
|
@t.time_control.should == '60 in 2hr, 30 in 1hr, rest in 1hr'
|
|
68
64
|
end
|
|
69
|
-
|
|
65
|
+
|
|
70
66
|
it "should have an arbiter and deputies" do
|
|
71
67
|
@t.arbiter.should == 'Hans Scmidt'
|
|
72
68
|
@t.deputy.should == 'Gerry Graham, Herbert Scarry'
|
|
73
69
|
end
|
|
74
|
-
|
|
70
|
+
|
|
75
71
|
it "should have players and their details" do
|
|
76
72
|
@t.should have(3).players
|
|
77
73
|
check_player(1, 'Gearoidin', 'Ui Laighleis', :gender => 'F', :rating => 1985, :fed => 'IRL', :id => 2501171, :dob => '1964-06-10', :rank => 2)
|
|
78
74
|
check_player(2, 'Mark', 'Orr', :gender => 'M', :rating => 2258, :fed => 'IRL', :id => 2500035, :dob => '1955-11-09', :rank => 1, :title => 'IM')
|
|
79
75
|
check_player(3, 'Viktor', 'Bologan', :gender => 'M', :rating => 2663, :fed => 'MDA', :id => 13900048, :dob => '1971-01-01', :rank => 3, :title => 'GM')
|
|
80
76
|
end
|
|
81
|
-
|
|
77
|
+
|
|
82
78
|
it "should have correct results for each player" do
|
|
83
79
|
check_results(1, 2, 1.0)
|
|
84
80
|
check_results(2, 2, 2.0)
|
|
85
81
|
check_results(3, 2, 0.0)
|
|
86
82
|
end
|
|
87
|
-
|
|
83
|
+
|
|
88
84
|
it "should have correct round dates" do
|
|
89
85
|
@t.round_dates.join('|').should == '2008-06-07|2008-06-08|2008-06-09'
|
|
90
86
|
end
|
|
91
|
-
|
|
87
|
+
|
|
92
88
|
it "the parser should retain comment lines" do
|
|
93
89
|
comments = <<COMMENTS
|
|
94
90
|
062 3
|
|
@@ -100,7 +96,7 @@ COMMENTS
|
|
|
100
96
|
@p.comments.should == comments
|
|
101
97
|
end
|
|
102
98
|
end
|
|
103
|
-
|
|
99
|
+
|
|
104
100
|
context "the documentation example" do
|
|
105
101
|
before(:all) do
|
|
106
102
|
krause = <<KRAUSE
|
|
@@ -109,7 +105,7 @@ COMMENTS
|
|
|
109
105
|
042 2009.09.09
|
|
110
106
|
0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
|
|
111
107
|
132 09.09.09 09.09.10 09.09.11
|
|
112
|
-
001 1 w Mouse,Minerva 1900 USA 1234567 1928.05.15 1.0 2 2 b 0 3 w 1
|
|
108
|
+
001 1 w Mouse,Minerva 1900 USA 1234567 1928.05.15 1.0 2 2 b 0 3 w 1
|
|
113
109
|
001 2 m m Duck,Daffy 2200 IRL 7654321 1937.04.17 2.0 1 1 w 1 3 b 1
|
|
114
110
|
001 3 m g Mouse,Mickey 2600 USA 1726354 1928.05.15 0.0 3 1 b 0 2 w 0
|
|
115
111
|
KRAUSE
|
|
@@ -129,7 +125,7 @@ KRAUSE
|
|
|
129
125
|
end
|
|
130
126
|
|
|
131
127
|
it "should have a number of rounds" do
|
|
132
|
-
@t.rounds.should
|
|
128
|
+
@t.rounds.should == 3
|
|
133
129
|
end
|
|
134
130
|
|
|
135
131
|
it "should have players and their details" do
|
|
@@ -149,7 +145,7 @@ KRAUSE
|
|
|
149
145
|
@p.comments.should == "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890\n"
|
|
150
146
|
end
|
|
151
147
|
end
|
|
152
|
-
|
|
148
|
+
|
|
153
149
|
context "the README serialisation example" do
|
|
154
150
|
before(:all) do
|
|
155
151
|
@t = ICU::Tournament.new('World Championship', '1972-07-11')
|
|
@@ -166,12 +162,12 @@ KRAUSE
|
|
|
166
162
|
it "should produce a valid tournament" do
|
|
167
163
|
@t.invalid.should be_false
|
|
168
164
|
end
|
|
169
|
-
|
|
165
|
+
|
|
170
166
|
it "should produce output that looks reasonable" do
|
|
171
167
|
@k.should match(/Fischer,Robert J\./)
|
|
172
168
|
end
|
|
173
169
|
end
|
|
174
|
-
|
|
170
|
+
|
|
175
171
|
context "serialisation" do
|
|
176
172
|
before(:each) do
|
|
177
173
|
@krause = <<KRAUSE
|
|
@@ -193,17 +189,28 @@ KRAUSE
|
|
|
193
189
|
001 4 wg Cramling,Pia 2500 SWE 1700030 1963-04-23 0.5 3 0000 - = 1 w 0
|
|
194
190
|
KRAUSE
|
|
195
191
|
@p = ICU::Tournament::Krause.new
|
|
196
|
-
@t = @p.parse!(@krause)
|
|
197
|
-
@q = ICU::Tournament::Krause.new
|
|
198
192
|
end
|
|
199
193
|
|
|
200
194
|
it "should serialize back to the original if the input is fully canonicalised" do
|
|
201
|
-
@
|
|
195
|
+
t = @p.parse!(@krause)
|
|
196
|
+
ICU::Tournament::Krause.new.serialize(t).should == @krause
|
|
202
197
|
end
|
|
203
|
-
|
|
198
|
+
|
|
204
199
|
it "should serialize using the convenience method of the tournament object" do
|
|
205
|
-
|
|
200
|
+
t = @p.parse!(@krause)
|
|
201
|
+
t.serialize('Krause').should == @krause
|
|
202
|
+
end
|
|
203
|
+
|
|
204
|
+
it "should not serialize coorectly if mixed ID types are used" do
|
|
205
|
+
t = @p.parse!(@krause, :fide => true)
|
|
206
|
+
t.serialize('Krause').should_not == @krause
|
|
206
207
|
end
|
|
208
|
+
|
|
209
|
+
it "should serialize coorectly if FIDE IDs are used consistently" do
|
|
210
|
+
t = @p.parse!(@krause, :fide => true)
|
|
211
|
+
t.serialize('Krause', :fide => true).should == @krause
|
|
212
|
+
end
|
|
213
|
+
|
|
207
214
|
end
|
|
208
215
|
|
|
209
216
|
context "auto-ranking" do
|
|
@@ -225,13 +232,40 @@ KRAUSE
|
|
|
225
232
|
@t.player(3).rank.should == 3
|
|
226
233
|
end
|
|
227
234
|
end
|
|
228
|
-
|
|
235
|
+
|
|
236
|
+
context "local or FIDE IDs" do
|
|
237
|
+
before(:each) do
|
|
238
|
+
@krause = <<KRAUSE
|
|
239
|
+
012 Las Vegas National Open
|
|
240
|
+
042 2008-06-07
|
|
241
|
+
001 1 w Ui Laighleis,Gearoidin 1985 IRL 2501171 1964-06-10 1.0 2 b 0 3 w 1
|
|
242
|
+
001 2 m m Orr,Mark 2258 IRL 2500035 1955-11-09 2.0 1 w 1 3 b 1
|
|
243
|
+
001 3 m g Bologan,Viktor 2663 MDA 1971-01-01 0.0 1 b 0 2 w 0
|
|
244
|
+
KRAUSE
|
|
245
|
+
@p = ICU::Tournament::Krause.new
|
|
246
|
+
end
|
|
247
|
+
|
|
248
|
+
it "should have local IDs by default" do
|
|
249
|
+
@t = @p.parse(@krause)
|
|
250
|
+
check_player(1, 'Gearoidin', 'Ui Laighleis', :id => 2501171, :fide => nil)
|
|
251
|
+
check_player(2, 'Mark', 'Orr', :id => 2500035, :fide => nil)
|
|
252
|
+
check_player(3, 'Viktor', 'Bologan', :id => nil, :fide => nil)
|
|
253
|
+
end
|
|
254
|
+
|
|
255
|
+
it "should have FIDE IDs if option is used" do
|
|
256
|
+
@t = @p.parse(@krause, :fide => true)
|
|
257
|
+
check_player(1, 'Gearoidin', 'Ui Laighleis', :fide => 2501171, :id => nil)
|
|
258
|
+
check_player(2, 'Mark', 'Orr', :fide => 2500035, :id => nil)
|
|
259
|
+
check_player(3, 'Viktor', 'Bologan', :fide => nil, :id => nil)
|
|
260
|
+
end
|
|
261
|
+
end
|
|
262
|
+
|
|
229
263
|
context "renumbering" do
|
|
230
264
|
before(:all) do
|
|
231
265
|
@krause = <<KRAUSE
|
|
232
266
|
012 Las Vegas National Open
|
|
233
267
|
042 2008-06-07
|
|
234
|
-
001 10 w Ui Laighleis,Gearoidin 1985 IRL 1.0 20 b 0 30 w 1
|
|
268
|
+
001 10 w Ui Laighleis,Gearoidin 1985 IRL 1.0 20 b 0 30 w 1
|
|
235
269
|
001 20 m m Orr,Mark 2258 IRL 2.0 10 w 1 30 b 1
|
|
236
270
|
001 30 m g Bologan,Viktor 2663 MDA 0.0 10 b 0 20 w 0
|
|
237
271
|
KRAUSE
|
|
@@ -245,7 +279,7 @@ KRAUSE
|
|
|
245
279
|
001 3 m g Bologan,Viktor 2663 MDA 0.0 3 2 b 0 1 w 0
|
|
246
280
|
REORDERED
|
|
247
281
|
end
|
|
248
|
-
|
|
282
|
+
|
|
249
283
|
it "should serialise correctly after renumbering by rank" do
|
|
250
284
|
@t.renumber
|
|
251
285
|
@p.serialize(@t).should == @reordered
|
data/spec/tournament_sp_spec.rb
CHANGED
|
@@ -10,7 +10,7 @@ module ICU
|
|
|
10
10
|
class Player
|
|
11
11
|
def signature
|
|
12
12
|
[
|
|
13
|
-
name, id, rating, points, rank,
|
|
13
|
+
name, id, fide, rating, points, rank,
|
|
14
14
|
results.map{ |r| r.round }.join(''),
|
|
15
15
|
results.map{ |r| r.score }.join(''),
|
|
16
16
|
results.map{ |r| r.colour || "-" }.join(''),
|
|
@@ -38,10 +38,10 @@ module ICU
|
|
|
38
38
|
end
|
|
39
39
|
|
|
40
40
|
it "should have correct details for selected players" do
|
|
41
|
-
@t.player(2).signature.should == "Mullooly, Neil M.|6438
|
|
42
|
-
@t.player(4).signature.should == "Gallagher, Mark|12138
|
|
43
|
-
@t.player(45).signature.should == "Catre, Loredan
|
|
44
|
-
@t.player(56).signature.should == "McDonnell, Cathal
|
|
41
|
+
@t.player(2).signature.should == "Mullooly, Neil M.|6438||1083|6.0|1|123456|WWWWWW|WBWBWB|TTTTTT" # winner
|
|
42
|
+
@t.player(4).signature.should == "Gallagher, Mark|12138||1036|4.0|9|123456|WLWWWL|WBWBWB|FTTTTT" # had one bye
|
|
43
|
+
@t.player(45).signature.should == "Catre, Loredan|||507|3.5|18|123456|WDLWLW|BWBWBW|FTTTFT" # had two byes
|
|
44
|
+
@t.player(56).signature.should == "McDonnell, Cathal|||498|0.0|54|1|L|-|F" # last
|
|
45
45
|
end
|
|
46
46
|
|
|
47
47
|
it "should have consistent ranks" do
|
|
@@ -71,10 +71,10 @@ module ICU
|
|
|
71
71
|
end
|
|
72
72
|
|
|
73
73
|
it "should have correct details for selected players" do
|
|
74
|
-
@t.player(1).signature.should == "Griffiths, Ryan-Rhys|6897
|
|
75
|
-
@t.player(2).signature.should == "Flynn, Jamie|5226
|
|
76
|
-
@t.player(3).signature.should == "Hulleman, Leon|6409
|
|
77
|
-
@t.player(4).signature.should == "Dunne, Thomas|10914
|
|
74
|
+
@t.player(1).signature.should == "Griffiths, Ryan-Rhys|6897||2225|3.0|1|123|WWW|WWB|TTT"
|
|
75
|
+
@t.player(2).signature.should == "Flynn, Jamie|5226||1633|2.0|2|123|WLW|WBW|TTT"
|
|
76
|
+
@t.player(3).signature.should == "Hulleman, Leon|6409||1466|1.0|3|123|LWL|BBW|TTT"
|
|
77
|
+
@t.player(4).signature.should == "Dunne, Thomas|10914|||0.0|4|123|LLL|BWB|TTT"
|
|
78
78
|
end
|
|
79
79
|
|
|
80
80
|
it "should have consistent ranks" do
|
|
@@ -103,12 +103,12 @@ module ICU
|
|
|
103
103
|
end
|
|
104
104
|
|
|
105
105
|
it "should have correct details for selected players" do
|
|
106
|
-
@t.player(15).signature.should == "Talazec, Laurent|10692
|
|
107
|
-
@t.player(6).signature.should == "Foenander, Phillip|7168
|
|
108
|
-
@t.player(19).signature.should == "Wall, Robert
|
|
109
|
-
@t.player(17).signature.should == "Freeman, Conor
|
|
110
|
-
@t.player(18).signature.should == "Freeman, Ruiri
|
|
111
|
-
@t.player(16).signature.should == "O'Connor, David
|
|
106
|
+
@t.player(15).signature.should == "Talazec, Laurent|10692||1570|5.5|1|1234567|WWWDDDW|WWBWBWB|FTTTTTT" # winner
|
|
107
|
+
@t.player(6).signature.should == "Foenander, Phillip|7168||1434|4.0|7|1234567|WLWLLWW|BWBWBWB|TTFFTTT" # had some byes
|
|
108
|
+
@t.player(19).signature.should == "Wall, Robert||||3.0|14|34567|WWLWL|WWBBW|FTTTT" # didn't play 1st 2 rounds
|
|
109
|
+
@t.player(17).signature.should == "Freeman, Conor||||2.0|16|1234567|DDLWLLL|--BWBWB|FFTTTTT" # had byes and bonus (in BONUS)
|
|
110
|
+
@t.player(18).signature.should == "Freeman, Ruiri||||2.0|17|1234567|DDLLLLW|--WBBWB|FFTTTTF" # had byes and bonus (in BONUS)
|
|
111
|
+
@t.player(16).signature.should == "O'Connor, David||||1.0|19|123|WLL|WBW|FTF" # last
|
|
112
112
|
end
|
|
113
113
|
|
|
114
114
|
it "should have consistent ranks" do
|
|
@@ -133,10 +133,10 @@ module ICU
|
|
|
133
133
|
end
|
|
134
134
|
|
|
135
135
|
it "should have correct details for selected players" do
|
|
136
|
-
@t.player(15).signature.should == "Gupta, Radhika
|
|
137
|
-
@t.player(18).signature.should == "Hurley, Thomas|6292
|
|
138
|
-
@t.player(8).signature.should == "Berney, Mark|10328
|
|
139
|
-
@t.player(10).signature.should == "O'Donnell, Conor E.|10792
|
|
136
|
+
@t.player(15).signature.should == "Gupta, Radhika|||1247|3.0|1|123|WWW|BBW|TTT" # won all his games
|
|
137
|
+
@t.player(18).signature.should == "Hurley, Thomas|6292||820|1.0|14|1|W|B|F" # scored just 1 from a bye in R1
|
|
138
|
+
@t.player(8).signature.should == "Berney, Mark|10328||1948|2.0|3|23|WW|BW|TT" # didn't play in round 1
|
|
139
|
+
@t.player(10).signature.should == "O'Donnell, Conor E.|10792||1073|2.0|10|123|LWW|WBW|TFT" # got just 1 point for a bye
|
|
140
140
|
end
|
|
141
141
|
|
|
142
142
|
it "should have consistent ranks" do
|
|
@@ -161,11 +161,11 @@ module ICU
|
|
|
161
161
|
end
|
|
162
162
|
|
|
163
163
|
it "should have correct details for selection of players who got bonuses (in MEMO)" do
|
|
164
|
-
@t.player(23).signature.should == "Long, Killian|10293|1506|2.5|33|123456|WDLLWL|WWBWBB|TFTTTT"
|
|
165
|
-
@t.player(26).signature.should == "Bradley, Michael|6756|1413|3.0|26|123456|DDLWWL|BWWBWW|TFTTTT"
|
|
166
|
-
@t.player(15).signature.should == "Twomey, Pat|1637|1656|4.5|7|123456|WDLWWW|WWWBWB|FFTTTT"
|
|
167
|
-
@t.player(46).signature.should == "O'Riordan, Pat|10696
|
|
168
|
-
@t.player(38).signature.should == "Gill, Craig I.|10637|1081|2.0|43|123456|LLWDDL|BWBWWB|TTTTFT"
|
|
164
|
+
@t.player(23).signature.should == "Long, Killian|10293|2|1506|2.5|33|123456|WDLLWL|WWBWBB|TFTTTT"
|
|
165
|
+
@t.player(26).signature.should == "Bradley, Michael|6756|27|1413|3.0|26|123456|DDLWWL|BWWBWW|TFTTTT"
|
|
166
|
+
@t.player(15).signature.should == "Twomey, Pat|1637|22|1656|4.5|7|123456|WDLWWW|WWWBWB|FFTTTT"
|
|
167
|
+
@t.player(46).signature.should == "O'Riordan, Pat|10696||900|2.0|42|123456|LDDLDD|BWBWWB|TTTTFT"
|
|
168
|
+
@t.player(38).signature.should == "Gill, Craig I.|10637|28|1081|2.0|43|123456|LLWDDL|BWBWWB|TTTTFT"
|
|
169
169
|
end
|
|
170
170
|
|
|
171
171
|
it "should have consistent ranks" do
|
|
@@ -186,18 +186,18 @@ module ICU
|
|
|
186
186
|
end
|
|
187
187
|
|
|
188
188
|
it "should have correct details for selection of players, including ICU IDs" do
|
|
189
|
-
@t.player(2).signature.should == "Szabo, Gergely|12379|2530|4.0|4|1234|WWWW|WBWB|TTTT"
|
|
190
|
-
@t.player(5).signature.should == "Daly, Colm|295|2314|3.5|7|1234|WWWD|WBWB|TTTT"
|
|
191
|
-
@t.player(8).signature.should == "Vega, Marcos Llaneza||2475|3.0|16|1234|DDWW|BWBW|TTTT"
|
|
192
|
-
@t.player(67).signature.should == "Lee, Shane|780
|
|
189
|
+
@t.player(2).signature.should == "Szabo, Gergely|12379|1205064|2530|4.0|4|1234|WWWW|WBWB|TTTT"
|
|
190
|
+
@t.player(5).signature.should == "Daly, Colm|295|2500434|2314|3.5|7|1234|WWWD|WBWB|TTTT"
|
|
191
|
+
@t.player(8).signature.should == "Vega, Marcos Llaneza||2253585|2475|3.0|16|1234|DDWW|BWBW|TTTT"
|
|
192
|
+
@t.player(67).signature.should == "Lee, Shane|780||1633|1.0|52|134|DLD|WWW|TTT"
|
|
193
193
|
end
|
|
194
194
|
|
|
195
|
-
it "should have correct details for selection of players, including international
|
|
196
|
-
@t = @p.parse_file(SAMPLES + 'ncc', :start => "2010-05-08", :
|
|
197
|
-
@t.player(2).signature.should == "Szabo, Gergely|1205064||4.0|4|1234|WWWW|WBWB|TTTT"
|
|
198
|
-
@t.player(5).signature.should == "Daly, Colm|2500434||3.5|7|1234|WWWD|WBWB|TTTT"
|
|
199
|
-
@t.player(8).signature.should == "Vega, Marcos Llaneza
|
|
200
|
-
@t.player(67).signature.should == "Lee, Shane|||1.0|52|134|DLD|WWW|TTT"
|
|
195
|
+
it "should have correct details for selection of players, including international ratings when so configured" do
|
|
196
|
+
@t = @p.parse_file(SAMPLES + 'ncc', :start => "2010-05-08", :rating => :intl)
|
|
197
|
+
@t.player(2).signature.should == "Szabo, Gergely|12379|1205064||4.0|4|1234|WWWW|WBWB|TTTT"
|
|
198
|
+
@t.player(5).signature.should == "Daly, Colm|295|2500434||3.5|7|1234|WWWD|WBWB|TTTT"
|
|
199
|
+
@t.player(8).signature.should == "Vega, Marcos Llaneza||2253585||3.0|16|1234|DDWW|BWBW|TTTT"
|
|
200
|
+
@t.player(67).signature.should == "Lee, Shane|780|||1.0|52|134|DLD|WWW|TTT"
|
|
201
201
|
end
|
|
202
202
|
end
|
|
203
203
|
|
|
@@ -293,10 +293,10 @@ module ICU
|
|
|
293
293
|
end
|
|
294
294
|
|
|
295
295
|
it "should have correct details for selection of players, including ICU IDs" do
|
|
296
|
-
@t.player(2).signature.should == "Szabo, Gergely|12379|2530|4.0|4|1234|WWWW|WBWB|TTTT"
|
|
297
|
-
@t.player(5).signature.should == "Daly, Colm|295|2314|3.5|7|1234|WWWD|WBWB|TTTT"
|
|
298
|
-
@t.player(8).signature.should == "Vega, Marcos Llaneza||2475|3.0|16|1234|DDWW|BWBW|TTTT"
|
|
299
|
-
@t.player(67).signature.should == "Lee, Shane|780
|
|
296
|
+
@t.player(2).signature.should == "Szabo, Gergely|12379|1205064|2530|4.0|4|1234|WWWW|WBWB|TTTT"
|
|
297
|
+
@t.player(5).signature.should == "Daly, Colm|295|2500434|2314|3.5|7|1234|WWWD|WBWB|TTTT"
|
|
298
|
+
@t.player(8).signature.should == "Vega, Marcos Llaneza||2253585|2475|3.0|16|1234|DDWW|BWBW|TTTT"
|
|
299
|
+
@t.player(67).signature.should == "Lee, Shane|780||1633|1.0|52|134|DLD|WWW|TTT"
|
|
300
300
|
end
|
|
301
301
|
end
|
|
302
302
|
|
metadata
CHANGED
|
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
|
5
5
|
segments:
|
|
6
6
|
- 1
|
|
7
7
|
- 1
|
|
8
|
-
-
|
|
9
|
-
version: 1.1.
|
|
8
|
+
- 1
|
|
9
|
+
version: 1.1.1
|
|
10
10
|
platform: ruby
|
|
11
11
|
authors:
|
|
12
12
|
- Mark Orr
|
|
@@ -14,7 +14,7 @@ autorequire:
|
|
|
14
14
|
bindir: bin
|
|
15
15
|
cert_chain: []
|
|
16
16
|
|
|
17
|
-
date: 2010-10-
|
|
17
|
+
date: 2010-10-18 00:00:00 +01:00
|
|
18
18
|
default_executable:
|
|
19
19
|
dependencies:
|
|
20
20
|
- !ruby/object:Gem::Dependency
|