use of org.opentripplanner.routing.core.State in project OpenTripPlanner by opentripplanner.
the class TestBanning method testBannedRoutes.
public void testBannedRoutes() {
Graph graph = ConstantsForTests.getInstance().getPortlandGraph();
String feedId = graph.getFeedIds().iterator().next();
RoutingRequest options = new RoutingRequest();
Vertex start = graph.getVertex(feedId + ":8371");
Vertex end = graph.getVertex(feedId + ":8374");
options.dateTime = TestUtils.dateInSeconds("America/Los_Angeles", 2009, 11, 1, 12, 34, 25);
// must set routing context _after_ options is fully configured (time)
options.setRoutingContext(graph, start, end);
ShortestPathTree spt = null;
/*
* The MAX Red, Blue, and Green lines all run along the same trackage between the stops 8374 and 8371. Together, they form the white line. No,
* wait, that's light. They make a pretty good test case for banned routes, since if one is banned, you can always take another.
*/
String[][] maxLines = { { "MAX Red Line", null }, { "MAX Blue Line", null }, { "MAX Green Line", null }, { null, "90" }, { null, "100" }, { null, "200" } };
for (int i = 0; i < maxLines.length; ++i) {
String lineName = maxLines[i][0];
String lineId = maxLines[i][1];
String routeSpecStr = feedId + "_" + (lineName != null ? lineName : "") + (lineId != null ? "_" + lineId : "");
options.setBannedRoutes(routeSpecStr);
spt = aStar.getShortestPathTree(options);
GraphPath path = spt.getPath(end, true);
for (State s : path.states) {
if (s.getBackEdge() instanceof PatternHop) {
PatternHop e = (PatternHop) s.getBackEdge();
Route route = e.getPattern().route;
assertFalse(options.bannedRoutes.matches(route));
boolean foundMaxLine = false;
for (int j = 0; j < maxLines.length; ++j) {
if (j != i) {
if (e.getName().equals(maxLines[j][0])) {
foundMaxLine = true;
}
}
}
assertTrue(foundMaxLine);
}
}
}
}
use of org.opentripplanner.routing.core.State in project OpenTripPlanner by opentripplanner.
the class TestParkAndRide method testBike.
public void testBike() throws Exception {
AStar aStar = new AStar();
// Impossible to get from B to D in BIKE+WALK (no bike P+R).
RoutingRequest options = new RoutingRequest("BICYCLE_PARK,TRANSIT");
options.freezeTraverseMode();
options.setRoutingContext(graph, B, D);
ShortestPathTree tree = aStar.getShortestPathTree(options);
GraphPath path = tree.getPath(D, false);
assertNull(path);
// So we add a bike P+R at C.
BikePark bpc = new BikePark();
bpc.id = "bpc";
bpc.name = "Bike Park C";
bpc.x = 0.002;
bpc.y = 45.00001;
bpc.spacesAvailable = 1;
BikeParkVertex BPRC = new BikeParkVertex(graph, bpc);
new BikeParkEdge(BPRC);
new StreetBikeParkLink(BPRC, C);
new StreetBikeParkLink(C, BPRC);
// Still impossible from B to D by bike only (CD is WALK only).
options = new RoutingRequest("BICYCLE");
options.setRoutingContext(graph, B, D);
tree = aStar.getShortestPathTree(options);
path = tree.getPath(D, false);
assertNotNull(path);
State s = tree.getState(D);
assertFalse(s.isBikeParked());
// TODO backWalkingBike flag is broken
// assertTrue(s.isBackWalkingBike());
assertTrue(s.getBackMode() == TraverseMode.WALK);
// But we can go from B to D using bike P+R.
options = new RoutingRequest("BICYCLE_PARK,WALK,TRANSIT");
options.setRoutingContext(graph, B, D);
tree = aStar.getShortestPathTree(options);
path = tree.getPath(D, false);
assertNotNull(path);
s = tree.getState(D);
assertTrue(s.isBikeParked());
assertFalse(s.isBackWalkingBike());
}
use of org.opentripplanner.routing.core.State in project OpenTripPlanner by opentripplanner.
the class TurnRestrictionTest method testForwardAsPedestrian.
@Test
public void testForwardAsPedestrian() {
RoutingRequest options = new RoutingRequest(TraverseMode.WALK);
options.walkSpeed = 1.0;
options.setRoutingContext(_graph, topRight, bottomLeft);
ShortestPathTree tree = new AStar().getShortestPathTree(options);
GraphPath path = tree.getPath(bottomLeft, false);
assertNotNull(path);
// Since there are no turn restrictions applied to the default modes (walking + transit)
// the shortest path is 1st to Main, Main to 2nd, 2nd to Broad and Broad until the
// corner of Broad and 3rd.
List<State> states = path.states;
assertEquals(5, states.size());
assertEquals("maple_1st", states.get(0).getVertex().getLabel());
assertEquals("main_1st", states.get(1).getVertex().getLabel());
assertEquals("main_2nd", states.get(2).getVertex().getLabel());
assertEquals("broad_2nd", states.get(3).getVertex().getLabel());
assertEquals("broad_3rd", states.get(4).getVertex().getLabel());
}
use of org.opentripplanner.routing.core.State in project OpenTripPlanner by opentripplanner.
the class TurnRestrictionTest method testForwardDefault.
@Test
public void testForwardDefault() {
RoutingRequest options = new RoutingRequest();
options.carSpeed = 1.0;
options.walkSpeed = 1.0;
options.setRoutingContext(_graph, topRight, bottomLeft);
ShortestPathTree tree = new AStar().getShortestPathTree(options);
GraphPath path = tree.getPath(bottomLeft, false);
assertNotNull(path);
// Since there are no turn restrictions applied to the default modes (walking + transit)
// the shortest path is 1st to Main, Main to 2nd, 2nd to Broad and Broad until the
// corner of Broad and 3rd.
List<State> states = path.states;
assertEquals(5, states.size());
assertEquals("maple_1st", states.get(0).getVertex().getLabel());
assertEquals("main_1st", states.get(1).getVertex().getLabel());
assertEquals("main_2nd", states.get(2).getVertex().getLabel());
assertEquals("broad_2nd", states.get(3).getVertex().getLabel());
assertEquals("broad_3rd", states.get(4).getVertex().getLabel());
}
use of org.opentripplanner.routing.core.State in project OpenTripPlanner by opentripplanner.
the class TestGraphPath method testGraphPathOptimize.
public void testGraphPathOptimize() throws Exception {
String feedId = graph.getFeedIds().iterator().next();
Vertex stop_a = graph.getVertex(feedId + ":A");
Vertex stop_c = graph.getVertex(feedId + ":C");
Vertex stop_e = graph.getVertex(feedId + ":E");
ShortestPathTree spt;
GraphPath path;
RoutingRequest options = new RoutingRequest();
options.dateTime = TestUtils.dateInSeconds("America/New_York", 2009, 8, 7, 0, 0, 0);
options.setRoutingContext(graph, stop_a.getLabel(), stop_e.getLabel());
spt = aStar.getShortestPathTree(options);
path = spt.getPath(stop_e, false);
/* do not optimize yet, since we are testing optimization */
assertNotNull(path);
// Check that the resulting path visits the stops in the right order.
List<Vertex> stopvs = Lists.newArrayList();
for (State state : path.states) {
if (state.getVertex() instanceof TransitStop) {
stopvs.add(state.getVertex());
}
}
assertTrue(stopvs.get(0) == stop_a);
assertTrue(stopvs.get(1) == stop_c);
assertTrue(stopvs.get(2) == stop_e);
long bestStart = TestUtils.dateInSeconds("America/New_York", 2009, 8, 7, 0, 20, 0);
assertNotSame(bestStart, path.getStartTime());
path = spt.getPath(stop_e, true);
/* optimize */
assertEquals(bestStart, path.getStartTime());
}
Aggregations