@Test public void testAddShortcutSkippedEdgesWriteRead() { graph = createGHStorage(); final EdgeIteratorState edge1 = graph.edge(1, 3, 10, true); final EdgeIteratorState edge2 = graph.edge(3, 4, 10, true); graph.freeze(); CHGraph lg = graph.getGraph(CHGraph.class); lg.shortcut(1, 4); AllCHEdgesIterator iter = lg.getAllEdges(); iter.next(); iter.next(); iter.next(); assertTrue(iter.isShortcut()); iter.setSkippedEdges(edge1.getEdge(), edge2.getEdge()); assertEquals(edge1.getEdge(), iter.getSkippedEdge1()); assertEquals(edge2.getEdge(), iter.getSkippedEdge2()); }
@Test public void testAddShortcutSkippedEdgesWriteRead_writeWithCHEdgeIterator() { graph = createGHStorage(); final EdgeIteratorState edge1 = graph.edge(1, 3, 10, true); final EdgeIteratorState edge2 = graph.edge(3, 4, 10, true); graph.freeze(); CHGraph lg = graph.getGraph(CHGraph.class); CHEdgeIteratorState shortcut = lg.shortcut(1, 4); shortcut.setSkippedEdges(edge1.getEdge(), edge2.getEdge()); AllCHEdgesIterator iter = lg.getAllEdges(); iter.next(); iter.next(); iter.next(); assertTrue(iter.isShortcut()); assertEquals(edge1.getEdge(), iter.getSkippedEdge1()); assertEquals(edge2.getEdge(), iter.getSkippedEdge2()); }
/** * Queries the ch graph and checks if the graph's shortcuts match the given expected shortcuts. */ private void checkShortcuts(Shortcut... expectedShortcuts) { Set<Shortcut> expected = setOf(expectedShortcuts); if (expected.size() != expectedShortcuts.length) { fail("was given duplicate shortcuts"); } AllCHEdgesIterator iter = lg.getAllEdges(); Set<Shortcut> given = new HashSet<>(); while (iter.next()) { if (iter.isShortcut()) { given.add(new Shortcut( iter.getBaseNode(), iter.getAdjNode(), iter.getWeight(), iter.getDistance(), iter.isForward(encoder), iter.isBackward(encoder), iter.getSkippedEdge1(), iter.getSkippedEdge2())); } } assertEquals(expected, given); }