@Test public void testKeepLargestNetworks() { GraphHopperStorage g = createSubnetworkTestStorage(); PrepEdgeFilter filter = new PrepEdgeFilter(carFlagEncoder); PrepareRoutingSubnetworks instance = new PrepareRoutingSubnetworks(g, Collections.singletonList(carFlagEncoder)); List<IntArrayList> components = instance.findSubnetworks(filter); assertEquals(3, components.size()); int removedEdges = instance.keepLargeNetworks(filter, components); assertEquals(8, removedEdges); instance.markNodesRemovedIfUnreachable(); g.optimize(); assertEquals(8, g.getNodes()); assertEquals(Arrays.<String>asList(), GHUtility.getProblems(g)); components = instance.findSubnetworks(filter); assertEquals(1, components.size()); }
@Test public void testSimpleDelete() { graph = createGHStorage(); NodeAccess na = graph.getNodeAccess(); na.setNode(0, 12, 23); na.setNode(1, 38.33f, 135.3f); na.setNode(2, 3, 3); na.setNode(3, 78, 89); graph.edge(3, 0, 21, true); graph.edge(5, 0, 22, true); graph.edge(5, 3, 23, true); graph.markNodeRemoved(0); graph.markNodeRemoved(3); assertEquals(6, graph.getNodes()); assertEquals(Arrays.<String>asList(), GHUtility.getProblems(graph)); // now actually perform deletion graph.optimize(); assertEquals(4, graph.getNodes()); assertEquals(Arrays.<String>asList(), GHUtility.getProblems(graph)); // shouldn't change anything graph.optimize(); assertEquals(4, graph.getNodes()); assertEquals(Arrays.<String>asList(), GHUtility.getProblems(graph)); }
@Test public void testRemoveSubnetworkIfOnlyOneVehicle() { GraphHopperStorage g = createSubnetworkTestStorage2(em); PrepareRoutingSubnetworks instance = new PrepareRoutingSubnetworks(g, em.fetchEdgeEncoders()); instance.setMinNetworkSize(4); instance.doWork(); g.optimize(); assertEquals(6, g.getNodes()); assertEquals(Arrays.<String>asList(), GHUtility.getProblems(g)); EdgeExplorer explorer = g.createEdgeExplorer(); assertEquals(GHUtility.asSet(2, 1, 5), GHUtility.getNeighbors(explorer.setBaseNode(3))); // do not remove because small network is big enough g = createSubnetworkTestStorage2(em); instance = new PrepareRoutingSubnetworks(g, em.fetchEdgeEncoders()); instance.setMinNetworkSize(3); instance.doWork(); g.optimize(); assertEquals(9, g.getNodes()); }
assertEquals(Arrays.<String>asList(), GHUtility.getProblems(graph)); assertEquals(Arrays.<String>asList(), GHUtility.getProblems(graph));
assertEquals(Arrays.<String>asList(), GHUtility.getProblems(graph)); assertEquals(Arrays.<String>asList(), GHUtility.getProblems(graph));
@Test public void testSimpleDelete3() { graph = createGHStorage(); NodeAccess na = graph.getNodeAccess(); na.setNode(7, 7, 1); na.setNode(8, 8, 1); na.setNode(9, 9, 1); na.setNode(11, 11, 1); // mini subnetwork which gets completely removed: graph.edge(5, 10, 510, true); graph.markNodeRemoved(3); graph.markNodeRemoved(4); graph.markNodeRemoved(5); graph.markNodeRemoved(10); graph.edge(9, 11, 911, true); graph.edge(7, 9, 78, true); graph.edge(8, 9, 89, true); // perform deletion graph.optimize(); assertEquals(Arrays.<String>asList(), GHUtility.getProblems(graph)); assertEquals(3, GHUtility.count(carAllExplorer.setBaseNode(getIdOf(graph, 9)))); assertEquals(1, GHUtility.count(carAllExplorer.setBaseNode(getIdOf(graph, 7)))); assertEquals(1, GHUtility.count(carAllExplorer.setBaseNode(getIdOf(graph, 8)))); assertEquals(1, GHUtility.count(carAllExplorer.setBaseNode(getIdOf(graph, 11)))); }