icu_tournament 1.2.7 → 1.2.8
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/tournament_fcsv.rb +4 -3
- data/lib/icu_tournament/tournament_krause.rb +3 -1
- data/lib/icu_tournament/version.rb +1 -1
- data/spec/tournament_fcsv_spec.rb +89 -36
- data/spec/tournament_krause_spec.rb +50 -1
- data/spec/tournament_sp_spec.rb +16 -15
- data/spec/tournament_spec.rb +1 -1
- metadata +3 -3
|
@@ -125,9 +125,10 @@ module ICU
|
|
|
125
125
|
attr_reader :error
|
|
126
126
|
|
|
127
127
|
# Parse CSV data returning a Tournament on success or raising an exception on error.
|
|
128
|
-
def parse!(csv)
|
|
128
|
+
def parse!(csv, arg={})
|
|
129
129
|
@state, @line, @round, @sum, @error = 0, 0, nil, nil, nil
|
|
130
130
|
@tournament = Tournament.new('Dummy', '2000-01-01')
|
|
131
|
+
csv = ICU::Util.to_utf8(csv) unless arg[:is_utf8]
|
|
131
132
|
|
|
132
133
|
CSV.parse(csv, :row_sep => :auto) do |r|
|
|
133
134
|
@line += 1 # increment line number
|
|
@@ -184,8 +185,8 @@ module ICU
|
|
|
184
185
|
|
|
185
186
|
# Same as <em>parse!</em> except the input is a file name rather than file contents.
|
|
186
187
|
def parse_file!(file)
|
|
187
|
-
csv =
|
|
188
|
-
parse!(csv)
|
|
188
|
+
csv = ICU::Util.read_utf8(file)
|
|
189
|
+
parse!(csv, :is_utf8 => true)
|
|
189
190
|
end
|
|
190
191
|
|
|
191
192
|
# Same as <em>parse</em> except the input is a file name rather than file contents.
|
|
@@ -117,6 +117,7 @@ module ICU
|
|
|
117
117
|
@name_set, @start_set = false, false
|
|
118
118
|
@comments = ''
|
|
119
119
|
@results = Array.new
|
|
120
|
+
krs = ICU::Util.to_utf8(krs) unless arg[:is_utf8]
|
|
120
121
|
|
|
121
122
|
# Process all lines.
|
|
122
123
|
krs.each_line do |line|
|
|
@@ -192,7 +193,8 @@ module ICU
|
|
|
192
193
|
|
|
193
194
|
# Same as <em>parse!</em> except the input is a file name rather than file contents.
|
|
194
195
|
def parse_file!(file, arg={})
|
|
195
|
-
krause =
|
|
196
|
+
krause = ICU::Util.read_utf8(file)
|
|
197
|
+
arg[:is_utf8] = true
|
|
196
198
|
parse!(krause, arg)
|
|
197
199
|
end
|
|
198
200
|
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
1
2
|
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
|
2
3
|
|
|
3
4
|
module ICU
|
|
@@ -15,7 +16,7 @@ module ICU
|
|
|
15
16
|
p.results.select{|r| r.rateable}.size.should == rateable
|
|
16
17
|
p.points.should == points
|
|
17
18
|
end
|
|
18
|
-
|
|
19
|
+
|
|
19
20
|
context "a typical tournament" do
|
|
20
21
|
before(:all) do
|
|
21
22
|
@csv = <<CSV
|
|
@@ -34,27 +35,27 @@ CSV
|
|
|
34
35
|
@f = ICU::Tournament::ForeignCSV.new
|
|
35
36
|
@t = @f.parse!(@csv)
|
|
36
37
|
end
|
|
37
|
-
|
|
38
|
+
|
|
38
39
|
it "should have a name" do
|
|
39
40
|
@t.name.should == 'Bangor Open, 2003'
|
|
40
41
|
end
|
|
41
|
-
|
|
42
|
+
|
|
42
43
|
it "should have a start date" do
|
|
43
44
|
@t.start.should == '2003-07-01'
|
|
44
45
|
end
|
|
45
|
-
|
|
46
|
+
|
|
46
47
|
it "should have a number of rounds" do
|
|
47
48
|
@t.rounds.should == 4
|
|
48
49
|
end
|
|
49
|
-
|
|
50
|
+
|
|
50
51
|
it "should have a website" do
|
|
51
52
|
@t.site.should == 'http://www.icu.ie/tournaments/display.php?id=371'
|
|
52
53
|
end
|
|
53
|
-
|
|
54
|
+
|
|
54
55
|
it "should have some players" do
|
|
55
56
|
@t.should have(4).players
|
|
56
57
|
end
|
|
57
|
-
|
|
58
|
+
|
|
58
59
|
it "should have correct player details" do
|
|
59
60
|
check_player(1, 'Gearoidin', 'Ui Laighleis', 4, 3, 2.0, :id => 3364)
|
|
60
61
|
check_player(2, 'April', 'Cronin', 1, 0, 1.0, :rating => 2005, :fed => 'IRL')
|
|
@@ -62,7 +63,7 @@ CSV
|
|
|
62
63
|
check_player(4, 'Linda', 'Powell', 1, 0, 0.0, :rating => 1850, :fed => 'WLS')
|
|
63
64
|
end
|
|
64
65
|
end
|
|
65
|
-
|
|
66
|
+
|
|
66
67
|
context "the rdoc example tournament" do
|
|
67
68
|
before(:all) do
|
|
68
69
|
@csv = <<CSV
|
|
@@ -89,26 +90,26 @@ CSV
|
|
|
89
90
|
@o = @t.players.reject { |o| o.num == 1 }
|
|
90
91
|
@r = @t.player(2)
|
|
91
92
|
end
|
|
92
|
-
|
|
93
|
+
|
|
93
94
|
it "should have correct basic details" do
|
|
94
95
|
@t.name.should == 'Isle of Man Masters, 2007'
|
|
95
96
|
@t.start.should == '2007-09-22'
|
|
96
97
|
@t.rounds.should == 9
|
|
97
98
|
@t.site.should == 'http://www.bcmchess.co.uk/monarch2007/'
|
|
98
99
|
end
|
|
99
|
-
|
|
100
|
+
|
|
100
101
|
it "should have the right number of players in the right order" do
|
|
101
102
|
@t.players.size.should == 9
|
|
102
103
|
@t.players.inject(''){ |a,o| a << o.num.to_s }.should == '123456789'
|
|
103
104
|
end
|
|
104
|
-
|
|
105
|
+
|
|
105
106
|
it "should have the right details for the main player" do
|
|
106
107
|
@p.name.should == "Fox, Anthony"
|
|
107
108
|
@p.results.size == 9
|
|
108
109
|
@p.results.find_all{ |r| r.rateable }.size.should == 8
|
|
109
110
|
@p.points.should == 4.0
|
|
110
111
|
end
|
|
111
|
-
|
|
112
|
+
|
|
112
113
|
it "should have the right details for the opponents" do
|
|
113
114
|
@o.size.should == 8
|
|
114
115
|
@o.find_all{ |o| o.results.size == 1}.size.should == 8
|
|
@@ -116,7 +117,7 @@ CSV
|
|
|
116
117
|
@r.results[0].rateable.should be_false
|
|
117
118
|
end
|
|
118
119
|
end
|
|
119
|
-
|
|
120
|
+
|
|
120
121
|
context "a tournament with more than one player" do
|
|
121
122
|
before(:all) do
|
|
122
123
|
@csv = <<CSV
|
|
@@ -158,7 +159,7 @@ CSV
|
|
|
158
159
|
check_player(5, 'Bobby', 'Fischer', 1, 0, 0.0, :rating => 2700, :fed => 'USA', :title => 'GM')
|
|
159
160
|
end
|
|
160
161
|
end
|
|
161
|
-
|
|
162
|
+
|
|
162
163
|
context "a tournament where someone is both a player and an opponent" do
|
|
163
164
|
before(:all) do
|
|
164
165
|
@csv = <<CSV
|
|
@@ -199,11 +200,11 @@ CSV
|
|
|
199
200
|
check_player(4, 'April', 'Cronin', 1, 0, 0.5, :rating => 2005, :fed => 'IRL')
|
|
200
201
|
end
|
|
201
202
|
end
|
|
202
|
-
|
|
203
|
+
|
|
203
204
|
context "a file that contains spurious white space and other untidiness" do
|
|
204
205
|
before(:all) do
|
|
205
206
|
@csv = <<CSV
|
|
206
|
-
|
|
207
|
+
|
|
207
208
|
Event," Bratto Open, 2001 "
|
|
208
209
|
Start, 7th March 2001
|
|
209
210
|
Rounds, 2
|
|
@@ -237,7 +238,7 @@ CSV
|
|
|
237
238
|
check_player(3, 'Mark', 'Orr', 1, 0, 0.5, :rating => 2100, :fed => 'IRL', :title => 'IM')
|
|
238
239
|
end
|
|
239
240
|
end
|
|
240
|
-
|
|
241
|
+
|
|
241
242
|
context "#parse" do
|
|
242
243
|
before(:each) do
|
|
243
244
|
@f = ICU::Tournament::ForeignCSV.new
|
|
@@ -258,7 +259,7 @@ CSV
|
|
|
258
259
|
@f.parse(csv).should be_an_instance_of(ICU::Tournament)
|
|
259
260
|
@f.error.should be_nil
|
|
260
261
|
end
|
|
261
|
-
|
|
262
|
+
|
|
262
263
|
it "should not throw an exception but return nil on error" do
|
|
263
264
|
@f.parse(' ').should be_nil
|
|
264
265
|
@f.error.should match(/event/)
|
|
@@ -269,11 +270,11 @@ CSV
|
|
|
269
270
|
before(:each) do
|
|
270
271
|
@f = ICU::Tournament::ForeignCSV.new
|
|
271
272
|
end
|
|
272
|
-
|
|
273
|
+
|
|
273
274
|
it "a blank file is invalid" do
|
|
274
275
|
lambda { @f.parse!(' ') }.should raise_error(/event/i)
|
|
275
276
|
end
|
|
276
|
-
|
|
277
|
+
|
|
277
278
|
it "the event should come first" do
|
|
278
279
|
csv = <<CSV
|
|
279
280
|
Start,7th March 2001
|
|
@@ -283,7 +284,7 @@ Website,http://www.federscacchi.it/
|
|
|
283
284
|
CSV
|
|
284
285
|
lambda { @f.parse!(csv) }.should raise_error(/line 1.*event/i)
|
|
285
286
|
end
|
|
286
|
-
|
|
287
|
+
|
|
287
288
|
it "the start should come second" do
|
|
288
289
|
csv = <<CSV
|
|
289
290
|
Event,"Bratto Open, 2001"
|
|
@@ -293,7 +294,7 @@ Website,http://www.federscacchi.it/
|
|
|
293
294
|
CSV
|
|
294
295
|
lambda { @f.parse!(csv) }.should raise_error(/line 2.*start/i)
|
|
295
296
|
end
|
|
296
|
-
|
|
297
|
+
|
|
297
298
|
it "the number of rounds should come third" do
|
|
298
299
|
csv = <<CSV
|
|
299
300
|
Event,"Bratto Open, 2001"
|
|
@@ -303,7 +304,7 @@ Rounds,2
|
|
|
303
304
|
CSV
|
|
304
305
|
lambda { @f.parse!(csv) }.should raise_error(/line 3.*rounds/i)
|
|
305
306
|
end
|
|
306
|
-
|
|
307
|
+
|
|
307
308
|
it "there should be a web site" do
|
|
308
309
|
csv = <<CSV
|
|
309
310
|
Event,"Bratto Open, 2001"
|
|
@@ -313,7 +314,7 @@ Rounds,2
|
|
|
313
314
|
CSV
|
|
314
315
|
lambda { @f.parse!(csv) }.should raise_error(/line 4.*site/i)
|
|
315
316
|
end
|
|
316
|
-
|
|
317
|
+
|
|
317
318
|
it "should have at least one player" do
|
|
318
319
|
csv = <<CSV
|
|
319
320
|
Event,"Bratto Open, 2001"
|
|
@@ -323,7 +324,7 @@ Website,http://www.federscacchi.it/
|
|
|
323
324
|
CSV
|
|
324
325
|
lambda { @f.parse!(csv) }.should raise_error(/line 4.*no players/i)
|
|
325
326
|
end
|
|
326
|
-
|
|
327
|
+
|
|
327
328
|
it "the player needs to have a valid ID number" do
|
|
328
329
|
csv = <<CSV
|
|
329
330
|
Event,"Bratto Open, 2001"
|
|
@@ -335,7 +336,7 @@ Player,0,Ui Laighleis,Gearoidin
|
|
|
335
336
|
CSV
|
|
336
337
|
lambda { @f.parse!(csv) }.should raise_error(/line 6.*number/i)
|
|
337
338
|
end
|
|
338
|
-
|
|
339
|
+
|
|
339
340
|
it "should have the right number of results for each player" do
|
|
340
341
|
csv = <<CSV
|
|
341
342
|
Event,"Bratto Open, 2001"
|
|
@@ -349,7 +350,7 @@ Total,0.5
|
|
|
349
350
|
CSV
|
|
350
351
|
lambda { @f.parse!(csv) }.should raise_error(/line 8.*round/i)
|
|
351
352
|
end
|
|
352
|
-
|
|
353
|
+
|
|
353
354
|
it "should have correct totals" do
|
|
354
355
|
csv = <<CSV
|
|
355
356
|
Event,"Bratto Open, 2001"
|
|
@@ -364,8 +365,8 @@ Total,1.5
|
|
|
364
365
|
CSV
|
|
365
366
|
lambda { @f.parse!(csv) }.should raise_error(/line 9.*total/i)
|
|
366
367
|
end
|
|
367
|
-
|
|
368
|
-
|
|
368
|
+
|
|
369
|
+
|
|
369
370
|
it "players who match by name and federation should match in all other details" do
|
|
370
371
|
csv = <<CSV
|
|
371
372
|
Event,"Bratto Open, 2001"
|
|
@@ -386,7 +387,7 @@ CSV
|
|
|
386
387
|
lambda { @f.parse!(csv) }.should raise_error(/line 13.*same name.*conflicting/i)
|
|
387
388
|
end
|
|
388
389
|
end
|
|
389
|
-
|
|
390
|
+
|
|
390
391
|
context "serialisation of simple tournament" do
|
|
391
392
|
before(:each) do
|
|
392
393
|
@csv = <<CSV
|
|
@@ -413,7 +414,7 @@ CSV
|
|
|
413
414
|
@f.serialize(@t).should == @csv
|
|
414
415
|
end
|
|
415
416
|
end
|
|
416
|
-
|
|
417
|
+
|
|
417
418
|
context "serialisation of ForeignCSV documentation example" do
|
|
418
419
|
before(:each) do
|
|
419
420
|
@csv = <<CSV
|
|
@@ -490,7 +491,7 @@ CSV
|
|
|
490
491
|
@t.serialize('ForeignCSV').should == @csv
|
|
491
492
|
end
|
|
492
493
|
end
|
|
493
|
-
|
|
494
|
+
|
|
494
495
|
context "serialisation of shortened ForeignCSV documentation example" do
|
|
495
496
|
before(:each) do
|
|
496
497
|
@csv = <<CSV
|
|
@@ -538,13 +539,47 @@ CSV
|
|
|
538
539
|
@t.serialize('ForeignCSV').should == @csv
|
|
539
540
|
end
|
|
540
541
|
end
|
|
541
|
-
|
|
542
|
+
|
|
543
|
+
context "encoding" do
|
|
544
|
+
before(:each) do
|
|
545
|
+
@csv = <<CSV
|
|
546
|
+
Event,"Brätto Open, 2001"
|
|
547
|
+
Start,7th March 2001
|
|
548
|
+
Rounds,2
|
|
549
|
+
Website,http://www.federscacchi.it/
|
|
550
|
+
|
|
551
|
+
Player,3364,Uì Laighlèis,Gearoìdin
|
|
552
|
+
1,=,W,Kasparov,Gary,2800,GM,RUS
|
|
553
|
+
2,=,B,Örr,Mârk,2100,IM,IRL
|
|
554
|
+
Total,1.0
|
|
555
|
+
CSV
|
|
556
|
+
@f = ICU::Tournament::ForeignCSV.new
|
|
557
|
+
end
|
|
558
|
+
|
|
559
|
+
it "should parse UTF-8" do
|
|
560
|
+
lambda { @t = @f.parse!(@csv) }.should_not raise_error
|
|
561
|
+
check_player(1, 'Gearoìdin', 'Uì Laighlèis', 2, 2, 1.0, :id => 3364)
|
|
562
|
+
check_player(2, 'Gary', 'Kasparov', 1, 0, 0.5, :rating => 2800, :fed => 'RUS', :title => 'GM')
|
|
563
|
+
check_player(3, 'Mârk', 'Örr', 1, 0, 0.5, :rating => 2100, :fed => 'IRL', :title => 'IM')
|
|
564
|
+
@t.name.should == "Brätto Open, 2001"
|
|
565
|
+
end
|
|
566
|
+
|
|
567
|
+
it "should parse Latin-1" do
|
|
568
|
+
@csv = @csv.encode("ISO-8859-1")
|
|
569
|
+
lambda { @t = @f.parse!(@csv) }.should_not raise_error
|
|
570
|
+
check_player(1, 'Gearoìdin', 'Uì Laighlèis', 2, 2, 1.0, :id => 3364)
|
|
571
|
+
check_player(2, 'Gary', 'Kasparov', 1, 0, 0.5, :rating => 2800, :fed => 'RUS', :title => 'GM')
|
|
572
|
+
check_player(3, 'Mârk', 'Örr', 1, 0, 0.5, :rating => 2100, :fed => 'IRL', :title => 'IM')
|
|
573
|
+
@t.name.should == "Brätto Open, 2001"
|
|
574
|
+
end
|
|
575
|
+
end
|
|
576
|
+
|
|
542
577
|
context "parsing files" do
|
|
543
578
|
before(:each) do
|
|
544
579
|
@p = ICU::Tournament::ForeignCSV.new
|
|
545
580
|
@s = File.dirname(__FILE__) + '/samples/fcsv'
|
|
546
581
|
end
|
|
547
|
-
|
|
582
|
+
|
|
548
583
|
it "should error on a non-existant valid file" do
|
|
549
584
|
file = "#{@s}/not_there.csv"
|
|
550
585
|
lambda { @p.parse_file!(file) }.should raise_error
|
|
@@ -552,7 +587,7 @@ CSV
|
|
|
552
587
|
t.should be_nil
|
|
553
588
|
@p.error.should match(/no such file/i)
|
|
554
589
|
end
|
|
555
|
-
|
|
590
|
+
|
|
556
591
|
it "should error on an invalid file" do
|
|
557
592
|
file = "#{@s}/invalid.csv"
|
|
558
593
|
lambda { @p.parse_file!(file) }.should raise_error
|
|
@@ -560,7 +595,7 @@ CSV
|
|
|
560
595
|
t.should be_nil
|
|
561
596
|
@p.error.should match(/expected.*event.*name/i)
|
|
562
597
|
end
|
|
563
|
-
|
|
598
|
+
|
|
564
599
|
it "should parse a valid file" do
|
|
565
600
|
file = "#{@s}/valid.csv"
|
|
566
601
|
lambda { @p.parse_file!(file) }.should_not raise_error
|
|
@@ -568,6 +603,24 @@ CSV
|
|
|
568
603
|
t.should be_an_instance_of(ICU::Tournament)
|
|
569
604
|
t.players.size.should == 16
|
|
570
605
|
end
|
|
606
|
+
|
|
607
|
+
it "should parse a file encoded in UTF-8" do
|
|
608
|
+
file = "#{@s}/utf-8.csv"
|
|
609
|
+
lambda { @t = @p.parse_file!(file) }.should_not raise_error
|
|
610
|
+
check_player(1, 'Gearoìdin', 'Uì Laighlèis', 2, 2, 1.0, :id => 3364)
|
|
611
|
+
check_player(2, 'Gary', 'Kasparov', 1, 0, 0.5, :rating => 2800, :fed => 'RUS', :title => 'GM')
|
|
612
|
+
check_player(3, 'Mârk', 'Örr', 1, 0, 0.5, :rating => 2100, :fed => 'IRL', :title => 'IM')
|
|
613
|
+
@t.name.should == "Brätto Open, 2001"
|
|
614
|
+
end
|
|
615
|
+
|
|
616
|
+
it "should parse a file encoded in Latin-1" do
|
|
617
|
+
file = "#{@s}/latin-1.csv"
|
|
618
|
+
lambda { @t = @p.parse_file!(file) }.should_not raise_error
|
|
619
|
+
check_player(1, 'Gearoìdin', 'Uì Laighlèis', 2, 2, 1.0, :id => 3364)
|
|
620
|
+
check_player(2, 'Gary', 'Kasparov', 1, 0, 0.5, :rating => 2800, :fed => 'RUS', :title => 'GM')
|
|
621
|
+
check_player(3, 'Mârk', 'Örr', 1, 0, 0.5, :rating => 2100, :fed => 'IRL', :title => 'IM')
|
|
622
|
+
@t.name.should == "Brätto Open, 2001"
|
|
623
|
+
end
|
|
571
624
|
end
|
|
572
625
|
|
|
573
626
|
context "type validation" do
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
1
2
|
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
|
2
3
|
|
|
3
4
|
module ICU
|
|
@@ -232,7 +233,7 @@ KRAUSE
|
|
|
232
233
|
@t.player(3).rank.should == 3
|
|
233
234
|
end
|
|
234
235
|
end
|
|
235
|
-
|
|
236
|
+
|
|
236
237
|
context "local or FIDE IDs" do
|
|
237
238
|
before(:each) do
|
|
238
239
|
@krause = <<KRAUSE
|
|
@@ -404,6 +405,36 @@ KRAUSE
|
|
|
404
405
|
lambda { t = @p.parse!(@k) }.should raise_error(/opponent/)
|
|
405
406
|
end
|
|
406
407
|
end
|
|
408
|
+
|
|
409
|
+
context "encoding" do
|
|
410
|
+
before(:all) do
|
|
411
|
+
@utf8 = <<KRAUSE
|
|
412
|
+
012 Läs Végas National Opeñ
|
|
413
|
+
042 2008-06-07
|
|
414
|
+
001 1 w Uì Laighlèis,Gearoìdin 1.0 2 b 0 3 w 1
|
|
415
|
+
001 2 m m Örr,Mârk 2.0 1 w 1 3 b 1
|
|
416
|
+
001 3 m g Bologan,Viktor 0.0 1 b 0 2 w 0
|
|
417
|
+
KRAUSE
|
|
418
|
+
@p = ICU::Tournament::Krause.new
|
|
419
|
+
end
|
|
420
|
+
|
|
421
|
+
it "should handle UTF-8" do
|
|
422
|
+
@t = @p.parse!(@utf8)
|
|
423
|
+
check_player(1, 'Gearoìdin', 'Uì Laighlèis')
|
|
424
|
+
check_player(2, 'Mârk', 'Örr')
|
|
425
|
+
check_player(3, 'Viktor', 'Bologan')
|
|
426
|
+
@t.name.should == "Läs Végas National Opeñ"
|
|
427
|
+
end
|
|
428
|
+
|
|
429
|
+
it "should handle Latin-1" do
|
|
430
|
+
latin1 = @utf8.encode("ISO-8859-1")
|
|
431
|
+
@t = @p.parse!(latin1)
|
|
432
|
+
check_player(1, 'Gearoìdin', 'Uì Laighlèis')
|
|
433
|
+
check_player(2, 'Mârk', 'Örr')
|
|
434
|
+
check_player(3, 'Viktor', 'Bologan')
|
|
435
|
+
@t.name.should == "Läs Végas National Opeñ"
|
|
436
|
+
end
|
|
437
|
+
end
|
|
407
438
|
|
|
408
439
|
context "parsing files" do
|
|
409
440
|
before(:each) do
|
|
@@ -434,6 +465,24 @@ KRAUSE
|
|
|
434
465
|
t.should be_an_instance_of(ICU::Tournament)
|
|
435
466
|
t.players.size.should == 12
|
|
436
467
|
end
|
|
468
|
+
|
|
469
|
+
it "should parse a file with UTF-8 encoding" do
|
|
470
|
+
file = "#{@s}/utf-8.tab"
|
|
471
|
+
lambda { @t = @p.parse_file!(file) }.should_not raise_error
|
|
472
|
+
check_player(1, 'Gearoìdin', 'Uì Laighlèis')
|
|
473
|
+
check_player(2, 'Mârk', 'Örr')
|
|
474
|
+
check_player(3, 'Viktor', 'Bologan')
|
|
475
|
+
@t.name.should == "Läs Végas National Opeñ"
|
|
476
|
+
end
|
|
477
|
+
|
|
478
|
+
it "should parse a file with Latin-1 encoding" do
|
|
479
|
+
file = "#{@s}/latin-1.tab"
|
|
480
|
+
lambda { @t = @p.parse_file!(file) }.should_not raise_error
|
|
481
|
+
check_player(1, 'Gearoìdin', 'Uì Laighlèis')
|
|
482
|
+
check_player(2, 'Mârk', 'Örr')
|
|
483
|
+
check_player(3, 'Viktor', 'Bologan')
|
|
484
|
+
@t.name.should == "Läs Végas National Opeñ"
|
|
485
|
+
end
|
|
437
486
|
end
|
|
438
487
|
end
|
|
439
488
|
end
|
data/spec/tournament_sp_spec.rb
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
1
2
|
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
|
2
3
|
SAMPLES = File.dirname(__FILE__) + '/samples/sp/'
|
|
3
4
|
|
|
@@ -25,7 +26,6 @@ module ICU
|
|
|
25
26
|
describe SwissPerfect do
|
|
26
27
|
|
|
27
28
|
context "Gonzaga Challengers 2010" do
|
|
28
|
-
|
|
29
29
|
before(:all) do
|
|
30
30
|
@p = ICU::Tournament::SwissPerfect.new
|
|
31
31
|
@t = @p.parse_file(SAMPLES + 'gonzaga_challengers_2010.trn', :start => "2010-01-29")
|
|
@@ -58,7 +58,6 @@ module ICU
|
|
|
58
58
|
end
|
|
59
59
|
|
|
60
60
|
context "U19 Junior Championships 2010" do
|
|
61
|
-
|
|
62
61
|
before(:all) do
|
|
63
62
|
@p = ICU::Tournament::SwissPerfect.new
|
|
64
63
|
@t = @p.parse_file(SAMPLES + 'junior_championships_u19_2010.sco', :start => "2010-04-11")
|
|
@@ -91,7 +90,6 @@ module ICU
|
|
|
91
90
|
end
|
|
92
91
|
|
|
93
92
|
context "Limerick Club Championship 2009-10" do
|
|
94
|
-
|
|
95
93
|
before(:all) do
|
|
96
94
|
@p = ICU::Tournament::SwissPerfect.new
|
|
97
95
|
@t = @p.parse_file(SAMPLES + 'LimerickClubChampionship09.ini', :start => "2009-09-15")
|
|
@@ -121,7 +119,6 @@ module ICU
|
|
|
121
119
|
end
|
|
122
120
|
|
|
123
121
|
context "Junior Inter Provincials U16 2010" do
|
|
124
|
-
|
|
125
122
|
before(:all) do
|
|
126
123
|
@p = ICU::Tournament::SwissPerfect.new
|
|
127
124
|
@t = @p.parse_file(SAMPLES + 'junior_provincials_u16_2010', :start => "2010-02-02")
|
|
@@ -149,7 +146,6 @@ module ICU
|
|
|
149
146
|
end
|
|
150
147
|
|
|
151
148
|
context "Mulcahy Cup 2010" do
|
|
152
|
-
|
|
153
149
|
before(:all) do
|
|
154
150
|
@p = ICU::Tournament::SwissPerfect.new
|
|
155
151
|
@t = @p.parse_file(SAMPLES + 'mulcahy_2010', :start => "2010-01-15")
|
|
@@ -174,7 +170,6 @@ module ICU
|
|
|
174
170
|
end
|
|
175
171
|
|
|
176
172
|
context "National Club Champiomships 2010" do
|
|
177
|
-
|
|
178
173
|
before(:all) do
|
|
179
174
|
@p = ICU::Tournament::SwissPerfect.new
|
|
180
175
|
@t = @p.parse_file(SAMPLES + 'ncc', :start => "2010-05-08")
|
|
@@ -202,7 +197,6 @@ module ICU
|
|
|
202
197
|
end
|
|
203
198
|
|
|
204
199
|
context "Drogheda Section A, 2010, with an invalid federation" do
|
|
205
|
-
|
|
206
200
|
before(:each) do
|
|
207
201
|
@p = ICU::Tournament::SwissPerfect.new
|
|
208
202
|
end
|
|
@@ -212,14 +206,14 @@ module ICU
|
|
|
212
206
|
t.should be_nil
|
|
213
207
|
@p.error.should match(/invalid federation/i)
|
|
214
208
|
end
|
|
215
|
-
|
|
209
|
+
|
|
216
210
|
it "should parse if instructed to skip bad feds" do
|
|
217
211
|
t = @p.parse_file(SAMPLES + 'drog_a.zip', :start => "2010-06-04", :fed => :skip)
|
|
218
212
|
@p.error.should be_nil
|
|
219
213
|
t.player(5).fed.should be_nil
|
|
220
214
|
t.player(6).fed.should == "ESP"
|
|
221
215
|
end
|
|
222
|
-
|
|
216
|
+
|
|
223
217
|
it "should parse if instructed to skip all feds" do
|
|
224
218
|
t = @p.parse_file(SAMPLES + 'drog_a.zip', :start => "2010-06-04", :fed => 'ignore')
|
|
225
219
|
@p.error.should be_nil
|
|
@@ -229,7 +223,6 @@ module ICU
|
|
|
229
223
|
end
|
|
230
224
|
|
|
231
225
|
context "Non-existant ZIP file" do
|
|
232
|
-
|
|
233
226
|
before(:all) do
|
|
234
227
|
@p = ICU::Tournament::SwissPerfect.new
|
|
235
228
|
@t = @p.parse_file(SAMPLES + 'nosuchzipfile.zip', :start => "2010-05-08")
|
|
@@ -255,7 +248,6 @@ module ICU
|
|
|
255
248
|
end
|
|
256
249
|
|
|
257
250
|
context "ZIP file containing the wrong number of files" do
|
|
258
|
-
|
|
259
251
|
before(:all) do
|
|
260
252
|
@p = ICU::Tournament::SwissPerfect.new
|
|
261
253
|
@t = @p.parse_file(SAMPLES + 'notenoughfiles.zip', :start => "2010-05-08")
|
|
@@ -268,7 +260,6 @@ module ICU
|
|
|
268
260
|
end
|
|
269
261
|
|
|
270
262
|
context "ZIP file containing the files with mixed stems" do
|
|
271
|
-
|
|
272
263
|
before(:all) do
|
|
273
264
|
@p = ICU::Tournament::SwissPerfect.new
|
|
274
265
|
@t = @p.parse_file(SAMPLES + 'mixedstems.zip', :start => "2010-05-08")
|
|
@@ -281,7 +272,6 @@ module ICU
|
|
|
281
272
|
end
|
|
282
273
|
|
|
283
274
|
context "ZIP file" do
|
|
284
|
-
|
|
285
275
|
before(:all) do
|
|
286
276
|
@p = ICU::Tournament::SwissPerfect.new
|
|
287
277
|
@t = @p.parse_file(SAMPLES + 'nccz.zip', :start => "2010-05-08")
|
|
@@ -301,7 +291,6 @@ module ICU
|
|
|
301
291
|
end
|
|
302
292
|
|
|
303
293
|
context "ZIP file without a ZIP ending" do
|
|
304
|
-
|
|
305
294
|
before(:all) do
|
|
306
295
|
@p = ICU::Tournament::SwissPerfect.new
|
|
307
296
|
end
|
|
@@ -315,8 +304,20 @@ module ICU
|
|
|
315
304
|
end
|
|
316
305
|
end
|
|
317
306
|
|
|
318
|
-
context "
|
|
307
|
+
context "Names with accented characters" do
|
|
308
|
+
before(:all) do
|
|
309
|
+
@p = ICU::Tournament::SwissPerfect.new
|
|
310
|
+
end
|
|
319
311
|
|
|
312
|
+
it "should parse and the name should be in UTF-8" do
|
|
313
|
+
lambda { @t = @p.parse_file!(SAMPLES + 'munster_u10_2011.zip', :start => "2011-01-20") }.should_not raise_error
|
|
314
|
+
@t.player(1).signature.should == "Kennedy, Stephen|||849|2.0|6|12345|WLWLL|BWBWB|TTTTT"
|
|
315
|
+
@t.player(4).signature.should == "Sheehan, Ciarán||||3.0|5|12345|LWWLW|WBWBW|TTTTF"
|
|
316
|
+
@t.player(10).signature.should == "Sheehan, Adam||||2.0|7|12345|WLLWL|WBWWB|TTTFT"
|
|
317
|
+
end
|
|
318
|
+
end
|
|
319
|
+
|
|
320
|
+
context "Defaulting the start date" do
|
|
320
321
|
before(:all) do
|
|
321
322
|
@p = ICU::Tournament::SwissPerfect.new
|
|
322
323
|
@t = @p.parse_file(SAMPLES + 'nccz.zip')
|
data/spec/tournament_spec.rb
CHANGED
|
@@ -840,7 +840,7 @@ EOS
|
|
|
840
840
|
it "should raise exceptions if the wrong type is used" do
|
|
841
841
|
lambda { @c.parse_file!("#{@s}/krause/valid.tab", 'ForeignCSV') }.should raise_error(/expected/)
|
|
842
842
|
lambda { @c.parse_file!("#{@s}/fcsv/valid.csv", 'SwissPerfect') }.should raise_error(/cannot/)
|
|
843
|
-
lambda { @c.parse_file!("#{@s}/sp/nccz.zip", 'Krause') }.should raise_error(/(
|
|
843
|
+
lambda { @c.parse_file!("#{@s}/sp/nccz.zip", 'Krause') }.should raise_error(/(invalid|conversion)/i)
|
|
844
844
|
end
|
|
845
845
|
|
|
846
846
|
it "should raise an exception if file does not exist" do
|
metadata
CHANGED
|
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
|
5
5
|
segments:
|
|
6
6
|
- 1
|
|
7
7
|
- 2
|
|
8
|
-
-
|
|
9
|
-
version: 1.2.
|
|
8
|
+
- 8
|
|
9
|
+
version: 1.2.8
|
|
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: 2011-
|
|
17
|
+
date: 2011-02-04 00:00:00 +00:00
|
|
18
18
|
default_executable:
|
|
19
19
|
dependencies:
|
|
20
20
|
- !ruby/object:Gem::Dependency
|