@Test public void testNodeOrderingRegression() { // 1 -> 2 -> 0 GraphHopperStorage g = createStorage(em); g.edge(1, 2, 1, false); g.edge(2, 0, 1, false); PrepareRoutingSubnetworks instance = new PrepareRoutingSubnetworks(g, Collections.singletonList(carFlagEncoder)). setMinOneWayNetworkSize(2); int removedEdges = instance.removeDeadEndUnvisitedNetworks(new PrepEdgeFilter(carFlagEncoder)); assertEquals(2, removedEdges); }
GraphHopperStorage createDeadEndUnvisitedNetworkStorage(EncodingManager em) { GraphHopperStorage g = createStorage(em); // 0 <-> 1 <-> 2 <-> 3 <-> 4 <- 5 <-> 6 g.edge(0, 1, 1, true); g.edge(1, 2, 1, true); g.edge(2, 3, 1, true); g.edge(3, 4, 1, true); g.edge(5, 4, 1, false); g.edge(5, 6, 1, true); // 7 -> 8 <-> 9 <-> 10 g.edge(7, 8, 1, false); g.edge(8, 9, 1, true); g.edge(9, 10, 1, true); return g; }
@Test public void test481() { // 0->1->3->4->5->6 // 2 7<--/ GraphHopperStorage g = createStorage(em); g.edge(0, 1, 1, false); g.edge(1, 2, 1, false); g.edge(2, 0, 1, false); g.edge(1, 3, 1, false); g.edge(3, 4, 1, false); g.edge(4, 5, 1, false); g.edge(5, 6, 1, false); g.edge(6, 7, 1, false); g.edge(7, 4, 1, false); PrepareRoutingSubnetworks instance = new PrepareRoutingSubnetworks(g, Collections.singletonList(carFlagEncoder)). setMinOneWayNetworkSize(2). setMinNetworkSize(4); instance.doWork(); // only one remaining network List<IntArrayList> components = instance.findSubnetworks(new PrepEdgeFilter(carFlagEncoder)); assertEquals(1, components.size()); }
GraphHopperStorage createSubnetworkTestStorage2(EncodingManager em) { GraphHopperStorage g = createStorage(em); // large network g.edge(0, 1, 1, true); g.edge(1, 3, 1, true); g.edge(0, 2, 1, true); g.edge(2, 3, 1, true); g.edge(3, 7, 1, true); g.edge(7, 8, 1, true); // connecting both but do not allow CAR! g.edge(3, 4).setDistance(1); // small network g.edge(4, 5, 1, true); g.edge(5, 6, 1, true); g.edge(4, 6, 1, true); return g; }
GraphHopperStorage createTarjanTestStorage() { GraphHopperStorage g = createStorage(em); g.edge(1, 2, 1, false); g.edge(2, 3, 1, false); g.edge(3, 1, 1, false); g.edge(4, 2, 1, false); g.edge(4, 3, 1, false); g.edge(4, 5, 1, true); g.edge(5, 6, 1, false); g.edge(6, 3, 1, false); g.edge(6, 7, 1, true); g.edge(8, 5, 1, false); g.edge(8, 7, 1, false); g.edge(8, 8, 1, false); return g; }
GraphHopperStorage createSubnetworkTestStorage() { GraphHopperStorage g = createStorage(em); // big network g.edge(1, 2, 1, true); g.edge(1, 4, 1, false); g.edge(1, 8, 1, true); g.edge(2, 4, 1, true); g.edge(8, 4, 1, false); g.edge(8, 11, 1, true); g.edge(12, 11, 1, true); g.edge(9, 12, 1, false); g.edge(9, 15, 1, true); // large network g.edge(0, 13, 1, true); g.edge(0, 3, 1, true); g.edge(0, 7, 1, true); g.edge(3, 7, 1, true); g.edge(3, 5, 1, true); g.edge(13, 5, 1, true); // small network g.edge(6, 14, 1, true); g.edge(10, 14, 1, true); return g; }