metra_schedule 0.2 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/metra/cacher.rb +1 -1
- data/lib/metra/line.rb +7 -1
- data/lib/metra/stop.rb +4 -0
- data/lib/metra/train.rb +6 -0
- data/test/test_line.rb +12 -0
- data/test/test_stop.rb +4 -0
- data/test/test_train.rb +11 -0
- metadata +1 -1
data/lib/metra/cacher.rb
CHANGED
data/lib/metra/line.rb
CHANGED
@@ -93,7 +93,7 @@ module MetraSchedule
|
|
93
93
|
unless start_or_destination == :start or start_or_destination == :destination
|
94
94
|
raise ArgumentError.new "First argument must be either :start or :destination"
|
95
95
|
end
|
96
|
-
raise ArgumentError.new "Not a valid station" unless LINES[
|
96
|
+
raise ArgumentError.new "Not a valid station" unless LINES[@line_key][:stations].include?(station)
|
97
97
|
@start = station if start_or_destination == :start
|
98
98
|
@destination = station if start_or_destination == :destination
|
99
99
|
self
|
@@ -116,6 +116,12 @@ module MetraSchedule
|
|
116
116
|
self
|
117
117
|
end
|
118
118
|
|
119
|
+
def deduce_direction_by_time
|
120
|
+
@dir = :inbound if Time.now < Time.parse("12:00PM")
|
121
|
+
@dir = :outbound if Time.now > Time.parse("12:00PM")
|
122
|
+
self
|
123
|
+
end
|
124
|
+
|
119
125
|
def trains
|
120
126
|
return [] unless engines
|
121
127
|
engines.find_all do |engine|
|
data/lib/metra/stop.rb
CHANGED
data/lib/metra/train.rb
CHANGED
@@ -22,5 +22,11 @@ module MetraSchedule
|
|
22
22
|
false
|
23
23
|
end
|
24
24
|
|
25
|
+
def departure_and_arrival(start, destination)
|
26
|
+
departure = @stops.find {|s| s.station == start}.time
|
27
|
+
arrival = @stops.find {|s| s.station == destination}.time
|
28
|
+
{:departure => departure, :arrival => arrival}
|
29
|
+
end
|
30
|
+
|
25
31
|
end
|
26
32
|
end
|
data/test/test_line.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'test/unit'
|
2
2
|
require File.join(File.dirname(__FILE__), "../lib", "metra")
|
3
|
+
require File.join(File.dirname(__FILE__), "timecop", "lib", "timecop")
|
3
4
|
|
4
5
|
class TestLine < Test::Unit::TestCase
|
5
6
|
|
@@ -250,4 +251,15 @@ class TestLine < Test::Unit::TestCase
|
|
250
251
|
assert_equal([train1, train2, train3, train4], line.trains)
|
251
252
|
end
|
252
253
|
|
254
|
+
|
255
|
+
def test_deduce_direction_by_time
|
256
|
+
Timecop.freeze(Time.parse("11:00AM"))
|
257
|
+
line = Metra.new.line(:up_nw).deduce_direction_by_time
|
258
|
+
assert_equal(:inbound, line.dir)
|
259
|
+
|
260
|
+
Timecop.freeze(Time.parse("12:01PM"))
|
261
|
+
line = Metra.new.line(:up_nw).deduce_direction_by_time
|
262
|
+
assert_equal(:outbound, line.dir)
|
263
|
+
end
|
264
|
+
|
253
265
|
end
|
data/test/test_stop.rb
CHANGED
data/test/test_train.rb
CHANGED
@@ -51,4 +51,15 @@ class TestLine < Test::Unit::TestCase
|
|
51
51
|
assert_equal(false, @@t.in_time?(:barrington, Time.parse("12:35")))
|
52
52
|
end
|
53
53
|
|
54
|
+
def test_departure_and_arrival
|
55
|
+
stop1 = MetraSchedule::Stop.new :station => :barrington, :time => Time.parse("12:30")
|
56
|
+
stop2 = MetraSchedule::Stop.new :station => :arlington_heights, :time => Time.parse("12:40")
|
57
|
+
@@t = MetraSchedule::Train.new :train_num => 651, :bike_limit => 12, :schedule => :weekday, :direction => :inbound, :stops => [stop1, stop2]
|
58
|
+
|
59
|
+
l = Metra.new.line(:up_nw)
|
60
|
+
l.engines = [@@t]
|
61
|
+
train = l.trains.first
|
62
|
+
assert_equal({:departure => Time.parse("12:30"), :arrival => Time.parse("12:40")}, train.departure_and_arrival(:barrington, :arlington_heights))
|
63
|
+
end
|
64
|
+
|
54
65
|
end
|