forked from upstream-mirrors/OpenTracks
@@ -27,7 +27,7 @@ public class AnnouncementUtilsTest {
|
|||||||
private final Context context = ApplicationProvider.getApplicationContext();
|
private final Context context = ApplicationProvider.getApplicationContext();
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getAnnouncement_metric() {
|
public void getAnnouncement_metric_speed() {
|
||||||
TrackStatistics stats = new TrackStatistics();
|
TrackStatistics stats = new TrackStatistics();
|
||||||
stats.setTotalDistance(Distance.of(20000));
|
stats.setTotalDistance(Distance.of(20000));
|
||||||
stats.setTotalTime(Duration.ofHours(2).plusMinutes(5).plusSeconds(10));
|
stats.setTotalTime(Duration.ofHours(2).plusMinutes(5).plusSeconds(10));
|
||||||
@@ -43,7 +43,7 @@ public class AnnouncementUtilsTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getAnnouncement_withInterval_metric() {
|
public void getAnnouncement_withInterval_metric_speed() {
|
||||||
TrackStatistics stats = new TrackStatistics();
|
TrackStatistics stats = new TrackStatistics();
|
||||||
stats.setTotalDistance(Distance.of(20000));
|
stats.setTotalDistance(Distance.of(20000));
|
||||||
stats.setTotalTime(Duration.ofHours(2).plusMinutes(5).plusSeconds(10));
|
stats.setTotalTime(Duration.ofHours(2).plusMinutes(5).plusSeconds(10));
|
||||||
@@ -61,4 +61,112 @@ public class AnnouncementUtilsTest {
|
|||||||
// then
|
// then
|
||||||
assertEquals("OpenTracks total distance 20.00 kilometers in 1 hour 5 minutes 10 seconds at 18.4 kilometers per hour Lap speed of 51.2 kilometers per hour", announcement);
|
assertEquals("OpenTracks total distance 20.00 kilometers in 1 hour 5 minutes 10 seconds at 18.4 kilometers per hour Lap speed of 51.2 kilometers per hour", announcement);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getAnnouncement_metric_pace() {
|
||||||
|
TrackStatistics stats = new TrackStatistics();
|
||||||
|
stats.setTotalDistance(Distance.of(20000));
|
||||||
|
stats.setTotalTime(Duration.ofHours(2).plusMinutes(5).plusSeconds(10));
|
||||||
|
stats.setMovingTime(Duration.ofHours(1).plusMinutes(5).plusSeconds(10));
|
||||||
|
stats.setMaxSpeed(Speed.of(100));
|
||||||
|
stats.setTotalAltitudeGain(6000f);
|
||||||
|
|
||||||
|
// when
|
||||||
|
String announcement = AnnouncementUtils.getAnnouncement(context, stats, true, false, null);
|
||||||
|
|
||||||
|
// then
|
||||||
|
assertEquals("OpenTracks total distance 20.00 kilometers in 1 hour 5 minutes 10 seconds at 3 minutes 15 seconds per kilometer", announcement);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getAnnouncement_withInterval_metric_pace() {
|
||||||
|
TrackStatistics stats = new TrackStatistics();
|
||||||
|
stats.setTotalDistance(Distance.of(20000));
|
||||||
|
stats.setTotalTime(Duration.ofHours(2).plusMinutes(5).plusSeconds(10));
|
||||||
|
stats.setMovingTime(Duration.ofHours(1).plusMinutes(5).plusSeconds(10));
|
||||||
|
stats.setMaxSpeed(Speed.of(100));
|
||||||
|
stats.setTotalAltitudeGain(6000f);
|
||||||
|
|
||||||
|
List<TrackPoint> trackPoints = TestDataUtil.createTrack(new Track.Id(System.currentTimeMillis()), 10).second;
|
||||||
|
IntervalStatistics intervalStatistics = new IntervalStatistics(trackPoints, Distance.of(1000));
|
||||||
|
IntervalStatistics.Interval lastInterval = intervalStatistics.getIntervalList().get(intervalStatistics.getIntervalList().size() - 1);
|
||||||
|
|
||||||
|
// when
|
||||||
|
String announcement = AnnouncementUtils.getAnnouncement(context, stats, true, false, lastInterval);
|
||||||
|
|
||||||
|
// then
|
||||||
|
assertEquals("OpenTracks total distance 20.00 kilometers in 1 hour 5 minutes 10 seconds at 3 minutes 15 seconds per kilometer Lap time of 1 minute 10 seconds per kilometer", announcement);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getAnnouncement_imperial_speed() {
|
||||||
|
TrackStatistics stats = new TrackStatistics();
|
||||||
|
stats.setTotalDistance(Distance.of(20000));
|
||||||
|
stats.setTotalTime(Duration.ofHours(2).plusMinutes(5).plusSeconds(10));
|
||||||
|
stats.setMovingTime(Duration.ofHours(1).plusMinutes(5).plusSeconds(10));
|
||||||
|
stats.setMaxSpeed(Speed.of(100));
|
||||||
|
stats.setTotalAltitudeGain(6000f);
|
||||||
|
|
||||||
|
// when
|
||||||
|
String announcement = AnnouncementUtils.getAnnouncement(context, stats, false, true, null);
|
||||||
|
|
||||||
|
// then
|
||||||
|
assertEquals("OpenTracks total distance 12.43 miles in 1 hour 5 minutes 10 seconds at 11.4 miles per hour", announcement);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getAnnouncement_withInterval_imperial_speed() {
|
||||||
|
TrackStatistics stats = new TrackStatistics();
|
||||||
|
stats.setTotalDistance(Distance.of(20000));
|
||||||
|
stats.setTotalTime(Duration.ofHours(2).plusMinutes(5).plusSeconds(10));
|
||||||
|
stats.setMovingTime(Duration.ofHours(1).plusMinutes(5).plusSeconds(10));
|
||||||
|
stats.setMaxSpeed(Speed.of(100));
|
||||||
|
stats.setTotalAltitudeGain(6000f);
|
||||||
|
|
||||||
|
List<TrackPoint> trackPoints = TestDataUtil.createTrack(new Track.Id(System.currentTimeMillis()), 10).second;
|
||||||
|
IntervalStatistics intervalStatistics = new IntervalStatistics(trackPoints, Distance.of(1000));
|
||||||
|
IntervalStatistics.Interval lastInterval = intervalStatistics.getIntervalList().get(intervalStatistics.getIntervalList().size() - 1);
|
||||||
|
|
||||||
|
// when
|
||||||
|
String announcement = AnnouncementUtils.getAnnouncement(context, stats, false, true, lastInterval);
|
||||||
|
|
||||||
|
// then
|
||||||
|
assertEquals("OpenTracks total distance 12.43 miles in 1 hour 5 minutes 10 seconds at 11.4 miles per hour Lap speed of 31.8 miles per hour", announcement);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getAnnouncement_imperial_pace() {
|
||||||
|
TrackStatistics stats = new TrackStatistics();
|
||||||
|
stats.setTotalDistance(Distance.of(20000));
|
||||||
|
stats.setTotalTime(Duration.ofHours(2).plusMinutes(5).plusSeconds(10));
|
||||||
|
stats.setMovingTime(Duration.ofHours(1).plusMinutes(5).plusSeconds(10));
|
||||||
|
stats.setMaxSpeed(Speed.of(100));
|
||||||
|
stats.setTotalAltitudeGain(6000f);
|
||||||
|
|
||||||
|
// when
|
||||||
|
String announcement = AnnouncementUtils.getAnnouncement(context, stats, false, false, null);
|
||||||
|
|
||||||
|
// then
|
||||||
|
assertEquals("OpenTracks total distance 12.43 miles in 1 hour 5 minutes 10 seconds at 5 minutes 15 seconds per mile", announcement);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getAnnouncement_withInterval_imperial_pace() {
|
||||||
|
TrackStatistics stats = new TrackStatistics();
|
||||||
|
stats.setTotalDistance(Distance.of(20000));
|
||||||
|
stats.setTotalTime(Duration.ofHours(2).plusMinutes(5).plusSeconds(10));
|
||||||
|
stats.setMovingTime(Duration.ofHours(1).plusMinutes(5).plusSeconds(10));
|
||||||
|
stats.setMaxSpeed(Speed.of(100));
|
||||||
|
stats.setTotalAltitudeGain(6000f);
|
||||||
|
|
||||||
|
List<TrackPoint> trackPoints = TestDataUtil.createTrack(new Track.Id(System.currentTimeMillis()), 10).second;
|
||||||
|
IntervalStatistics intervalStatistics = new IntervalStatistics(trackPoints, Distance.of(1000));
|
||||||
|
IntervalStatistics.Interval lastInterval = intervalStatistics.getIntervalList().get(intervalStatistics.getIntervalList().size() - 1);
|
||||||
|
|
||||||
|
// when
|
||||||
|
String announcement = AnnouncementUtils.getAnnouncement(context, stats, false, false, lastInterval);
|
||||||
|
|
||||||
|
// then
|
||||||
|
assertEquals("OpenTracks total distance 12.43 miles in 1 hour 5 minutes 10 seconds at 5 minutes 15 seconds per mile Lap time of 1 minute 53 seconds per mile", announcement);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -43,7 +43,7 @@ public class AnnouncementUtils {
|
|||||||
int paceId = isMetricUnits ? R.string.voice_pace_per_kilometer : R.string.voice_pace_per_mile;
|
int paceId = isMetricUnits ? R.string.voice_pace_per_kilometer : R.string.voice_pace_per_mile;
|
||||||
rate = context.getString(paceId, getAnnounceTime(context, time));
|
rate = context.getString(paceId, getAnnounceTime(context, time));
|
||||||
|
|
||||||
Duration currentTime = currentDistancePerTime.toPace(isMetricUnits);
|
Duration currentTime = currentDistancePerTime != null ? currentDistancePerTime.toPace(isMetricUnits) : Duration.ofMillis(0);
|
||||||
currentRate = context.getString(paceId, getAnnounceTime(context, currentTime));
|
currentRate = context.getString(paceId, getAnnounceTime(context, currentTime));
|
||||||
currentRateMsg = context.getString(R.string.voice_pace_lap, currentRate);
|
currentRateMsg = context.getString(R.string.voice_pace_lap, currentRate);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user