@Test
public void testFillVirtualEdges()
{

    initGraph(g);
    g.getNodeAccess().setNode(3, 0, 1);
    g.edge(1, 3);
    final int baseNode = 1;
    EdgeIterator iter = g.createEdgeExplorer().setBaseNode(baseNode);
    iter.next();
    QueryResult res1 = createLocationResult(2, 1.7, iter, 1, PILLAR);
    QueryGraph queryGraph = new QueryGraph(g)
    {
        @Override
        void fillVirtualEdges( TIntObjectMap<VirtualEdgeIterator> node2Edge, int towerNode, EdgeExplorer mainExpl )
        {
            super.fillVirtualEdges(node2Edge, towerNode, mainExpl);
            // ignore nodes should include baseNode == 1
            if (towerNode == 3)
                assertEquals("[3->4]", node2Edge.get(towerNode).toString());
            else if (towerNode == 1)
                assertEquals("[1->4, 1 1-0]", node2Edge.get(towerNode).toString());
            else
                throw new IllegalStateException("not allowed " + towerNode);
        }
    };
    queryGraph.lookup(Arrays.asList(res1));
    EdgeIteratorState state = GHUtility.getEdge(queryGraph, 0, 1);
    assertEquals(4, state.fetchWayGeometry(3).size());
    // fetch virtual edge and check way geometry
    state = GHUtility.getEdge(queryGraph, 4, 3);
    assertEquals(2, state.fetchWayGeometry(3).size());
}