|
18 | 18 | package com.graphhopper;
|
19 | 19 |
|
20 | 20 | import com.graphhopper.json.geo.JsonFeature;
|
| 21 | +import com.graphhopper.routing.util.CarFlagEncoder; |
21 | 22 | import com.graphhopper.routing.util.EncodingManager;
|
| 23 | +import com.graphhopper.routing.util.parsers.OSMRoadEnvironmentParser; |
22 | 24 | import com.graphhopper.storage.Graph;
|
23 | 25 | import com.graphhopper.storage.GraphBuilder;
|
24 | 26 | import com.graphhopper.storage.GraphHopperStorage;
|
25 | 27 | import com.graphhopper.storage.NodeAccess;
|
26 | 28 | import com.graphhopper.storage.change.ChangeGraphHelper;
|
27 | 29 | import com.graphhopper.storage.index.LocationIndex;
|
| 30 | +import com.graphhopper.util.Helper; |
28 | 31 | import com.graphhopper.util.PointList;
|
29 | 32 | import com.graphhopper.util.shapes.BBox;
|
30 | 33 | import org.junit.Test;
|
31 | 34 |
|
| 35 | +import java.io.File; |
32 | 36 | import java.util.*;
|
33 | 37 | import java.util.concurrent.CountDownLatch;
|
34 | 38 | import java.util.concurrent.ExecutorService;
|
@@ -107,6 +111,57 @@ public void testDisconnected179() {
|
107 | 111 | instance.close();
|
108 | 112 | }
|
109 | 113 |
|
| 114 | + @Test |
| 115 | + public void testDoNotInterpolateTwice1645() { |
| 116 | + String loc = "./target/issue1645"; |
| 117 | + Helper.removeDir(new File(loc)); |
| 118 | + EncodingManager em = new EncodingManager.Builder(4).add(new OSMRoadEnvironmentParser()).add(new CarFlagEncoder()).build(); |
| 119 | + GraphHopperStorage graph = new GraphBuilder(em).setLocation(loc).set3D(true).setStore(true).create(); |
| 120 | + |
| 121 | + // we need elevation |
| 122 | + NodeAccess na = graph.getNodeAccess(); |
| 123 | + na.setNode(0, 42, 10, 10); |
| 124 | + na.setNode(1, 42.1, 10.1, 10); |
| 125 | + na.setNode(2, 42.1, 10.2, 1); |
| 126 | + na.setNode(3, 42, 10.4, 1); |
| 127 | + |
| 128 | + graph.edge(0, 1, 10, true); |
| 129 | + graph.edge(2, 3, 10, true); |
| 130 | + |
| 131 | + final AtomicInteger counter = new AtomicInteger(0); |
| 132 | + GraphHopper instance = new GraphHopper().setEncodingManager(em).setElevation(true).setGraphHopperLocation(loc).setCHEnabled(false) |
| 133 | + .loadGraph(graph); |
| 134 | + instance.flush(); |
| 135 | + instance.close(); |
| 136 | + assertEquals(0, counter.get()); |
| 137 | + |
| 138 | + instance = new GraphHopper() { |
| 139 | + @Override |
| 140 | + void interpolateBridgesAndOrTunnels() { |
| 141 | + counter.incrementAndGet(); |
| 142 | + super.interpolateBridgesAndOrTunnels(); |
| 143 | + } |
| 144 | + }.setEncodingManager(em).setElevation(true).setCHEnabled(false); |
| 145 | + instance.load(loc); |
| 146 | + instance.flush(); |
| 147 | + instance.close(); |
| 148 | + assertEquals(1, counter.get()); |
| 149 | + |
| 150 | + instance = new GraphHopper() { |
| 151 | + @Override |
| 152 | + void interpolateBridgesAndOrTunnels() { |
| 153 | + counter.incrementAndGet(); |
| 154 | + super.interpolateBridgesAndOrTunnels(); |
| 155 | + } |
| 156 | + }.setEncodingManager(em).setElevation(true).setCHEnabled(false); |
| 157 | + instance.load(loc); |
| 158 | + instance.flush(); |
| 159 | + instance.close(); |
| 160 | + assertEquals(1, counter.get()); |
| 161 | + |
| 162 | + Helper.removeDir(new File(loc)); |
| 163 | + } |
| 164 | + |
110 | 165 | @Test
|
111 | 166 | public void testNoLoad() {
|
112 | 167 | GraphHopper instance = new GraphHopper().
|
|
0 commit comments