forked from upstream-mirrors/OpenTracks
KML description: max/min elevation will not show if have invalid values (unknow).
This commit is contained in:
@@ -88,6 +88,40 @@ public class DescriptionGeneratorTest {
|
|||||||
Assert.assertEquals(expected, descriptionGenerator.generateTrackDescription(track, true));
|
Assert.assertEquals(expected, descriptionGenerator.generateTrackDescription(track, true));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGenerateTrackDescriptionWithoutMaxMinElevation() {
|
||||||
|
Track track = new Track();
|
||||||
|
TrackStatistics stats = new TrackStatistics();
|
||||||
|
stats.setTotalDistance(20000);
|
||||||
|
stats.setTotalTime(600000);
|
||||||
|
stats.setMovingTime(300000);
|
||||||
|
stats.setMaxSpeed(100);
|
||||||
|
stats.setMaxElevation(Double.POSITIVE_INFINITY);
|
||||||
|
stats.setMinElevation(Double.NEGATIVE_INFINITY);
|
||||||
|
stats.setTotalElevationGain(6000);
|
||||||
|
stats.setStartTime_ms(START_TIME);
|
||||||
|
track.setTrackStatistics(stats);
|
||||||
|
track.setCategory("hiking");
|
||||||
|
String expected = //"Created by"
|
||||||
|
"<a href='https://github.com/OpenTracksApp/OpenTracks'>OpenTracks</a><p>"
|
||||||
|
+ "Name: -<br>"
|
||||||
|
+ "Activity type: hiking<br>"
|
||||||
|
+ "Description: -<br>"
|
||||||
|
+ "Total distance: 20.00 km (12.4 mi)<br>"
|
||||||
|
+ "Total time: 10:00<br>"
|
||||||
|
+ "Moving time: 05:00<br>"
|
||||||
|
+ "Average speed: 120.00 km/h (74.6 mi/h)<br>"
|
||||||
|
+ "Average moving speed: 240.00 km/h (149.1 mi/h)<br>"
|
||||||
|
+ "Max speed: 360.00 km/h (223.7 mi/h)<br>"
|
||||||
|
+ "Average pace: 0:30 min/km (0:48 min/mi)<br>"
|
||||||
|
+ "Average moving pace: 0:15 min/km (0:24 min/mi)<br>"
|
||||||
|
+ "Fastest pace: 0:10 min/km (0:16 min/mi)<br>"
|
||||||
|
+ "Elevation gain: 6000 m (19685 ft)<br>"
|
||||||
|
+ "Recorded: " + StringUtils.formatDateTime(context, START_TIME) + "<br>";
|
||||||
|
|
||||||
|
Assert.assertEquals(expected, descriptionGenerator.generateTrackDescription(track, true));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests {@link DescriptionGenerator#writeDistance(double, StringBuilder, int, String)}.
|
* Tests {@link DescriptionGenerator#writeDistance(double, StringBuilder, int, String)}.
|
||||||
|
|||||||
@@ -126,10 +126,14 @@ public class DescriptionGenerator {
|
|||||||
writePace(stats.getMaxSpeed(), builder, R.string.description_fastest_pace_in_minute, lineBreak);
|
writePace(stats.getMaxSpeed(), builder, R.string.description_fastest_pace_in_minute, lineBreak);
|
||||||
|
|
||||||
// Max elevation
|
// Max elevation
|
||||||
writeElevation(stats.getMaxElevation(), builder, R.string.description_max_elevation, lineBreak);
|
if (stats.hasElevationMax()) {
|
||||||
|
writeElevation(stats.getMaxElevation(), builder, R.string.description_max_elevation, lineBreak);
|
||||||
|
}
|
||||||
|
|
||||||
// Min elevation
|
// Min elevation
|
||||||
writeElevation(stats.getMinElevation(), builder, R.string.description_min_elevation, lineBreak);
|
if (stats.hasElevationMin()) {
|
||||||
|
writeElevation(stats.getMinElevation(), builder, R.string.description_min_elevation, lineBreak);
|
||||||
|
}
|
||||||
|
|
||||||
// Elevation gain
|
// Elevation gain
|
||||||
writeElevation(stats.getTotalElevationGain(), builder, R.string.description_elevation_gain, lineBreak);
|
writeElevation(stats.getTotalElevationGain(), builder, R.string.description_elevation_gain, lineBreak);
|
||||||
|
|||||||
@@ -313,6 +313,9 @@ abstract class AbstractFileTrackImporter extends DefaultHandler implements Track
|
|||||||
*/
|
*/
|
||||||
protected TrackPoint getTrackPoint() throws SAXException {
|
protected TrackPoint getTrackPoint() throws SAXException {
|
||||||
TrackPoint trackPoint = createTrackPoint();
|
TrackPoint trackPoint = createTrackPoint();
|
||||||
|
if (trackPoint == null) {
|
||||||
|
throw new SAXException(createErrorMessage("Invalid location detected: " + trackPoint));
|
||||||
|
}
|
||||||
|
|
||||||
// Calculate derived attributes from the previous point
|
// Calculate derived attributes from the previous point
|
||||||
if (trackData.lastLocationInCurrentSegment != null && trackData.lastLocationInCurrentSegment.getTime() != 0) {
|
if (trackData.lastLocationInCurrentSegment != null && trackData.lastLocationInCurrentSegment.getTime() != 0) {
|
||||||
|
|||||||
@@ -176,6 +176,10 @@ public class TrackStatistics {
|
|||||||
this.maxSpeed_mps = maxSpeed;
|
this.maxSpeed_mps = maxSpeed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean hasElevationMin() {
|
||||||
|
return !Double.isInfinite(getMinElevation());
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the minimum elevation.
|
* Gets the minimum elevation.
|
||||||
* This is calculated from the smoothed elevation, so this can actually be more than the current elevation.
|
* This is calculated from the smoothed elevation, so this can actually be more than the current elevation.
|
||||||
@@ -193,6 +197,10 @@ public class TrackStatistics {
|
|||||||
elevationExtremities.setMin(elevation);
|
elevationExtremities.setMin(elevation);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean hasElevationMax() {
|
||||||
|
return !Double.isInfinite(getMaxElevation());
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the maximum elevation.
|
* Gets the maximum elevation.
|
||||||
* This is calculated from the smoothed elevation, so this can actually be less than the current elevation.
|
* This is calculated from the smoothed elevation, so this can actually be less than the current elevation.
|
||||||
|
|||||||
Reference in New Issue
Block a user