@Test public void testSort() { Graph g = initUnsorted(createGraph()); Graph newG = GHUtility.sortDFS(g, createGraph()); assertEquals(g.getNodes(), newG.getNodes()); assertEquals(0, newG.getLatitude(0), 1e-4); // 0 assertEquals(2.5, newG.getLatitude(1), 1e-4); // 1 assertEquals(4.5, newG.getLatitude(2), 1e-4); // 2 assertEquals(4.6, newG.getLatitude(3), 1e-4); // 8 assertEquals(3.0, newG.getLatitude(4), 1e-4); // 3 assertEquals(5.0, newG.getLatitude(5), 1e-4); // 7 assertEquals(4.2, newG.getLatitude(6), 1e-4); // 5 }
@Test public void testGrid() { Graph g = createSampleGraph(new EncodingManager("car")); int locs = g.getNodes(); idx = createIndex(g, -1); // if we would use less array entries then some points gets the same key so avoid that for this // test // e.g. for 16 we get "expected 6 but was 9" i.e 6 was overwritten by node j9 which is a bit // closer to the grid center // go through every point of the graph if all points are reachable NodeAccess na = g.getNodeAccess(); for (int i = 0; i < locs; i++) { double lat = na.getLatitude(i); double lon = na.getLongitude(i); assertEquals("nodeId:" + i + " " + (float) lat + "," + (float) lon, i, findID(idx, lat, lon)); } // hit random lat,lon and compare result to full index Random rand = new Random(12); LocationIndex fullIndex; if (hasEdgeSupport()) fullIndex = new Location2IDFullWithEdgesIndex(g); else fullIndex = new Location2IDFullIndex(g); DistanceCalc dist = new DistanceCalcEarth(); for (int i = 0; i < 100; i++) { double lat = rand.nextDouble() * 5; double lon = rand.nextDouble() * 5; int fullId = findID(fullIndex, lat, lon); double fullLat = na.getLatitude(fullId); double fullLon = na.getLongitude(fullId); float fullDist = (float) dist.calcDist(lat, lon, fullLat, fullLon); int newId = findID(idx, lat, lon); double newLat = na.getLatitude(newId); double newLon = na.getLongitude(newId); float newDist = (float) dist.calcDist(lat, lon, newLat, newLon); if (testGridIgnore(i)) { continue; } assertTrue( i + " orig:" + (float) lat + "," + (float) lon + " full:" + fullLat + "," + fullLon + " fullDist:" + fullDist + " found:" + newLat + "," + newLon + " foundDist:" + newDist, Math.abs(fullDist - newDist) < 50000); } fullIndex.close(); Helper.close((Closeable) g); }