From 9cdf87b99888a3fde5fd96a9dd01c3537be432e6 Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Wed, 27 May 2026 11:27:13 +0200 Subject: [PATCH] Test for announcement without speed/distance units. Part of #2323 --- .../VoiceAnnouncementUtilsTest.java | 43 +++++++++++++++++++ .../opentracks/settings/PreferencesUtils.java | 5 +++ 2 files changed, 48 insertions(+) diff --git a/src/androidTest/java/de/dennisguse/opentracks/services/announcement/VoiceAnnouncementUtilsTest.java b/src/androidTest/java/de/dennisguse/opentracks/services/announcement/VoiceAnnouncementUtilsTest.java index a4c3fce90..cf4aab14f 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/services/announcement/VoiceAnnouncementUtilsTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/services/announcement/VoiceAnnouncementUtilsTest.java @@ -52,6 +52,7 @@ public class VoiceAnnouncementUtilsTest { @Before public void setUp() { + PreferencesUtils.setVoiceAnnounceUnit(true); PreferencesUtils.setVoiceAnnounceHeartRateCurrent(false); PreferencesUtils.setVoiceAnnounceLapHeartRate(false); PreferencesUtils.setVoiceAnnounceAverageHeartRate(false); @@ -221,6 +222,48 @@ public class VoiceAnnouncementUtilsTest { assertEquals("12:00 AM. Total distance 19.9 kilometers. 1 hour. Average moving speed 19.9 kilometers per hour.", announcement); } + @Test + public void getAnnouncement_metric_distance_without_unit() { + PreferencesUtils.setVoiceAnnounceUnit(false); + + Track track = new Track( + null, + null, + "", + "", + "", + ActivityType.AIRPLANE, + ZoneOffset.UTC, + new Statistics( + Instant.EPOCH, + Instant.EPOCH, + Duration.ofHours(2).plusMinutes(5).plusSeconds(10), + Duration.ofHours(1), + Distance.of(19900), + Speed.of(100), + null, + new AltitudeGainLoss(6000, 6000), + null, + null + )); + + SensorDataSet dataSet = new SensorDataSet( + null, + null, + null, + new SensorData<>(HeartRate.of(60), "unused"), + null, null, + null, + null + ); + + // when + String announcement = VoiceAnnouncementUtils.createStatistics(context, track, dataSet, UnitSystem.METRIC, true, null, null).toString(); + + // then + assertEquals("12:00 AM. Total distance 19.9. 1 hour. Average moving speed 19.9.", announcement); + } + @Test public void getAnnouncement_withInterval_metric_speed() { // given diff --git a/src/main/java/de/dennisguse/opentracks/settings/PreferencesUtils.java b/src/main/java/de/dennisguse/opentracks/settings/PreferencesUtils.java index 8412b2266..739ef3e68 100644 --- a/src/main/java/de/dennisguse/opentracks/settings/PreferencesUtils.java +++ b/src/main/java/de/dennisguse/opentracks/settings/PreferencesUtils.java @@ -328,6 +328,11 @@ public class PreferencesUtils { return getBoolean(R.string.voice_announce_unit_key, true); } + @VisibleForTesting + public static void setVoiceAnnounceUnit(boolean value) { + setBoolean(R.string.voice_announce_unit_key, value); + } + public static Duration getVoiceAnnouncementFrequency() { final int DEFAULT = Integer.parseInt(resources.getString(R.string.voice_announcement_frequency_default)); int value = getInt(R.string.voice_announcement_frequency_key, DEFAULT);