Fix some tests with uturns
This commit is contained in:
parent
9f4ca0a9b0
commit
ac9d72327b
5 changed files with 74 additions and 38 deletions
|
@ -378,7 +378,7 @@ public class RouteResultPreparation {
|
|||
String s = "[ ";
|
||||
for (int h = 0; h < lns.length; h++) {
|
||||
if (h > 0) {
|
||||
s += ", ";
|
||||
s += " | ";
|
||||
}
|
||||
if (lns[h] % 2 == 1) {
|
||||
s += "+";
|
||||
|
@ -390,11 +390,11 @@ public class RouteResultPreparation {
|
|||
s += TurnType.valueOf(pt, false).toXmlString();
|
||||
int st = TurnType.getSecondaryTurn(lns[h]);
|
||||
if (st != 0) {
|
||||
s += ";" + TurnType.valueOf(st, false).toXmlString();
|
||||
s += "," + TurnType.valueOf(st, false).toXmlString();
|
||||
}
|
||||
int tt = TurnType.getTertiaryTurn(lns[h]);
|
||||
if (tt != 0) {
|
||||
s += ";" + TurnType.valueOf(tt, false).toXmlString();
|
||||
s += "," + TurnType.valueOf(tt, false).toXmlString();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -417,11 +417,11 @@ public class RouteResultPreparation {
|
|||
}
|
||||
|
||||
protected TurnType justifyUTurn(boolean leftside, List<RouteSegmentResult> result, int i, TurnType t) {
|
||||
boolean tl = TurnType.TL == t.getValue();
|
||||
boolean tr = TurnType.TR == t.getValue();
|
||||
boolean tl = TurnType.isLeftTurnNoUTurn(t.getValue());
|
||||
boolean tr = TurnType.isRightTurnNoUTurn(t.getValue());
|
||||
if(tl || tr) {
|
||||
TurnType tnext = result.get(i + 1).getTurnType();
|
||||
if (tnext != null && result.get(i).getDistance() < 35) { //
|
||||
if (tnext != null && result.get(i).getDistance() < 50) { //
|
||||
boolean ut = true;
|
||||
if (i > 0) {
|
||||
double uTurn = MapUtils.degreesDiff(result.get(i - 1).getBearingEnd(), result
|
||||
|
@ -435,12 +435,19 @@ public class RouteResultPreparation {
|
|||
|| highway.endsWith("path")) {
|
||||
ut = false;
|
||||
}
|
||||
if (result.get(i).getObject().getOneway() == 0 || result.get(i + 1).getObject().getOneway() == 0) {
|
||||
ut = false;
|
||||
}
|
||||
if (ut) {
|
||||
tnext.setSkipToSpeak(true);
|
||||
if (tl && TurnType.TL == tnext.getValue()) {
|
||||
return TurnType.valueOf(TurnType.TU, false);
|
||||
} else if (tr && TurnType.TR == tnext.getValue()) {
|
||||
return TurnType.valueOf(TurnType.TU, true);
|
||||
if (tl && TurnType.isLeftTurnNoUTurn(t.getValue())) {
|
||||
TurnType tt = TurnType.valueOf(TurnType.TU, false);
|
||||
tt.setLanes(t.getLanes());
|
||||
return tt;
|
||||
} else if (tr && TurnType.isRightTurnNoUTurn(t.getValue())) {
|
||||
TurnType tt = TurnType.valueOf(TurnType.TU, true);
|
||||
tt.setLanes(t.getLanes());
|
||||
return tt;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -271,9 +271,17 @@ public class TurnType {
|
|||
return type == TL || type == TSHL || type == TSLL || type == TU || type == KL;
|
||||
}
|
||||
|
||||
public static boolean isLeftTurnNoUTurn(int type) {
|
||||
return type == TL || type == TSHL || type == TSLL || type == KL;
|
||||
}
|
||||
|
||||
public static boolean isRightTurn(int type) {
|
||||
return type == TR || type == TSHR || type == TSLR || type == TRU || type == KR;
|
||||
}
|
||||
|
||||
public static boolean isRightTurnNoUTurn(int type) {
|
||||
return type == TR || type == TSHR || type == TSLR || type == KR;
|
||||
}
|
||||
|
||||
public static boolean isSlightTurn(int type) {
|
||||
return type == TSLL || type == TSLR || type == C || type == KL || type == KR;
|
||||
|
|
|
@ -225,7 +225,6 @@ public class Algorithms {
|
|||
colorString.charAt(1) + colorString.charAt(1) +
|
||||
colorString.charAt(2) + colorString.charAt(2) +
|
||||
colorString.charAt(3) + colorString.charAt(3);
|
||||
|
||||
}
|
||||
long color = Long.parseLong(colorString.substring(1), 16);
|
||||
if (colorString.length() == 7) {
|
||||
|
|
|
@ -6,6 +6,7 @@ import com.google.gson.GsonBuilder;
|
|||
import net.osmand.PlatformUtil;
|
||||
import net.osmand.binary.BinaryMapIndexReader;
|
||||
import net.osmand.data.LatLon;
|
||||
import net.osmand.util.Algorithms;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.junit.Assert;
|
||||
|
@ -95,12 +96,18 @@ public class RouteResultPreparationTest {
|
|||
if (i == routeSegments.size() || routeSegments.get(i).getTurnType() != null) {
|
||||
if (prevSegment >= 0) {
|
||||
String lanes = getLanesString(routeSegments.get(prevSegment));
|
||||
String turn = routeSegments.get(prevSegment).getTurnType().toXmlString();
|
||||
String turnLanes = turn +":" +lanes;
|
||||
String name = routeSegments.get(prevSegment).getDescription();
|
||||
|
||||
long segmentId = routeSegments.get(prevSegment).getObject().getId();
|
||||
String expectedResult = expectedResults.get(segmentId);
|
||||
if (expectedResult != null) {
|
||||
Assert.assertEquals("Segment " + segmentId, expectedResult, lanes);
|
||||
if(!Algorithms.objectEquals(expectedResult, turnLanes) &&
|
||||
!Algorithms.objectEquals(expectedResult, lanes) &&
|
||||
!Algorithms.objectEquals(expectedResult, turn)) {
|
||||
Assert.assertEquals("Segment " + segmentId, expectedResult, turnLanes);
|
||||
}
|
||||
}
|
||||
|
||||
System.out.println("segmentId: " + segmentId + " description: " + name);
|
||||
|
@ -128,7 +135,7 @@ public class RouteResultPreparationTest {
|
|||
String s = "";
|
||||
for (int h = 0; h < lns.length; h++) {
|
||||
if (h > 0) {
|
||||
s += ", ";
|
||||
s += "|";
|
||||
}
|
||||
if (lns[h] % 2 == 1) {
|
||||
s += "+";
|
||||
|
@ -140,11 +147,11 @@ public class RouteResultPreparationTest {
|
|||
s += TurnType.valueOf(pt, false).toXmlString();
|
||||
int st = TurnType.getSecondaryTurn(lns[h]);
|
||||
if (st != 0) {
|
||||
s += ";" + TurnType.valueOf(st, false).toXmlString();
|
||||
s += "," + TurnType.valueOf(st, false).toXmlString();
|
||||
}
|
||||
int tt = TurnType.getTertiaryTurn(lns[h]);
|
||||
if (tt != 0) {
|
||||
s += ";" + TurnType.valueOf(tt, false).toXmlString();
|
||||
s += "," + TurnType.valueOf(tt, false).toXmlString();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
"longitude": 35.440113
|
||||
},
|
||||
"expectedResults": {
|
||||
"26545": "TL, C, C, C, +TR"
|
||||
"26545": "TL|C|C|C|+TR"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -24,9 +24,9 @@
|
|||
"longitude": 35.44070949481966
|
||||
},
|
||||
"expectedResults": {
|
||||
"26557": "+TL, C, C, C, TR",
|
||||
"26517": "+TL, C, C, C",
|
||||
"26545": "TL, +C, +C"
|
||||
"26557": "+TL|C|C|C|TR",
|
||||
"26517": "+TL|C|C|C",
|
||||
"26545": "TL|+C|+C"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -40,7 +40,7 @@
|
|||
"longitude": 35.438198276629464
|
||||
},
|
||||
"expectedResults": {
|
||||
"26529": "TL, C, C, +TR"
|
||||
"26529": "TL|C|C|+TR"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -54,7 +54,7 @@
|
|||
"longitude": 35.46842032670975
|
||||
},
|
||||
"expectedResults": {
|
||||
"26789": "+TU, +TL, +C;TL, C, C;TR"
|
||||
"26789": "+TU|+TL|+C,TL|C|C,TR"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -68,9 +68,9 @@
|
|||
"longitude": 35.49527125060558
|
||||
},
|
||||
"expectedResults": {
|
||||
"26717": "+TSLL;C, C, C",
|
||||
"26717": "+TSLL,C|C|C",
|
||||
"26821": "+C",
|
||||
"29088": "C, C, C, C, +C"
|
||||
"29088": "C|C|C|C|+C"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -84,7 +84,7 @@
|
|||
"longitude": 35.51303619146347
|
||||
},
|
||||
"expectedResults": {
|
||||
"27091": "+TL, +TL, +TL, C, TR, TR"
|
||||
"27091": "+TL|+TL|+TL|C|TR|TR"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -98,7 +98,7 @@
|
|||
"longitude": 35.537424847483635
|
||||
},
|
||||
"expectedResults": {
|
||||
"27177": "+C;TL, C"
|
||||
"27177": "+C,TL|C"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -112,7 +112,7 @@
|
|||
"longitude": 35.553747430443764
|
||||
},
|
||||
"expectedResults": {
|
||||
"27231": "C, C, +TR, +TR"
|
||||
"27231": "C|C|+TR|+TR"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -126,9 +126,9 @@
|
|||
"longitude": 35.553684398531914
|
||||
},
|
||||
"expectedResults": {
|
||||
"27305": "+TL, +TL, C, C;TR",
|
||||
"27275": "+TL, +TL, C, C",
|
||||
"27231": "TL, +C, +C"
|
||||
"27305": "+TL|+TL|C|C,TR",
|
||||
"27275": "+TL|+TL|C|C",
|
||||
"27231": "TL|+C|+C"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -142,7 +142,7 @@
|
|||
"longitude": 35.56931899487972
|
||||
},
|
||||
"expectedResults": {
|
||||
"27411": "TL, C, +TR;C"
|
||||
"27411": "TL|C|+TR,C"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -156,7 +156,7 @@
|
|||
"longitude": 35.58106707036495
|
||||
},
|
||||
"expectedResults": {
|
||||
"27435": "TL, +TR;TL"
|
||||
"27435": "TL|+TR,TL"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -170,8 +170,8 @@
|
|||
"longitude": 35.586447581
|
||||
},
|
||||
"expectedResults": {
|
||||
"27441": "+TL, TL;TR",
|
||||
"27461": "TL, +C, +C"
|
||||
"27441": "+TL|TL,TR",
|
||||
"27461": "TL|+C|+C"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -185,8 +185,8 @@
|
|||
"longitude": 35.597948893904686
|
||||
},
|
||||
"expectedResults": {
|
||||
"27581": "+TL, TR",
|
||||
"27591": "+C, +C;TR"
|
||||
"27581": "+TL|TR",
|
||||
"27591": "+C|+C,TR"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -200,7 +200,7 @@
|
|||
"longitude": 35.61031924188137
|
||||
},
|
||||
"expectedResults": {
|
||||
"27611": "+C;TL, +C, TR"
|
||||
"27611": "+C,TL|+C|TR"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -214,7 +214,7 @@
|
|||
"longitude": 35.624509468025735
|
||||
},
|
||||
"expectedResults": {
|
||||
"14418": "TL, +TL, C, C, TR"
|
||||
"14418": "TL|+TL|C|C|TR"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -229,7 +229,22 @@
|
|||
},
|
||||
"expectedResults": {
|
||||
"43906": null,
|
||||
"43905": "+TL;C;TR"
|
||||
"43905": "+TL,C,TR"
|
||||
}
|
||||
},
|
||||
{
|
||||
"testName": "15.Каширское шоссе u-turn",
|
||||
"startPoint": {
|
||||
"latitude": 45.66869817293356,
|
||||
"longitude": 35.44163727760315
|
||||
},
|
||||
"endPoint": {
|
||||
"latitude": 45.66882562819617,
|
||||
"longitude": 35.441980600357056
|
||||
},
|
||||
"expectedResults": {
|
||||
"-14967": null,
|
||||
"-14919": "TU:+C|C|C|C|C"
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue