@Test public void testSimpleDelete() { graph = createGraph(); 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 testDeleteNodeForUnidir() { graph = createGraph(); NodeAccess na = graph.getNodeAccess(); na.setNode(10, 10, 1); na.setNode(6, 6, 1); na.setNode(20, 20, 1); na.setNode(21, 21, 1); graph.edge(10, 20, 10, false); graph.edge(21, 6, 10, false); graph.markNodeRemoved(0); graph.markNodeRemoved(7); assertEquals(22, graph.getNodes()); graph.optimize(); assertEquals(20, graph.getNodes()); assertEquals(1, GHUtility.count(carInExplorer.setBaseNode(getIdOf(graph, 20)))); assertEquals(0, GHUtility.count(carOutExplorer.setBaseNode(getIdOf(graph, 20)))); assertEquals(1, GHUtility.count(carOutExplorer.setBaseNode(getIdOf(graph, 10)))); assertEquals(0, GHUtility.count(carInExplorer.setBaseNode(getIdOf(graph, 10)))); assertEquals(1, GHUtility.count(carInExplorer.setBaseNode(getIdOf(graph, 6)))); assertEquals(0, GHUtility.count(carOutExplorer.setBaseNode(getIdOf(graph, 6)))); assertEquals(1, GHUtility.count(carOutExplorer.setBaseNode(getIdOf(graph, 21)))); assertEquals(0, GHUtility.count(carInExplorer.setBaseNode(getIdOf(graph, 21)))); }
public void testDeleteNodes(int fillToSize) { graph = createGraph(); 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); na.setNode(4, 2, 1); na.setNode(5, 2.5f, 1); int deleted = 2; for (int i = 6; i < fillToSize; i++) { na.setNode(i, i * 1.5, i * 1.6); if (i % 3 == 0) { graph.markNodeRemoved(i); deleted++; } else { // connect to // ... a deleted node graph.edge(i, 0, 10 * i, true); // ... a non-deleted and non-moved node graph.edge(i, 2, 10 * i, true); // ... a moved node graph.edge(i, fillToSize - 1, 10 * i, true); } } graph.edge(0, 1, 10, true); graph.edge(0, 3, 20, false); graph.edge(3, 5, 20, true); graph.edge(1, 5, 20, false); graph.markNodeRemoved(0); graph.markNodeRemoved(2); // no deletion happend assertEquals(fillToSize, graph.getNodes()); assertEquals(Arrays.<String>asList(), GHUtility.getProblems(graph)); // now actually perform deletion graph.optimize(); assertEquals(Arrays.<String>asList(), GHUtility.getProblems(graph)); assertEquals(fillToSize - deleted, graph.getNodes()); int id1 = getIdOf(graph, 38.33f); assertEquals(135.3f, na.getLongitude(id1), 1e-4); assertTrue(containsLatitude(graph, carAllExplorer.setBaseNode(id1), 2.5)); assertFalse(containsLatitude(graph, carAllExplorer.setBaseNode(id1), 12)); int id3 = getIdOf(graph, 78); assertEquals(89, na.getLongitude(id3), 1e-4); assertTrue(containsLatitude(graph, carAllExplorer.setBaseNode(id3), 2.5)); assertFalse(containsLatitude(graph, carAllExplorer.setBaseNode(id3), 12)); }
@Test public void testSimpleDelete2() { graph = createGraph(); NodeAccess na = graph.getNodeAccess(); assertEquals(-1, getIdOf(graph, 12)); na.setNode(9, 9, 1); assertEquals(-1, getIdOf(graph, 12)); na.setNode(11, 11, 1); na.setNode(12, 12, 1); // mini subnetwork which gets completely removed: graph.edge(5, 10, 510, true); graph.markNodeRemoved(5); graph.markNodeRemoved(10); PointList pl = new PointList(); pl.add(1, 2, Double.NaN); pl.add(1, 3, Double.NaN); graph.edge(9, 11, 911, true).setWayGeometry(pl); graph.edge(9, 12, 912, true).setWayGeometry(pl); assertEquals(13, graph.getNodes()); assertEquals(Arrays.<String>asList(), GHUtility.getProblems(graph)); // perform deletion graph.optimize(); assertEquals(11, graph.getNodes()); assertEquals(Arrays.<String>asList(), GHUtility.getProblems(graph)); int id11 = getIdOf(graph, 11); // is now 10 int id12 = getIdOf(graph, 12); // is now 5 int id9 = getIdOf(graph, 9); // is now 9 assertEquals( GHUtility.asSet(id12, id11), GHUtility.getNeighbors(carAllExplorer.setBaseNode(id9))); assertEquals(GHUtility.asSet(id9), GHUtility.getNeighbors(carAllExplorer.setBaseNode(id11))); assertEquals(GHUtility.asSet(id9), GHUtility.getNeighbors(carAllExplorer.setBaseNode(id12))); EdgeIterator iter = carAllExplorer.setBaseNode(id9); assertTrue(iter.next()); assertEquals(id12, iter.getAdjNode()); assertEquals(2, iter.fetchWayGeometry(0).getLongitude(0), 1e-7); assertTrue(iter.next()); assertEquals(id11, iter.getAdjNode()); assertEquals(2, iter.fetchWayGeometry(0).getLongitude(0), 1e-7); }
@Test public void testGetLocations() { graph = createGraph(); NodeAccess na = graph.getNodeAccess(); na.setNode(0, 12, 23); na.setNode(1, 22, 23); assertEquals(2, graph.getNodes()); graph.edge(0, 1, 10, true); assertEquals(2, graph.getNodes()); graph.edge(0, 2, 10, true); assertEquals(3, graph.getNodes()); Helper.close((Closeable) graph); graph = createGraph(); assertEquals(0, graph.getNodes()); }
@Test public void testClone() { graph = createGraph(); graph.edge(1, 2, 10, true); NodeAccess na = graph.getNodeAccess(); na.setNode(0, 12, 23); na.setNode(1, 8, 13); na.setNode(2, 2, 10); na.setNode(3, 5, 9); graph.edge(1, 3, 10, true); Graph clone = graph.copyTo(createGraph(locationParent + "/clone", false)); assertEquals(graph.getNodes(), clone.getNodes()); assertEquals( count(carOutExplorer.setBaseNode(1)), count(clone.createEdgeExplorer(carOutFilter).setBaseNode(1))); clone.edge(1, 4, 10, true); assertEquals(3, count(clone.createEdgeExplorer(carOutFilter).setBaseNode(1))); assertEquals(graph.getBounds(), clone.getBounds()); Helper.close((Closeable) clone); }
private int getCostTableAdress(int index) { if (index >= graph.getNodes() || index < 0) return NO_COST_ENTRY; return nodeAccess.getAdditionalNodeField(index); }