antw-dyno 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. data/LICENSE +19 -0
  2. data/README.markdown +68 -0
  3. data/Rakefile +45 -0
  4. data/VERSION.yml +4 -0
  5. data/lib/dyno.rb +22 -0
  6. data/lib/dyno/competitor.rb +55 -0
  7. data/lib/dyno/event.rb +16 -0
  8. data/lib/dyno/parsers/gtr2_parser.rb +13 -0
  9. data/lib/dyno/parsers/race07_parser.rb +130 -0
  10. data/lib/dyno/parsers/rfactor_parser.rb +138 -0
  11. data/spec/competitor_spec.rb +129 -0
  12. data/spec/event_spec.rb +59 -0
  13. data/spec/fixtures/gtr2/full.ini +0 -0
  14. data/spec/fixtures/gtr2/header_no_track.ini +0 -0
  15. data/spec/fixtures/gtr2/header_only.ini +0 -0
  16. data/spec/fixtures/gtr2/no_header_section.ini +0 -0
  17. data/spec/fixtures/gtr2/single_driver.ini +0 -0
  18. data/spec/fixtures/race07/full.ini +131 -0
  19. data/spec/fixtures/race07/header_no_track.ini +11 -0
  20. data/spec/fixtures/race07/header_only.ini +12 -0
  21. data/spec/fixtures/race07/no_header_section.ini +6 -0
  22. data/spec/fixtures/race07/no_steam_id.ini +37 -0
  23. data/spec/fixtures/race07/single_driver.ini +37 -0
  24. data/spec/fixtures/race07/single_driver_dnf.ini +34 -0
  25. data/spec/fixtures/race07/single_driver_dsq.ini +34 -0
  26. data/spec/fixtures/readme.markdown +5 -0
  27. data/spec/fixtures/rfactor/arca.xml +187 -0
  28. data/spec/fixtures/rfactor/event_only.xml +43 -0
  29. data/spec/fixtures/rfactor/full.xml +1023 -0
  30. data/spec/fixtures/rfactor/missing_root.xml +6 -0
  31. data/spec/fixtures/rfactor/single_driver.xml +85 -0
  32. data/spec/fixtures/rfactor/single_driver_dnf.xml +80 -0
  33. data/spec/fixtures/rfactor/single_driver_dsq.xml +79 -0
  34. data/spec/parsers/gtr2_parser_spec.rb +199 -0
  35. data/spec/parsers/race07_parser_spec.rb +155 -0
  36. data/spec/parsers/rfactor_parser_spec.rb +158 -0
  37. data/spec/spec_helper.rb +3 -0
  38. metadata +107 -0
@@ -0,0 +1,129 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe Dyno::Competitor do
4
+ before(:each) do
5
+ @competitor = Dyno::Competitor.new("Jake Lucas")
6
+ end
7
+
8
+ it 'should have a +name+ accessor' do
9
+ @competitor.should respond_to(:name)
10
+ @competitor.should respond_to(:name=)
11
+ end
12
+
13
+ it 'should have a +uid+ accessor' do
14
+ @competitor.should respond_to(:uid)
15
+ @competitor.should respond_to(:uid=)
16
+ end
17
+
18
+ it 'should have a +position+ accessor' do
19
+ @competitor.should respond_to(:position)
20
+ @competitor.should respond_to(:position=)
21
+ end
22
+
23
+ it 'should have a +vehicle+ accessor' do
24
+ @competitor.should respond_to(:vehicle)
25
+ @competitor.should respond_to(:vehicle=)
26
+ end
27
+
28
+ it 'should have a +laps+ accessor' do
29
+ @competitor.should respond_to(:laps)
30
+ @competitor.should respond_to(:laps=)
31
+ end
32
+
33
+ it 'should have a +race_time+ accessor' do
34
+ @competitor.should respond_to(:race_time)
35
+ @competitor.should respond_to(:race_time=)
36
+ end
37
+
38
+ it 'should have a +best_lap+ accessor' do
39
+ @competitor.should respond_to(:best_lap)
40
+ @competitor.should respond_to(:best_lap=)
41
+ end
42
+
43
+ it 'should respond_to #finished?' do
44
+ @competitor.should respond_to(:finished?)
45
+ end
46
+
47
+ it 'should respond_to #dnf?' do
48
+ @competitor.should respond_to(:dnf?)
49
+ end
50
+
51
+ it 'should respond_to #dsq?' do
52
+ @competitor.should respond_to(:dsq?)
53
+ end
54
+
55
+ # ----------
56
+ # initialize
57
+
58
+ it 'should use the given values when creating a Event' do
59
+ properties = {
60
+ :uid => 1337,
61
+ :position => 3,
62
+ :vehicle => "BMW 320si E90 2007",
63
+ :laps => 13,
64
+ :race_time => "0:21:31.183",
65
+ :best_lap => "1:37.960"
66
+ }
67
+
68
+ competitor = Dyno::Competitor.new("Jake Lucas", properties)
69
+ competitor.name.should == "Jake Lucas"
70
+
71
+ properties.each do |prop, value|
72
+ competitor.send(prop).should == value
73
+ end
74
+ end
75
+
76
+ it 'should require that a name be supplied' do
77
+ lambda { Dyno::Competitor.new }.should raise_error(ArgumentError)
78
+ end
79
+
80
+ # ---------------------------------
81
+ # finished / dnf / disqualification
82
+
83
+ describe 'when the competitor finished the event' do
84
+ it 'should return true to #finished?' do
85
+ @competitor.should be_finished
86
+ end
87
+
88
+ it 'should return false to #dnf?' do
89
+ @competitor.should_not be_dnf
90
+ end
91
+
92
+ it 'should return false to #dsq?' do
93
+ @competitor.should_not be_dsq
94
+ end
95
+ end
96
+
97
+ describe 'when the competitor did not finish' do
98
+ before { @competitor.dnf! }
99
+
100
+ it 'should return false to #finished?' do
101
+ @competitor.should_not be_finished
102
+ end
103
+
104
+ it 'should return true to #dnf?' do
105
+ @competitor.should be_dnf
106
+ end
107
+
108
+ it 'should return false to #dsq?' do
109
+ @competitor.should_not be_dsq
110
+ end
111
+ end
112
+
113
+ describe 'when the competitor was disqualified' do
114
+ before { @competitor.dsq! }
115
+
116
+ it 'should return false to #finished?' do
117
+ @competitor.should_not be_finished
118
+ end
119
+
120
+ it 'should return false to #dnf?' do
121
+ @competitor.should_not be_dnf
122
+ end
123
+
124
+ it 'should return true to #dsq?' do
125
+ @competitor.should be_dsq
126
+ end
127
+ end
128
+
129
+ end
@@ -0,0 +1,59 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe Dyno::Event do
4
+ before(:all) do
5
+ @event = Dyno::Event.new
6
+ end
7
+
8
+ it 'should have a +time+ accessor' do
9
+ @event.should respond_to(:time)
10
+ @event.should respond_to(:time=)
11
+ end
12
+
13
+ it 'should have a +track+ accessor' do
14
+ @event.should respond_to(:track)
15
+ @event.should respond_to(:track=)
16
+ end
17
+
18
+ it 'should have a +game+ accessor' do
19
+ @event.should respond_to(:game)
20
+ @event.should respond_to(:game=)
21
+ end
22
+
23
+ it 'should have a +game_version+ accessor' do
24
+ @event.should respond_to(:game_version)
25
+ @event.should respond_to(:game_version=)
26
+ end
27
+
28
+ it 'should have a +competitors+ accessor' do
29
+ @event.should respond_to(:competitors)
30
+ @event.should respond_to(:competitors=)
31
+ end
32
+
33
+ # -----------
34
+ # #initialize
35
+
36
+ it 'should use the given values when creating a Event' do
37
+ event = Dyno::Event.new(
38
+ :time => Time.now - 10,
39
+ :track => "Anderstorp 2007",
40
+ :game => "Event 07",
41
+ :game_version => "1.1.1.14",
42
+ :competitors => [1]
43
+ )
44
+
45
+ event.time.should be_close(Time.now - 10, 0.5)
46
+ event.track.should == "Anderstorp 2007"
47
+ event.game.should == "Event 07"
48
+ event.game_version.should == "1.1.1.14"
49
+ event.competitors.should == [1]
50
+ end
51
+
52
+ it 'should set a default time if none is given' do
53
+ Dyno::Event.new.time.should be_close(Time.now, 1)
54
+ end
55
+
56
+ it 'should default competitors to [] if none are given' do
57
+ Dyno::Event.new.competitors.should == []
58
+ end
59
+ end
@@ -0,0 +1,131 @@
1
+ [Header]
2
+ Game=RACE 07
3
+ Version=1.1.1.14
4
+ TimeString=2008/09/13 23:26:32
5
+ Aids=0,0,0,0,0,1,1,0,0
6
+
7
+ [Race]
8
+ RaceMode=5
9
+ Scene=GameData\Locations\Anderstorp_2007\2007_ANDERSTORP.TRK
10
+ AIDB=GameData\Locations\Anderstorp_2007\2007_ANDERSTORP.AIW
11
+ Race Length=0.100
12
+ Track Length=4018.8376
13
+
14
+ [Slot010]
15
+ Driver=Mark Voss
16
+ SteamUser=mvoss
17
+ SteamId=1865369
18
+ Vehicle=Chevrolet Lacetti 2007
19
+ Team=TEMPLATE_TEAM
20
+ QualTime=1:37.839
21
+ Laps=13
22
+ Lap=(0, -1.000, 1:48.697)
23
+ Lap=(1, 89.397, 1:39.455)
24
+ Lap=(2, 198.095, 1:38.060)
25
+ Lap=(3, 297.550, 1:38.632)
26
+ Lap=(4, 395.610, 1:38.031)
27
+ Lap=(5, 494.242, 1:39.562)
28
+ Lap=(6, 592.273, 1:39.950)
29
+ Lap=(7, 691.835, 1:38.366)
30
+ Lap=(8, 791.785, 1:39.889)
31
+ Lap=(9, 890.151, 1:39.420)
32
+ Lap=(10, 990.040, 1:39.401)
33
+ Lap=(11, 1089.460, 1:39.506)
34
+ Lap=(12, 1188.862, 1:40.017)
35
+ LapDistanceTravelled=3857.750244
36
+ BestLap=1:38.031
37
+ RaceTime=0:21:38.988
38
+
39
+ [Slot016]
40
+ Driver=Corey Ball
41
+ SteamUser=cball
42
+ SteamId=889853
43
+ Vehicle=SEAT Leon 2007
44
+ Team=TEMPLATE_TEAM
45
+ QualTime=1:37.904
46
+ Laps=9
47
+ Lap=(0, -1.000, 1:51.434)
48
+ Lap=(1, 89.397, 1:39.427)
49
+ Lap=(2, 200.831, 1:38.394)
50
+ Lap=(3, 300.258, 1:40.239)
51
+ Lap=(4, 398.653, 1:38.172)
52
+ Lap=(5, 498.891, 1:38.427)
53
+ Lap=(6, 597.063, 1:39.271)
54
+ Lap=(7, 695.490, 1:39.922)
55
+ Lap=(8, 794.761, 1:40.305)
56
+ LapDistanceTravelled=532.898193
57
+ BestLap=1:38.172
58
+ RaceTime=DNF
59
+ Reason=0
60
+
61
+ [Slot013]
62
+ Driver=Gabriel Lloyd
63
+ SteamUser=glloyd
64
+ SteamId=635
65
+ Vehicle=Chevrolet Lacetti 2007
66
+ Team=TEMPLATE_TEAM
67
+ QualTime=1:36.607
68
+ Laps=13
69
+ Lap=(0, -1.000, 1:50.816)
70
+ Lap=(1, 89.397, 1:38.835)
71
+ Lap=(2, 200.213, 1:38.082)
72
+ Lap=(3, 299.048, 1:38.367)
73
+ Lap=(4, 397.131, 1:37.825)
74
+ Lap=(5, 495.497, 1:38.757)
75
+ Lap=(6, 593.322, 1:38.718)
76
+ Lap=(7, 692.080, 1:38.478)
77
+ Lap=(8, 790.797, 1:39.347)
78
+ Lap=(9, 889.275, 1:38.713)
79
+ Lap=(10, 988.622, 1:38.952)
80
+ Lap=(11, 1087.336, 1:39.285)
81
+ Lap=(12, 1186.288, 1:40.555)
82
+ LapDistanceTravelled=3898.517578
83
+ BestLap=1:37.825
84
+ RaceTime=0:21:36.730
85
+
86
+ [Slot018]
87
+ Driver=Reino Lintula
88
+ SteamUser=rlintula
89
+ SteamId=1816
90
+ Vehicle=SEAT Leon 2007
91
+ Team=TEMPLATE_TEAM
92
+ QualTime=1:39.602
93
+ Laps=7
94
+ Lap=(0, -1.000, 1:52.788)
95
+ Lap=(1, 112.593, 1:39.346)
96
+ Lap=(2, 225.381, 1:40.680)
97
+ Lap=(3, 324.727, 1:38.775)
98
+ Lap=(4, 425.407, 1:40.149)
99
+ Lap=(5, 524.182, 1:41.551)
100
+ Lap=(6, 624.331, 1:46.908)
101
+ LapDistanceTravelled=1333.551270
102
+ BestLap=1:38.775
103
+ RaceTime=DNF
104
+ Reason=0
105
+
106
+ [Slot002]
107
+ Driver=Jerry Lalich
108
+ SteamUser=jlalich
109
+ SteamId=236892
110
+ Vehicle=Chevrolet Lacetti 2007
111
+ Team=TEMPLATE_TEAM
112
+ QualTime=1:38.081
113
+ Laps=13
114
+ Lap=(0, -1.000, 1:48.530)
115
+ Lap=(1, 89.397, 1:39.213)
116
+ Lap=(2, 197.927, 1:37.933)
117
+ Lap=(3, 297.140, 1:37.717)
118
+ Lap=(4, 395.073, 1:38.500)
119
+ Lap=(5, 492.790, 1:38.641)
120
+ Lap=(6, 591.290, 1:39.810)
121
+ Lap=(7, 689.931, 1:39.177)
122
+ Lap=(8, 789.742, 1:40.122)
123
+ Lap=(9, 888.918, 1:38.928)
124
+ Lap=(10, 989.040, 1:39.238)
125
+ Lap=(11, 1087.968, 1:39.223)
126
+ Lap=(12, 1187.206, 1:39.888)
127
+ LapDistanceTravelled=3892.720215
128
+ BestLap=1:37.717
129
+ RaceTime=0:21:36.920
130
+
131
+ [END]
@@ -0,0 +1,11 @@
1
+ [Header]
2
+ Game=RACE 07
3
+ Version=1.1.1.14
4
+ TimeString=2008/09/13 23:00:50
5
+ Aids=0,0,0,0,0,1,1,0,0
6
+
7
+ [Race]
8
+ RaceMode=5
9
+ AIDB=GameData\Locations\Anderstorp_2007\2007_ANDERSTORP.AIW
10
+ Race Length=0.100
11
+ Track Length=4018.8376
@@ -0,0 +1,12 @@
1
+ [Header]
2
+ Game=RACE 07
3
+ Version=1.1.1.14
4
+ TimeString=2008/09/13 23:00:50
5
+ Aids=0,0,0,0,0,1,1,0,0
6
+
7
+ [Race]
8
+ RaceMode=5
9
+ Scene=GameData\Locations\Anderstorp_2007\2007_ANDERSTORP.TRK
10
+ AIDB=GameData\Locations\Anderstorp_2007\2007_ANDERSTORP.AIW
11
+ Race Length=0.100
12
+ Track Length=4018.8376
@@ -0,0 +1,6 @@
1
+ [Race]
2
+ RaceMode=5
3
+ Scene=GameData\Locations\Anderstorp_2007\2007_ANDERSTORP.TRK
4
+ AIDB=GameData\Locations\Anderstorp_2007\2007_ANDERSTORP.AIW
5
+ Race Length=0.100
6
+ Track Length=4018.8376
@@ -0,0 +1,37 @@
1
+ [Header]
2
+ Game=RACE 07
3
+ Version=1.1.1.14
4
+ TimeString=2008/09/13 23:26:32
5
+ Aids=0,0,0,0,0,1,1,0,0
6
+
7
+ [Race]
8
+ RaceMode=5
9
+ Scene=GameData\Locations\Anderstorp_2007\2007_ANDERSTORP.TRK
10
+ AIDB=GameData\Locations\Anderstorp_2007\2007_ANDERSTORP.AIW
11
+ Race Length=0.100
12
+ Track Length=4018.8376
13
+
14
+ [Slot013]
15
+ Driver=Gabriel Lloyd
16
+ SteamUser=
17
+ SteamId=
18
+ Vehicle=Chevrolet Lacetti 2007
19
+ Team=TEMPLATE_TEAM
20
+ QualTime=1:36.607
21
+ Laps=13
22
+ Lap=(0, -1.000, 1:50.816)
23
+ Lap=(1, 89.397, 1:38.835)
24
+ Lap=(2, 200.213, 1:38.082)
25
+ Lap=(3, 299.048, 1:38.367)
26
+ Lap=(4, 397.131, 1:37.825)
27
+ Lap=(5, 495.497, 1:38.757)
28
+ Lap=(6, 593.322, 1:38.718)
29
+ Lap=(7, 692.080, 1:38.478)
30
+ Lap=(8, 790.797, 1:39.347)
31
+ Lap=(9, 889.275, 1:38.713)
32
+ Lap=(10, 988.622, 1:38.952)
33
+ Lap=(11, 1087.336, 1:39.285)
34
+ Lap=(12, 1186.288, 1:40.555)
35
+ LapDistanceTravelled=3898.517578
36
+ BestLap=1:37.825
37
+ RaceTime=0:21:36.730
@@ -0,0 +1,37 @@
1
+ [Header]
2
+ Game=RACE 07
3
+ Version=1.1.1.14
4
+ TimeString=2008/09/13 23:26:32
5
+ Aids=0,0,0,0,0,1,1,0,0
6
+
7
+ [Race]
8
+ RaceMode=5
9
+ Scene=GameData\Locations\Anderstorp_2007\2007_ANDERSTORP.TRK
10
+ AIDB=GameData\Locations\Anderstorp_2007\2007_ANDERSTORP.AIW
11
+ Race Length=0.100
12
+ Track Length=4018.8376
13
+
14
+ [Slot013]
15
+ Driver=Gabriel Lloyd
16
+ SteamUser=glloyd
17
+ SteamId=635
18
+ Vehicle=Chevrolet Lacetti 2007
19
+ Team=TEMPLATE_TEAM
20
+ QualTime=1:36.607
21
+ Laps=13
22
+ Lap=(0, -1.000, 1:50.816)
23
+ Lap=(1, 89.397, 1:38.835)
24
+ Lap=(2, 200.213, 1:38.082)
25
+ Lap=(3, 299.048, 1:38.367)
26
+ Lap=(4, 397.131, 1:37.825)
27
+ Lap=(5, 495.497, 1:38.757)
28
+ Lap=(6, 593.322, 1:38.718)
29
+ Lap=(7, 692.080, 1:38.478)
30
+ Lap=(8, 790.797, 1:39.347)
31
+ Lap=(9, 889.275, 1:38.713)
32
+ Lap=(10, 988.622, 1:38.952)
33
+ Lap=(11, 1087.336, 1:39.285)
34
+ Lap=(12, 1186.288, 1:40.555)
35
+ LapDistanceTravelled=3898.517578
36
+ BestLap=1:37.825
37
+ RaceTime=0:21:36.730
@@ -0,0 +1,34 @@
1
+ [Header]
2
+ Game=RACE 07
3
+ Version=1.1.1.14
4
+ TimeString=2008/09/13 23:26:32
5
+ Aids=0,0,0,0,0,1,1,0,0
6
+
7
+ [Race]
8
+ RaceMode=5
9
+ Scene=GameData\Locations\Anderstorp_2007\2007_ANDERSTORP.TRK
10
+ AIDB=GameData\Locations\Anderstorp_2007\2007_ANDERSTORP.AIW
11
+ Race Length=0.100
12
+ Track Length=4018.8376
13
+
14
+ [Slot016]
15
+ Driver=Corey Ball
16
+ SteamUser=cball
17
+ SteamId=889853
18
+ Vehicle=SEAT Leon 2007
19
+ Team=TEMPLATE_TEAM
20
+ QualTime=1:37.904
21
+ Laps=9
22
+ Lap=(0, -1.000, 1:51.434)
23
+ Lap=(1, 89.397, 1:39.427)
24
+ Lap=(2, 200.831, 1:38.394)
25
+ Lap=(3, 300.258, 1:40.239)
26
+ Lap=(4, 398.653, 1:38.172)
27
+ Lap=(5, 498.891, 1:38.427)
28
+ Lap=(6, 597.063, 1:39.271)
29
+ Lap=(7, 695.490, 1:39.922)
30
+ Lap=(8, 794.761, 1:40.305)
31
+ LapDistanceTravelled=532.898193
32
+ BestLap=1:38.172
33
+ RaceTime=DNF
34
+ Reason=0