/** * 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); }
private Shortcut expectedShortcut(int baseNode, int adjNode, EdgeIteratorState edge1, EdgeIteratorState edge2, boolean fwd, boolean bwd) { //todo: weight calculation might have to be adjusted for different encoders/weightings/reverse speed double weight = weighting.calcWeight(edge1, false, EdgeIterator.NO_EDGE) + weighting.calcWeight(edge2, false, EdgeIterator.NO_EDGE); double distance = edge1.getDistance() + edge2.getDistance(); return new Shortcut(baseNode, adjNode, weight, distance, fwd, bwd, edge1.getEdge(), edge2.getEdge()); }