Fix tests

This commit is contained in:
Victor Shcherb 2016-08-04 00:19:37 +02:00
parent 682869a2ee
commit c5e3a5080a
2 changed files with 61 additions and 64 deletions

View file

@ -7,9 +7,11 @@ import java.io.RandomAccessFile;
import java.io.Reader;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeSet;
@ -33,20 +35,11 @@ import com.google.gson.GsonBuilder;
@RunWith(Parameterized.class)
public class RouteTestingTestIgnore {
private TestEntry te;
private LatLon startPoint;
private LatLon endPoint;
private Map<Long, String> expectedResults;
private Map<String, String> params;
public RouteTestingTestIgnore(String testName, LatLon startPoint, LatLon endPoint, Map<Long, String> expectedResults,
Map<String, String> params) {
this.startPoint = startPoint;
this.endPoint = endPoint;
this.expectedResults = expectedResults;
this.params = params;
public RouteTestingTestIgnore(String name, TestEntry te) {
this.te = te;
}
@BeforeClass
@ -55,62 +48,65 @@ public class RouteTestingTestIgnore {
}
@Parameterized.Parameters(name = "{index}: {0}")
public static Collection<Object[]> data() throws IOException {
public static Iterable<Object[]> data() throws IOException {
String fileName = "/test_routing.json";
Reader reader = new InputStreamReader(RouteTestingTestIgnore.class.getResourceAsStream(fileName));
Gson gson = new GsonBuilder().setPrettyPrinting().create();
TestEntry[] testEntries = gson.fromJson(reader, TestEntry[].class);
ArrayList<Object[]> twoDArray = new ArrayList<Object[]>();
for (int i = 0; i < testEntries.length; ++i) {
if (!testEntries[i].isIgnore()) {
Object[] arr = new Object[] { testEntries[i].getTestName(), testEntries[i].getStartPoint(),
testEntries[i].getEndPoint(), testEntries[i].getExpectedResults(),
testEntries[i].getParams()};
twoDArray.add(arr);
}
ArrayList<Object[]> arrayList = new ArrayList<>();
for(TestEntry te : testEntries) {
arrayList.add(new Object[] {te.getTestName(), te});
}
reader.close();
return twoDArray;
return arrayList;
}
@Test
public void testRouting() throws Exception {
String fl = "../../resources/test-resources/Routing_test.obf";
RandomAccessFile raf = new RandomAccessFile(fl, "r");
RoutePlannerFrontEnd fe = new RoutePlannerFrontEnd(false);
public void testRouting() throws Exception {
String fl = "../../resources/test-resources/Routing_test.obf";
RandomAccessFile raf = new RandomAccessFile(fl, "r");
RoutePlannerFrontEnd fe = new RoutePlannerFrontEnd(false);
BinaryMapIndexReader[] binaryMapIndexReaders = { new BinaryMapIndexReader(raf, new File(fl)) };
RoutingConfiguration.Builder builder = RoutingConfiguration.getDefault();
RoutingConfiguration config = builder.build(params.containsKey("vehicle") ?
params.get("vehicle") : "car", RoutingConfiguration.DEFAULT_MEMORY_LIMIT * 3, params);
RoutingContext ctx = fe.buildRoutingContext(config, null, binaryMapIndexReaders,
RoutePlannerFrontEnd.RouteCalculationMode.NORMAL);
ctx.leftSideNavigation = false;
List<RouteSegmentResult> routeSegments = fe.searchRoute(ctx, startPoint, endPoint, null);
Set<Long> reachedSegments = new TreeSet<Long>();
Assert.assertNotNull(routeSegments);
int prevSegment = -1;
for (int i = 0; i <= routeSegments.size(); i++) {
if (i == routeSegments.size() || routeSegments.get(i).getTurnType() != null) {
if (prevSegment >= 0) {
String name = routeSegments.get(prevSegment).getDescription();
long segmentId = routeSegments.get(prevSegment).getObject().getId() >> (BinaryInspector.SHIFT_ID );
System.out.println("segmentId: " + segmentId + " description: " + name);
}
prevSegment = i;
}
if (i < routeSegments.size()) {
reachedSegments.add(routeSegments.get(i).getObject().getId() >> (BinaryInspector.SHIFT_ID ));
}
}
Map<String, String> params = te.getParams();
RoutingConfiguration config = builder.build(params.containsKey("vehicle") ? params.get("vehicle") : "car",
RoutingConfiguration.DEFAULT_MEMORY_LIMIT * 3, params);
RoutingContext ctx = fe.buildRoutingContext(config, null, binaryMapIndexReaders,
RoutePlannerFrontEnd.RouteCalculationMode.NORMAL);
ctx.leftSideNavigation = false;
List<RouteSegmentResult> routeSegments = fe.searchRoute(ctx, te.getStartPoint(), te.getEndPoint(), null);
Set<Long> reachedSegments = new TreeSet<Long>();
Assert.assertNotNull(routeSegments);
int prevSegment = -1;
for (int i = 0; i <= routeSegments.size(); i++) {
if (i == routeSegments.size() || routeSegments.get(i).getTurnType() != null) {
if (prevSegment >= 0) {
String name = routeSegments.get(prevSegment).getDescription();
long segmentId = routeSegments.get(prevSegment).getObject().getId() >> (BinaryInspector.SHIFT_ID);
System.out.println("segmentId: " + segmentId + " description: " + name);
}
prevSegment = i;
}
if (i < routeSegments.size()) {
reachedSegments.add(routeSegments.get(i).getObject().getId() >> (BinaryInspector.SHIFT_ID));
}
}
Map<Long, String> expectedResults = te.getExpectedResults();
Iterator<Entry<Long, String>> it = expectedResults.entrySet().iterator();
while (it.hasNext()) {
Entry<Long, String> es = it.next();
if (es.getValue().equals("false")) {
Assert.assertTrue("Expected segment " + (es.getKey()) + " was wrongly reached in route segments "
+ reachedSegments.toString(), !reachedSegments.contains(es.getKey()));
} else {
Assert.assertTrue("Expected segment " + (es.getKey()) + " weren't reached in route segments "
+ reachedSegments.toString(), reachedSegments.contains(es.getKey()));
}
}
Set<Long> expectedSegments = expectedResults.keySet();
for (Long expSegId : expectedSegments){
Assert.assertTrue("Expected segment " + (expSegId ) +
" weren't reached in route segments " + reachedSegments.toString(), reachedSegments.contains(expSegId));
}
}
}

View file

@ -4,9 +4,10 @@
"description": "При planRoadDirection='-1' маршрут неверный, при 0 - верный",
"params": {
"vehicle": "car",
"shortWay": "true",
"short_way": "true",
"planRoadDirection": "0"
},
"ignore":true,
"startPoint": {
"latitude": 45.90810929390909,
"longitude": 35.25023227930072
@ -25,7 +26,7 @@
"description": "Подтверждается только неверный маршрут. От дистанции не зависит, но зависит от planRoadDirection. При -1 маршрут верный, при 0 - нет",
"params": {
"vehicle": "car",
"shortWay": "true",
"short_way": "true",
"planRoadDirection": "0"
},
"startPoint": {
@ -45,7 +46,7 @@
"description": "Не воспроизводится",
"params": {
"vehicle": "car",
"shortWay": "true",
"short_way": "true",
"planRoadDirection": "-1"
},
"startPoint": {
@ -65,7 +66,7 @@
"description": "Не воспроизводится",
"params": {
"vehicle": "car",
"shortWay": "true",
"short_way": "true",
"planRoadDirection": "-1"
},
"startPoint": {
@ -86,10 +87,10 @@
},
{
"testName": "10.Longer route preferred? https://github.com/osmandapp/Osmand/issues/1941",
"description": "shortWay строит не самый короткий путь. Транзит через MEX 261 короче.",
"description": "short_way строит не самый короткий путь. Транзит через MEX 261 короче.",
"params": {
"vehicle": "car",
"shortWay": "true",
"short_way": "true",
"planRoadDirection": "-1"
},
"startPoint": {
@ -108,7 +109,7 @@
"testName": "12.Bizarre navigation at Sundance dr & Sentinel dr in Fremont, CA, USA https://github.com/osmandapp/Osmand/issues/1743",
"params": {
"vehicle": "car",
"shortWay": "true",
"short_way": "true",
"planRoadDirection": "-1"
},
"startPoint": {
@ -128,7 +129,7 @@
"testName": "12.1.Bizarre navigation at Sundance dr & Sentinel dr in Fremont, CA, USA (transit2 point) https://github.com/osmandapp/Osmand/issues/1743",
"params": {
"vehicle": "car",
"shortWay": "true",
"short_way": "true",
"planRoadDirection": "-1"
},
"startPoint": {
@ -151,7 +152,7 @@
"testName": "12.2.Bizarre navigation at Sundance dr & Sentinel dr in Fremont, CA, USA (reverse) https://github.com/osmandapp/Osmand/issues/1743",
"params": {
"vehicle": "car",
"shortWay": "true",
"short_way": "true",
"planRoadDirection": "-1"
},
"startPoint": {