octranspo 0.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +3 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +26 -0
- data/Rakefile +8 -0
- data/lib/octranspo.rb +20 -0
- data/lib/octranspo/headsign.rb +2539 -0
- data/lib/octranspo/headsigns.yml +40565 -0
- data/lib/octranspo/landmarks.rb +37 -0
- data/lib/octranspo/lingo.rb +125 -0
- data/lib/octranspo/lingo/headsign_messages.yml +104 -0
- data/lib/octranspo/lingo/headsign_signatures.yml +3 -0
- data/lib/octranspo/lingo/landmarks.yml +205 -0
- data/lib/octranspo/lingo/roadways.yml +1957 -0
- data/lib/octranspo/mobile_resource_methods.rb +98 -0
- data/lib/octranspo/mobile_route_data.rb +85 -0
- data/lib/octranspo/mobile_route_schedule.rb +118 -0
- data/lib/octranspo/mobile_stop_schedule.rb +137 -0
- data/lib/octranspo/remote_resource_methods.rb +89 -0
- data/lib/octranspo/route.rb +31 -0
- data/lib/octranspo/routes.yml +507 -0
- data/lib/octranspo/service_date.rb +17 -0
- data/lib/octranspo/stations.yml +77 -0
- data/lib/octranspo/stop.rb +69 -0
- data/lib/octranspo/stop_resource.rb +46 -0
- data/lib/octranspo/stops.yml +30696 -0
- data/lib/octranspo/version.rb +3 -0
- data/octranspo.gemspec +22 -0
- data/test/fixtures/mobile_route_data/20090323/route_123_index_0.html +457 -0
- data/test/fixtures/mobile_route_data/20090323/route_123_index_1.html +99 -0
- data/test/fixtures/mobile_route_data/20090323/route_1_index_0.html +700 -0
- data/test/fixtures/mobile_route_data/20090323/route_1_index_1.html +691 -0
- data/test/fixtures/mobile_route_data/20090323/route_2_index_0.html +682 -0
- data/test/fixtures/mobile_route_data/20090323/route_2_index_1.html +646 -0
- data/test/fixtures/mobile_route_data/20100323/route_123_index_0.html +469 -0
- data/test/fixtures/mobile_route_data/20100323/route_123_index_1.html +105 -0
- data/test/fixtures/mobile_route_data/20100323/route_1_index_0.html +703 -0
- data/test/fixtures/mobile_route_data/20100323/route_1_index_1.html +694 -0
- data/test/fixtures/mobile_route_data/20100323/route_2_index_0.html +685 -0
- data/test/fixtures/mobile_route_data/20100323/route_2_index_1.html +649 -0
- data/test/fixtures/mobile_route_data/20100323/route_3_index_0.html +649 -0
- data/test/fixtures/mobile_route_data/20100323/route_3_index_1.html +721 -0
- data/test/fixtures/mobile_route_schedule/20090323/route_18_direction_2_location_25.html +1038 -0
- data/test/fixtures/mobile_route_schedule/20090323/route_1_direction_1_location_0.html +1127 -0
- data/test/fixtures/mobile_route_schedule/20090323/route_2_direction_2_location_11.html +1430 -0
- data/test/fixtures/mobile_route_schedule/20090323/route_2_direction__location_11.html +104 -0
- data/test/fixtures/mobile_route_schedule/20100323/route_1_direction_1_location_0.html +1180 -0
- data/test/fixtures/mobile_route_schedule/20100323/route_2_direction_2_location_11.html +1554 -0
- data/test/fixtures/mobile_route_schedule/20100323/route_3_direction_1_location_0.html +1082 -0
- data/test/fixtures/mobile_route_schedule/20100323/route_3_direction_1_location_1.html +1082 -0
- data/test/fixtures/mobile_stop_schedule/20090323/location_1987.yml +198 -0
- data/test/fixtures/mobile_stop_schedule/20090323/location_1987_route_index_0.html +1283 -0
- data/test/fixtures/mobile_stop_schedule/20090323/location_1987_route_index_1.html +194 -0
- data/test/fixtures/mobile_stop_schedule/20090323/location_1987_route_index_2.html +116 -0
- data/test/fixtures/mobile_stop_schedule/20090323/location_3058_route_index_12.html +149 -0
- data/test/fixtures/mobile_stop_schedule/20090323/location_8789_route_index_0.html +1002 -0
- data/test/fixtures/mobile_stop_schedule/20100323/location_1987.yml +209 -0
- data/test/fixtures/mobile_stop_schedule/20100323/location_1987_route_index_0.html +1393 -0
- data/test/fixtures/mobile_stop_schedule/20100323/location_1987_route_index_1.html +206 -0
- data/test/fixtures/mobile_stop_schedule/20100323/location_1987_route_index_2.html +123 -0
- data/test/fixtures/mobile_stop_schedule/20100323/location_3058_route_index_12.html +278 -0
- data/test/fixtures/mobile_stop_schedule/20100323/location_7558_route_index_0.html +979 -0
- data/test/fixtures/mobile_stop_schedule/20100323/location_8789_route_index_0.html +1059 -0
- data/test/fixtures/stop_resource/1987.html +126 -0
- data/test/test_helper.rb +15 -0
- data/test/unit/headsign_test.rb +34 -0
- data/test/unit/lingo_test.rb +139 -0
- data/test/unit/mobile_resource_methods_test.rb +25 -0
- data/test/unit/mobile_route_data_test.rb +124 -0
- data/test/unit/mobile_route_schedule_test.rb +210 -0
- data/test/unit/mobile_stop_schedule_test.rb +153 -0
- data/test/unit/service_date_test.rb +27 -0
- data/test/unit/stop_resource_test.rb +26 -0
- metadata +251 -0
@@ -0,0 +1,126 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
4
|
+
<html lang="EN">
|
5
|
+
<head>
|
6
|
+
<title>OC Travel Planner</title>
|
7
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
8
|
+
<meta http-equiv="expires" content="0"/>
|
9
|
+
<link rel="stylesheet" type="text/css" href="style.css">
|
10
|
+
<script type="text/javascript" language="JavaScript" src="js/validate.js"></script>
|
11
|
+
</head>
|
12
|
+
<body>
|
13
|
+
|
14
|
+
|
15
|
+
<script type="text/javascript" language="JavaScript" src="js/sniffer.js"></script>
|
16
|
+
<script type="text/javascript" language="JavaScript">
|
17
|
+
if (!detect())
|
18
|
+
{
|
19
|
+
document.open();
|
20
|
+
document.writeln('<div class="badBrowser">The travel planner works best with Netscape 6.1 and up, or Explorer 5 and up. If you are using other browsers or lower versions you may encounter problems. Would you like to proceed?</div>');
|
21
|
+
document.close();
|
22
|
+
}
|
23
|
+
</script>
|
24
|
+
|
25
|
+
<noscript>
|
26
|
+
<div class="noscript">
|
27
|
+
<h2>This site uses Javascript. Please enable Javascript in your web browser
|
28
|
+
before continuing.</h2>
|
29
|
+
</div>
|
30
|
+
</noscript>
|
31
|
+
<form name="tp_from560" method="get" action="From560Confirm.oci;jsessionid=1FA018169BEF95E84987E83622F4D35E">
|
32
|
+
<table cellpadding="0" cellspacing="0" summary="" class="banner">
|
33
|
+
<tr>
|
34
|
+
<td width="83"><img src="tripPlanning/images/tp_banner1.gif" width="83" height="43"></td>
|
35
|
+
<td width="718"><img src="tripPlanning/images/tp_banner2.gif" width="668" height="43"></td>
|
36
|
+
</tr>
|
37
|
+
</table>
|
38
|
+
<table cellpadding="0" cellspacing="0" summary="" class="progress">
|
39
|
+
<tr>
|
40
|
+
<td width="110"><img src="tripPlanning/images/tp_progress1.gif" width="110" height="30"></td>
|
41
|
+
<td width="20"> </td>
|
42
|
+
<td width="620" class="right"><img src="tripPlanning/images/tp_25percent.gif" width="596" height="25"></td>
|
43
|
+
</tr>
|
44
|
+
</table>
|
45
|
+
<table cellpadding="0" cellspacing="0" summary="" class="progressDesc">
|
46
|
+
<tr>
|
47
|
+
<td width="110"><img src="tripPlanning/images/tp_progressDesc1.gif" width="83" height="59"></td>
|
48
|
+
<td width="30"> </td>
|
49
|
+
<td width="60" class="stepText"> </td>
|
50
|
+
<td width="90" class="stepText"> </td>
|
51
|
+
<td width="60" class="stepText"> </td>
|
52
|
+
<td width="90" class="stepText"> </td>
|
53
|
+
<td width="60" class="stepText"> </td>
|
54
|
+
<td width="90" class="stepText"> </td>
|
55
|
+
<td width="60" class="stepText"> </td>
|
56
|
+
<td width="90" class="stepText"> </td>
|
57
|
+
</tr>
|
58
|
+
</table>
|
59
|
+
<table cellpadding="0" cellspacing="0" summary="" class="stepName">
|
60
|
+
<tr>
|
61
|
+
<td width="85"><img src="tripPlanning/images/tp_stepName1.gif" width="83" height="23"></td>
|
62
|
+
<td width="665"><img src="tripPlanning/images/text_fromWhere.gif" width="259" height="21"></td>
|
63
|
+
</tr>
|
64
|
+
</table>
|
65
|
+
<table cellpadding="0" cellspacing="0" summary="" class="tabs">
|
66
|
+
<tr>
|
67
|
+
<td width="63" rowspan="2" background="tripPlanning/images/tp_sideShim.gif" class="top"><img src="tripPlanning/images/tp_side.gif" width="63" height="300"></td>
|
68
|
+
<td width="30" height="58" class="tp_boxTop1"> </td>
|
69
|
+
<td width="85" height="58" class="tp_boxTop2"><a href="linkFromAddress.oci"><img src="tripPlanning/images/tp_addressOff.gif" alt="Address" title="Address" width="85" height="38" border="0"></a></td>
|
70
|
+
<td width="85" height="58" class="tp_boxTop2"><a href="linkFromIntersection.oci"><img src="tripPlanning/images/tp_intersectionOff.gif" alt="Intersection" title="Intersection" width="85" height="38" border="0"></a></td>
|
71
|
+
<td width="85" height="58" class="tp_boxTop2"><a href="FromLandmarkSetup.oci"><img src="tripPlanning/images/tp_landmarkOff.gif" alt="Landmark" title="Landmark" width="85" height="38" border="0"></a></td>
|
72
|
+
<td width="95" height="58" class="tp_boxTop2"><img src="tripPlanning/images/tp_560On.gif" alt="560-1000" title="560-1000" width="95" height="38" border="0"></td>
|
73
|
+
<td width="85" height="58" class="tp_boxTop2"><a href="linkFromMap.oci"><img src="tripPlanning/images/tp_mapOff.gif" alt="Map" title="Map" width="85" height="38" border="0"></a></td>
|
74
|
+
<td width="85" height="58" class="tp_boxTop2"><a href="linkFromHistory.oci"><img src="tripPlanning/images/tp_historyOff.gif" alt="History" title="Map" width="85" height="38" border="0"></a></td>
|
75
|
+
<td width="97" height="58" class="tp_boxTop2"><img src="tripPlanning/images/tp_line.gif" width="97" height="38"></td>
|
76
|
+
<td width="40" height="58" class="tp_boxTop3"> </td>
|
77
|
+
</tr>
|
78
|
+
<tr>
|
79
|
+
<td width="30" class="tp_boxLeft"> </td>
|
80
|
+
<td width="617" height="270" class="tp_box" colspan="7">
|
81
|
+
<table cellpadding="0" cellspacing="0" width="100%" height="100%">
|
82
|
+
<tr>
|
83
|
+
<td width="240"> </td>
|
84
|
+
<td height="50" width="80" class="center"><img src="tripPlanning/images/tp_img560.gif" width="70" height="43"></td>
|
85
|
+
<td colspan="5" width="257"> </td>
|
86
|
+
</tr>
|
87
|
+
<tr>
|
88
|
+
<td class="formPadding3" colspan="7">
|
89
|
+
<div class="padTop"> </div>
|
90
|
+
<table cellpadding="0" cellspacing="0" summary="">
|
91
|
+
<tr>
|
92
|
+
<td class="right">
|
93
|
+
<div class="instruction">Is this the right bus stop?</div>
|
94
|
+
|
95
|
+
|
96
|
+
(1987)
|
97
|
+
|
98
|
+
|
99
|
+
SOMERSET O-W / BRONSON
|
100
|
+
<input type="hidden" name="from560Code" value="1987">
|
101
|
+
|
102
|
+
</td>
|
103
|
+
<td class="padRight" nowrap>
|
104
|
+
<input name="ok" id="ok" type="image" src="tripPlanning/images/ok.gif" width="59" height="32" alt="OK" title="OK">
|
105
|
+
<a href="linkFrom560.oci"><img src="tripPlanning/images/no.gif" width="59" height="32" alt="NO" title="NO" border="0"></a>
|
106
|
+
</td>
|
107
|
+
</tr>
|
108
|
+
</table>
|
109
|
+
</td>
|
110
|
+
</tr>
|
111
|
+
</table>
|
112
|
+
</td>
|
113
|
+
<td width="40" class="tp_boxRight"> </td>
|
114
|
+
</tr>
|
115
|
+
</table>
|
116
|
+
<table cellpadding="0" cellspacing="0" summary="" class="last">
|
117
|
+
<tr>
|
118
|
+
<td width="63"><img src="tripPlanning/images/tp_bottom1.gif" width="63" height="37"></td>
|
119
|
+
<td width="30" class="tp_boxBottom1"> </td>
|
120
|
+
<td width="617" class="tp_boxBottom2"> </td>
|
121
|
+
<td width="40" class="tp_boxBottom3"> </td>
|
122
|
+
</tr>
|
123
|
+
</table>
|
124
|
+
</form>
|
125
|
+
</body>
|
126
|
+
</html>
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
require "rubygems"
|
2
|
+
require "bundler/setup"
|
3
|
+
require "octranspo"
|
4
|
+
require "test/unit"
|
5
|
+
require "active_support/test_case"
|
6
|
+
|
7
|
+
class Date
|
8
|
+
# date.at('12:00') => time object representing the date at noon
|
9
|
+
def at (string)
|
10
|
+
matches = /^(\d\d)(:)*(\d\d)$/.match(string)
|
11
|
+
hh, mm = Integer(matches[1]), Integer(matches[3])
|
12
|
+
duration = hh.hours + mm.minutes
|
13
|
+
to_time.in_time_zone.change :hour => hh, :min => mm
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require "#{File.dirname(File.dirname(__FILE__))}/test_helper"
|
2
|
+
|
3
|
+
module OCTranspo
|
4
|
+
class HeadsignTest < ActiveSupport::TestCase
|
5
|
+
|
6
|
+
test "1 OTTAWA ROCKCLIFFE headsign" do
|
7
|
+
assert_equal "1 OTTAWA ROCKCLIFFE", OCTranspo::Headsign.find(1, "OTTAWA-ROCKCLIFFE", [{:code => "8789"}])
|
8
|
+
end
|
9
|
+
|
10
|
+
test "1X DOWNTOWN headsign" do
|
11
|
+
assert_equal "1 DOWNTOWN", OCTranspo::Headsign.find(1, "OTTAWA-ROCKCLIFFE", [{:code => "3009"}])
|
12
|
+
end
|
13
|
+
|
14
|
+
test "1 SOUTH KEYS headsign" do
|
15
|
+
assert_equal "1 SOUTH KEYS", OCTranspo::Headsign.find(1, "SOUTH KEYS", [{:code => "3037"}])
|
16
|
+
end
|
17
|
+
|
18
|
+
test "1X BILLINGS BRIDGE headsign" do
|
19
|
+
assert_equal "1X BILLINGS BRIDGE", OCTranspo::Headsign.find(1, "SOUTH KEYS", [{:code => "3034"}])
|
20
|
+
end
|
21
|
+
|
22
|
+
test "2 BAYSHORE headsign" do
|
23
|
+
assert_equal "2 BAYSHORE", OCTranspo::Headsign.find(2, "BAYSHORE", [{:code => "3050"}])
|
24
|
+
end
|
25
|
+
|
26
|
+
test "2 WESTBORO headsign" do
|
27
|
+
assert_equal "2 WESTBORO", OCTranspo::Headsign.find(2, "BAYSHORE", [{:code => "3012"}])
|
28
|
+
end
|
29
|
+
|
30
|
+
test "2 DOWNTOWN headsign" do
|
31
|
+
assert_equal "2 DOWNTOWN", OCTranspo::Headsign.find(2, "DOWNTOWN", [{:code => "3009"}])
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,139 @@
|
|
1
|
+
require "#{File.dirname(File.dirname(__FILE__))}/test_helper"
|
2
|
+
|
3
|
+
module OCTranspo
|
4
|
+
class LingoTest < ActiveSupport::TestCase
|
5
|
+
|
6
|
+
include Lingo
|
7
|
+
|
8
|
+
test "translate location lingo for addresses" do
|
9
|
+
assert_equal "360 Coventry Rd.", translate_location("COVENTRY / AD. 360")
|
10
|
+
end
|
11
|
+
|
12
|
+
test "translate location lingo for addresses with back slashes" do
|
13
|
+
assert_equal "1520 Caldwell Ave.", translate_location("CALDWELL \\ AD. 1520")
|
14
|
+
end
|
15
|
+
|
16
|
+
test "translate location lingo for intersections" do
|
17
|
+
assert_equal "Somerset St. at Bronson Ave.", translate_location("SOMERSET O-W / BRONSON")
|
18
|
+
assert_equal "Coventry Rd. at Jetform Park", translate_location("COVENTRY / PARC JETFORM PARK")
|
19
|
+
assert_equal "Ballard Ct. at Blair Rd.", translate_location("BALLARD / BLAIR")
|
20
|
+
assert_equal "Ballard Rd. at Blair Rd.", translate_location("NRC ROAD BALLARD / BLAIR")
|
21
|
+
assert_equal "Blair Rd. at Meadowbrook Rd.", translate_location("BLAIR / MEADOWBROOK")
|
22
|
+
assert_equal "Broadview Ave. at Notre Dame High School", translate_location("BROADVIEW / É.S. NOTRE DAME")
|
23
|
+
assert_equal "Bridgestone Dr. at Windways Crescent", translate_location("BRIDGESTONE / WINDWAYS")
|
24
|
+
assert_equal "Eagleson Rd. at Cadence Gate", translate_location("EAGLESON / CADENCE")
|
25
|
+
assert_equal "Shirley’s Brook Dr. at Marconi Ave.", translate_location("SHIRLEY'S BROOK / MARCONI")
|
26
|
+
assert_equal "Stittsville Main St. at Bandelier Way", translate_location("MAIN STITTSVILLE / BANDELIER")
|
27
|
+
assert_equal "Cyrville Rd. at Maxime St.", translate_location("CYRVILLE / MAXIME")
|
28
|
+
assert_equal "Orléans Blvd. at Boyer Rd.", translate_location("ORLÉANS / BOYER")
|
29
|
+
assert_equal "Lees Ave. at Main St.", translate_location("LEES / MAIN")
|
30
|
+
assert_equal "Strandherd Dr. at Jockvale Rd.", translate_location("STRANDHERD / JOCKVALE")
|
31
|
+
assert_equal "Jeanne d’Arc Blvd. at Terry Fox Elementary School", translate_location("JEANNE D'ARC / ÉCOLE TERRY FOX SCHOOL")
|
32
|
+
assert_equal "Promenade Ave. at Terrasses de la Chaudière", translate_location("PROMENADE / TERRASSES DE LA CHAUDIÈRE")
|
33
|
+
assert_equal "Scott St. at Bayview Rd.", translate_location("SCOTT / BAYVIEW")
|
34
|
+
end
|
35
|
+
|
36
|
+
test "translate location lingo for intersections with back slashes" do
|
37
|
+
assert_equal "Ages Dr. at Hawthorne Rd.", translate_location("AGES \\ HAWTHORNE")
|
38
|
+
end
|
39
|
+
|
40
|
+
test "translate location lingo for stations" do
|
41
|
+
assert_equal "Bayshore Station", translate_location("BAYSHORE")
|
42
|
+
assert_equal "Baseline Station", translate_location("BASELINE")
|
43
|
+
assert_equal "Blair Station", translate_location("BLAIR")
|
44
|
+
end
|
45
|
+
|
46
|
+
test "translate location lingo for busway platforms at stations" do
|
47
|
+
assert_equal "Bayshore Station, Platform 1A", translate_location("BAYSHORE 1A")
|
48
|
+
assert_equal "Baseline Station, Platform 1E", translate_location("BASELINE 1E")
|
49
|
+
assert_equal "Lebreton Station, Platform 1A", translate_location("LEBRETON 1A")
|
50
|
+
assert_equal "St. Laurent Station, Platform 2A", translate_location("ST LAURENT 2A")
|
51
|
+
assert_equal "Tunney’s Pasture Station, Platform 1A", translate_location("TUNNEY'S PASTURE 1A")
|
52
|
+
end
|
53
|
+
|
54
|
+
test "translate location lingo for busway platforms at landmarks" do
|
55
|
+
assert_equal "Rideau Centre, Platform 3A", translate_location("RIDEAU 3A")
|
56
|
+
assert_equal "Rideau Centre, Platform 4A", translate_location("RIDEAU 4A")
|
57
|
+
end
|
58
|
+
|
59
|
+
test "translate location lingo for train platforms" do
|
60
|
+
assert_equal "Bayview Station, O-Train Platform", translate_platform("O-TRAIN BAYVIEW")
|
61
|
+
assert_equal "Carleton Station, Southbound Platform", translate_platform("O-TRAIN CARLETON S.")
|
62
|
+
assert_equal "Carleton Station, Northbound Platform", translate_platform("O-TRAIN CARLETON N.")
|
63
|
+
end
|
64
|
+
|
65
|
+
test "translate landmarks" do
|
66
|
+
assert_equal "Colonnade Rd. at OC Transpo Garage", translate_location("MERIVALE GARAGE / GARAGE MERIVALE")
|
67
|
+
assert_equal "Colonnade Rd. at OC Transpo Garage", translate_location("COLONNADE / GARAGE O.C. TRANSPO GARAGE")
|
68
|
+
end
|
69
|
+
|
70
|
+
test "translate locations in hull" do
|
71
|
+
assert_equal "Rue Laurier at Rue Élisabeth-Bruyère", translate_location("LAURIER / ÉLISABETH-BRUYÈRE")
|
72
|
+
assert_equal "Boulevard Des Allumettières at Rue Laurier", translate_location("ALLUMETTIÈRES / LAURIER")
|
73
|
+
end
|
74
|
+
|
75
|
+
test "translate broken lingo" do
|
76
|
+
assert_equal "Tunney’s Pasture Station, Platform 4A", translate_location("TUNNEY'S PASTURE4A")
|
77
|
+
assert_equal "Heron Station, Platform 4A", translate_location("HERON 4A ")
|
78
|
+
assert_equal "Heron Rd. at Edge Hill Pl.", translate_location("HERON/EDGEHILL")
|
79
|
+
assert_equal "Dauphin Rd. at Hillcrest High School", translate_location("NODE4518")
|
80
|
+
assert_equal "Campus Ave. at Library Rd.", translate_location("CAMPUS / COMMONS")
|
81
|
+
end
|
82
|
+
|
83
|
+
test "recognize lingo that represents an address" do
|
84
|
+
assert address?("COVENTRY / AD. 360")
|
85
|
+
assert ! address?("SOMERSET O-W / BRONSON")
|
86
|
+
assert ! address?("BAYSHORE")
|
87
|
+
assert ! address?("BAYSHORE 1A")
|
88
|
+
end
|
89
|
+
|
90
|
+
test "recognize lingo that represents an intersection" do
|
91
|
+
assert intersection?("SOMERSET O-W / BRONSON")
|
92
|
+
assert ! intersection?("COVENTRY / AD. 360")
|
93
|
+
assert ! intersection?("BAYSHORE")
|
94
|
+
assert ! intersection?("BAYSHORE 1A")
|
95
|
+
end
|
96
|
+
|
97
|
+
test "recognize lingo that represents a platform" do
|
98
|
+
assert platform?("BAYSHORE 1A")
|
99
|
+
assert ! platform?("SOMERSET O-W / BRONSON")
|
100
|
+
assert ! platform?("COVENTRY / AD. 360")
|
101
|
+
assert ! platform?("BAYSHORE")
|
102
|
+
end
|
103
|
+
|
104
|
+
test "extract address parts from lingo" do
|
105
|
+
extracted = extract_address_from("COVENTRY / AD. 360")
|
106
|
+
assert_equal "360", extracted[:number]
|
107
|
+
assert_equal "COVENTRY", extracted[:street]
|
108
|
+
end
|
109
|
+
|
110
|
+
test "extract intersection parts from lingo" do
|
111
|
+
extracted = extract_intersection_from("SOMERSET O-W / BRONSON")
|
112
|
+
assert_equal "SOMERSET O-W", extracted.first
|
113
|
+
assert_equal "BRONSON", extracted.last
|
114
|
+
end
|
115
|
+
|
116
|
+
test "extract platform parts from lingo" do
|
117
|
+
extracted = extract_platform_from("BAYSHORE 1A")
|
118
|
+
assert_equal "BAYSHORE", extracted[:station]
|
119
|
+
assert_equal "1A", extracted[:platform]
|
120
|
+
end
|
121
|
+
|
122
|
+
test "extract platform parts from lingo with two word station name" do
|
123
|
+
extracted = extract_platform_from("BILLINGS BRIDGE 1A")
|
124
|
+
assert_equal "BILLINGS BRIDGE", extracted[:station]
|
125
|
+
assert_equal "1A", extracted[:platform]
|
126
|
+
end
|
127
|
+
|
128
|
+
test "extract platform parts from lingo with extra space" do
|
129
|
+
extracted = extract_platform_from("LEBRETON 1A")
|
130
|
+
assert_equal "LEBRETON", extracted[:station]
|
131
|
+
assert_equal "1A", extracted[:platform]
|
132
|
+
end
|
133
|
+
|
134
|
+
test "translate headsign lingo" do
|
135
|
+
assert_equal "AIRPORT", translate_headsign_message("AIRPORT / AéROPORT")
|
136
|
+
assert_equal "LOCAL NORTH", translate_headsign_message("LOCAL NORTH/NORD")
|
137
|
+
end
|
138
|
+
end
|
139
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require "#{File.dirname(File.dirname(__FILE__))}/test_helper"
|
2
|
+
|
3
|
+
module OCTranspo
|
4
|
+
class MobileResourceMethodsTest < ActiveSupport::TestCase
|
5
|
+
|
6
|
+
include MobileResourceMethods
|
7
|
+
|
8
|
+
def date
|
9
|
+
@date ||= Date.parse("20090303")
|
10
|
+
end
|
11
|
+
|
12
|
+
test "extracting time from text on a specific date" do
|
13
|
+
assert_equal date.at('04:00'), extract_time_from("4:00 AM", :date => date)
|
14
|
+
assert_equal date.at('06:30'), extract_time_from("6:30 AM", :date => date)
|
15
|
+
assert_equal date.at('12:00'), extract_time_from("12:00 PM", :date => date)
|
16
|
+
assert_equal date.at('15:30'), extract_time_from("3:30 PM", :date => date)
|
17
|
+
assert_equal date.at('23:57'), extract_time_from("11:57 PM", :date => date)
|
18
|
+
assert_equal date.next.at('02:30'), extract_time_from("2:30 AM", :date => date)
|
19
|
+
assert_equal date.next.at('03:59'), extract_time_from("3:59 AM", :date => date)
|
20
|
+
end
|
21
|
+
|
22
|
+
test "extracting flags from text" do
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,124 @@
|
|
1
|
+
require "#{File.dirname(File.dirname(__FILE__))}/test_helper"
|
2
|
+
|
3
|
+
module OCTranspo
|
4
|
+
class MobileRouteDataTest < ActiveSupport::TestCase
|
5
|
+
|
6
|
+
def date
|
7
|
+
@date ||= Date.parse("20100323")
|
8
|
+
end
|
9
|
+
|
10
|
+
def setup
|
11
|
+
OCTranspo::MobileRouteData.use_fixtures!
|
12
|
+
end
|
13
|
+
|
14
|
+
def teardown
|
15
|
+
OCTranspo::MobileRouteData.reset!
|
16
|
+
end
|
17
|
+
|
18
|
+
test "find two sets of data for route 1" do
|
19
|
+
route_data = OCTranspo::MobileRouteData.find(1, :date => date)
|
20
|
+
assert_equal 2, route_data.size
|
21
|
+
|
22
|
+
assert_equal "1", route_data[0][:route]
|
23
|
+
assert_equal "OTTAWA-ROCKCLIFFE", route_data[0][:direction]
|
24
|
+
assert_equal "2", route_data[0][:direction_index]
|
25
|
+
assert_equal 67, route_data[0][:stops].size
|
26
|
+
|
27
|
+
assert_equal "1", route_data[1][:route]
|
28
|
+
assert_equal "SOUTH KEYS", route_data[1][:direction]
|
29
|
+
assert_equal "1", route_data[1][:direction_index]
|
30
|
+
assert_equal 66, route_data[1][:stops].size
|
31
|
+
end
|
32
|
+
|
33
|
+
test "find two sets of data for route 2" do
|
34
|
+
route_data = OCTranspo::MobileRouteData.find(2, :date => date)
|
35
|
+
assert_equal 2, route_data.size
|
36
|
+
|
37
|
+
assert_equal "2", route_data[0][:route]
|
38
|
+
assert_equal "BAYSHORE", route_data[0][:direction]
|
39
|
+
assert_equal "2", route_data[0][:direction_index]
|
40
|
+
assert_equal 65, route_data[0][:stops].size
|
41
|
+
|
42
|
+
assert_equal "2", route_data[1][:route]
|
43
|
+
assert_equal "DOWNTOWN / CENTRE-VILLE", route_data[1][:direction]
|
44
|
+
assert_equal "1", route_data[1][:direction_index]
|
45
|
+
assert_equal 61, route_data[1][:stops].size
|
46
|
+
end
|
47
|
+
|
48
|
+
test "find one sets of data for route 123" do
|
49
|
+
route_data = OCTranspo::MobileRouteData.find(123, :date => date)
|
50
|
+
assert_equal 1, route_data.size
|
51
|
+
|
52
|
+
assert_equal "123", route_data[0][:route]
|
53
|
+
assert_equal "GLOUCESTER N. & BLAIR", route_data[0][:direction]
|
54
|
+
assert_equal "1", route_data[0][:direction_index]
|
55
|
+
assert_equal 41, route_data[0][:stops].size
|
56
|
+
end
|
57
|
+
|
58
|
+
test "find first set of data for bus route 2" do
|
59
|
+
route_direction = OCTranspo::MobileRouteData.find_one_direction(:route => 2, :index => 0, :date => date)
|
60
|
+
|
61
|
+
assert route_direction, "route direction is nil"
|
62
|
+
|
63
|
+
assert_equal "2", route_direction[:route]
|
64
|
+
assert_equal "BAYSHORE", route_direction[:direction]
|
65
|
+
assert_equal "2", route_direction[:direction_index]
|
66
|
+
|
67
|
+
assert route_direction[:stops].all? {|stop| stop.is_a?(Hash) }, "Some stops aren’t hashes!"
|
68
|
+
|
69
|
+
first_stop = route_direction[:stops].first
|
70
|
+
assert_equal "RIDEAU 4A", first_stop[:name]
|
71
|
+
assert_equal "3009", first_stop[:number]
|
72
|
+
assert_equal "RIDEAU", first_stop[:station]
|
73
|
+
assert_equal "4A", first_stop[:platform]
|
74
|
+
|
75
|
+
second_stop = route_direction[:stops].second
|
76
|
+
assert_equal "WELLINGTON / METCALFE", second_stop[:name]
|
77
|
+
assert_equal "7691", second_stop[:number]
|
78
|
+
assert second_stop[:station].nil?
|
79
|
+
assert second_stop[:platform].nil?
|
80
|
+
|
81
|
+
last_stop = route_direction[:stops].last
|
82
|
+
assert_equal "BAYSHORE 3A", last_stop[:name]
|
83
|
+
assert_equal "3050", last_stop[:number]
|
84
|
+
assert_equal "BAYSHORE", last_stop[:station]
|
85
|
+
assert_equal "3A", last_stop[:platform]
|
86
|
+
end
|
87
|
+
|
88
|
+
test "find opposite set of data for bus route 2" do
|
89
|
+
route_direction = OCTranspo::MobileRouteData.find_one_direction(:route => 2, :index => 1, :date => date)
|
90
|
+
|
91
|
+
assert_equal "2", route_direction[:route]
|
92
|
+
assert_equal "DOWNTOWN / CENTRE-VILLE", route_direction[:direction]
|
93
|
+
assert_equal "1", route_direction[:direction_index]
|
94
|
+
|
95
|
+
assert route_direction[:stops].all? {|stop| stop.is_a?(Hash) }, "Some stops aren’t hashes!"
|
96
|
+
|
97
|
+
first_stop = route_direction[:stops].first
|
98
|
+
assert_equal "3050", first_stop[:number]
|
99
|
+
assert_equal "BAYSHORE 4B", first_stop[:name]
|
100
|
+
assert_equal "BAYSHORE", first_stop[:station]
|
101
|
+
assert_equal "4B", first_stop[:platform]
|
102
|
+
|
103
|
+
last_stop = route_direction[:stops].last
|
104
|
+
assert_equal "3009", last_stop[:number]
|
105
|
+
assert_equal "RIDEAU 3A", last_stop[:name]
|
106
|
+
assert_equal "RIDEAU", last_stop[:station]
|
107
|
+
assert_equal "3A", last_stop[:platform]
|
108
|
+
end
|
109
|
+
|
110
|
+
test "url_for" do
|
111
|
+
expected = "http://www.octranspo.com/mobileweb/jnot/post.routelist.schedules.oci?rangeIndex=5&day=20100323&route=2&routeIndex=0"
|
112
|
+
criteria = {:route => 2, :index => 0, :date => date}
|
113
|
+
assert_equal expected, OCTranspo::MobileRouteData.url_for(criteria)
|
114
|
+
criteria = {:route => 2, :date => date}
|
115
|
+
assert_equal expected, OCTranspo::MobileRouteData.url_for(criteria)
|
116
|
+
end
|
117
|
+
|
118
|
+
test "url_for with index option" do
|
119
|
+
expected = "http://www.octranspo.com/mobileweb/jnot/post.routelist.schedules.oci?rangeIndex=5&day=20100323&route=2&routeIndex=1"
|
120
|
+
criteria = {:route => 2, :index => 1, :date => date}
|
121
|
+
assert_equal expected, OCTranspo::MobileRouteData.url_for(criteria)
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|