From fffeb40200e7394f702a7b8878c160861f59cea4 Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Sun, 2 Nov 2025 08:30:15 +0100 Subject: [PATCH] Speed.ZERO as constant. --- .../opentracks/chart/ChartPointTest.java | 4 ++-- .../opentracks/data/models/SpeedFormatterTest.java | 12 ++++++------ .../io/file/importer/KMLTrackImporterTest.java | 8 ++++---- .../sensors/sensorData/SensorDataCyclingTest.java | 2 +- ...ackRecordingServiceNotificationManagerTest.java | 2 +- .../TrackRecordingServiceRecordingTest.java | 14 +++++++------- .../stats/TrackStatisticsUpdaterTest.java | 12 ++++++------ .../dennisguse/opentracks/data/models/Speed.java | 11 ++++------- .../opentracks/data/models/SpeedFormatter.java | 2 +- .../opentracks/data/models/Statistics.java | 2 +- .../sensorData/AggregatorCyclingDistanceSpeed.java | 4 ++-- .../sensors/sensorData/AggregatorRunning.java | 4 ++-- .../opentracks/stats/SegmentStatisticUpdater.java | 4 ++-- .../aggregatedStatistics/AggregatedStatistics.java | 2 +- .../SettingsCustomLayoutEditAdapter.java | 4 ++-- 15 files changed, 42 insertions(+), 45 deletions(-) diff --git a/src/androidTest/java/de/dennisguse/opentracks/chart/ChartPointTest.java b/src/androidTest/java/de/dennisguse/opentracks/chart/ChartPointTest.java index 47725fcb5..5258ce250 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/chart/ChartPointTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/chart/ChartPointTest.java @@ -29,7 +29,7 @@ public class ChartPointTest { Statistics statistics = new Statistics(null, null, Duration.ofSeconds(1000), null, null, null, null, null, null, null); // when - ChartPoint point = ChartPoint.create(statistics, TrackStubUtils.createDefaultTrackPoint(), Speed.of(0), false, UnitSystem.IMPERIAL_FEET); + ChartPoint point = ChartPoint.create(statistics, TrackStubUtils.createDefaultTrackPoint(), Speed.ZERO, false, UnitSystem.IMPERIAL_FEET); // then assertEquals(1000000, (long) point.timeOrDistance()); @@ -41,7 +41,7 @@ public class ChartPointTest { Statistics statistics = new Statistics(null, null, null, null, Distance.of(1000), null, null, null, null, null); // when - ChartPoint point = ChartPoint.create(statistics, TrackStubUtils.createDefaultTrackPoint(), Speed.of(0), true, UnitSystem.METRIC); + ChartPoint point = ChartPoint.create(statistics, TrackStubUtils.createDefaultTrackPoint(), Speed.ZERO, true, UnitSystem.METRIC); // then assertEquals(1, (long) point.timeOrDistance()); diff --git a/src/androidTest/java/de/dennisguse/opentracks/data/models/SpeedFormatterTest.java b/src/androidTest/java/de/dennisguse/opentracks/data/models/SpeedFormatterTest.java index 0bcfd6dde..2eaafd98b 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/data/models/SpeedFormatterTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/data/models/SpeedFormatterTest.java @@ -28,7 +28,7 @@ public class SpeedFormatterTest { assertEquals("4:59", formatter.getSpeedParts(Speed.of(3.34)).first); assertEquals("5:00", formatter.getSpeedParts(Speed.of(3.33)).first); - assertEquals("min/km", formatter.getSpeedParts(Speed.zero()).second); + assertEquals("min/km", formatter.getSpeedParts(Speed.ZERO).second); } @Test @@ -39,7 +39,7 @@ public class SpeedFormatterTest { .build(context); assertEquals("8:02", formatter.getSpeedParts(Speed.of(3.34)).first); - assertEquals("min/mi", formatter.getSpeedParts(Speed.zero()).second); + assertEquals("min/mi", formatter.getSpeedParts(Speed.ZERO).second); } @Test @@ -50,7 +50,7 @@ public class SpeedFormatterTest { .build(context); assertEquals("9:14", formatter.getSpeedParts(Speed.of(3.34)).first); - assertEquals("min/NM", formatter.getSpeedParts(Speed.zero()).second); + assertEquals("min/NM", formatter.getSpeedParts(Speed.ZERO).second); } @Test @@ -61,7 +61,7 @@ public class SpeedFormatterTest { .build(context); assertEquals("11.9", formatter.getSpeedParts(Speed.of(3.31)).first); - assertEquals("km/h", formatter.getSpeedParts(Speed.zero()).second); + assertEquals("km/h", formatter.getSpeedParts(Speed.ZERO).second); } @Test @@ -72,7 +72,7 @@ public class SpeedFormatterTest { .build(context); assertEquals("7.5", formatter.getSpeedParts(Speed.of(3.34)).first); - assertEquals("mph", formatter.getSpeedParts(Speed.zero()).second); + assertEquals("mph", formatter.getSpeedParts(Speed.ZERO).second); } @Test @@ -83,7 +83,7 @@ public class SpeedFormatterTest { .build(context); assertEquals("6.5", formatter.getSpeedParts(Speed.of(3.34)).first); - assertEquals("kn", formatter.getSpeedParts(Speed.zero()).second); + assertEquals("kn", formatter.getSpeedParts(Speed.ZERO).second); } @Test diff --git a/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/KMLTrackImporterTest.java b/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/KMLTrackImporterTest.java index da05889ed..b3e6c2dd3 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/KMLTrackImporterTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/KMLTrackImporterTest.java @@ -203,7 +203,7 @@ public class KMLTrackImporterTest { 12.340057, 1.23405, null, Altitude.WGS84.of(421.8070983886719), null, null, - Speed.of(0))), + Speed.ZERO)), // created resume trackpoint with time of next valid trackpoint new TrackPoint(TrackPoint.Type.SEGMENT_START_AUTOMATIC, new Position( @@ -211,21 +211,21 @@ public class KMLTrackImporterTest { 12.340057, 1.23405, null, Altitude.WGS84.of(419.93902587890625), null, null, - Speed.of(0))), + Speed.ZERO)), new TrackPoint(TrackPoint.Type.TRACKPOINT, new Position( Instant.parse("2020-11-28T17:06:56.905Z"), 12.340057, 1.23405, null, Altitude.WGS84.of(419.9036560058594), null, null, - Speed.of(0))), + Speed.ZERO)), new TrackPoint(TrackPoint.Type.TRACKPOINT, new Position( Instant.parse("2020-11-28T17:07:20.870Z"), 12.340082, 1.234046, null, Altitude.WGS84.of(417.99432373046875), null, null, - Speed.of(0))) + Speed.ZERO)) ), importedTrackPoints); } diff --git a/src/androidTest/java/de/dennisguse/opentracks/sensors/sensorData/SensorDataCyclingTest.java b/src/androidTest/java/de/dennisguse/opentracks/sensors/sensorData/SensorDataCyclingTest.java index de6498b0a..71e01eb68 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/sensors/sensorData/SensorDataCyclingTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/sensors/sensorData/SensorDataCyclingTest.java @@ -125,6 +125,6 @@ public class SensorDataCyclingTest { // TODO See #953 // assertEquals(2, current.getValue().getDistance().toM(), 0.01); // assertEquals(2, current.getValue().getSpeed().toMPS(), 0.01); - assertEquals(new AggregatorCyclingDistanceSpeed.Data(Distance.of(0), Distance.of(0), Speed.of(0)), current.getAggregatedValue(Instant.MIN)); + assertEquals(new AggregatorCyclingDistanceSpeed.Data(Distance.of(0), Distance.of(0), Speed.ZERO), current.getAggregatedValue(Instant.MIN)); } } \ No newline at end of file diff --git a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceNotificationManagerTest.java b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceNotificationManagerTest.java index c17bf9cf1..cff3b8131 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceNotificationManagerTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceNotificationManagerTest.java @@ -44,7 +44,7 @@ public class TrackRecordingServiceNotificationManagerTest { null, null, Distance.of(999f), Altitude.WGS84.of(10), null, null, - Speed.of(0)) + Speed.ZERO) ); when(notificationCompatBuilder.setOnlyAlertOnce(anyBoolean())) diff --git a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceRecordingTest.java b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceRecordingTest.java index 31e10a5fd..0faddcb48 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceRecordingTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceRecordingTest.java @@ -110,7 +110,7 @@ public class TrackRecordingServiceRecordingTest { // then - assertEquals(new Statistics(Instant.parse(startTime), Instant.parse(startTime), Duration.ZERO, Duration.ZERO, Distance.of(0), Speed.zero(), new AltitudeExtremities(0.0, 0.0), null, null, null) + assertEquals(new Statistics(Instant.parse(startTime), Instant.parse(startTime), Duration.ZERO, Duration.ZERO, Distance.of(0), Speed.ZERO, new AltitudeExtremities(0.0, 0.0), null, null, null) , contentProviderUtils.getTrack(trackId).getStatistics()); new TrackPointAssert().assertEquals(List.of( @@ -124,7 +124,7 @@ public class TrackRecordingServiceRecordingTest { service.endCurrentTrack(); // then - assertEquals(new Statistics(Instant.parse(startTime), Instant.parse(stopTime), Duration.ofSeconds(1), Duration.ofSeconds(1), Distance.of(0), Speed.zero(), new AltitudeExtremities(0.0, 0.0), new AltitudeGainLoss(0, 0), null, null) + assertEquals(new Statistics(Instant.parse(startTime), Instant.parse(stopTime), Duration.ofSeconds(1), Duration.ofSeconds(1), Distance.of(0), Speed.ZERO, new AltitudeExtremities(0.0, 0.0), new AltitudeGainLoss(0, 0), null, null) , contentProviderUtils.getTrack(trackId).getStatistics()); new TrackPointAssert().assertEquals(List.of( @@ -199,7 +199,7 @@ public class TrackRecordingServiceRecordingTest { service.endCurrentTrack(); // then - assertEquals(new Statistics(Instant.parse(startTime), Instant.parse(pauseTime), Duration.ofSeconds(1), Duration.ofSeconds(1), Distance.of(0), Speed.zero(), new AltitudeExtremities(0.0, 0.0), new AltitudeGainLoss(0, 0), null, null) + assertEquals(new Statistics(Instant.parse(startTime), Instant.parse(pauseTime), Duration.ofSeconds(1), Duration.ofSeconds(1), Distance.of(0), Speed.ZERO, new AltitudeExtremities(0.0, 0.0), new AltitudeGainLoss(0, 0), null, null) , contentProviderUtils.getTrack(trackId).getStatistics()); new TrackPointAssert().assertEquals(List.of( @@ -214,7 +214,7 @@ public class TrackRecordingServiceRecordingTest { service.resumeTrack(trackId); // then - assertEquals(new Statistics(Instant.parse(startTime), Instant.parse(resumeTime), Duration.ofSeconds(1), Duration.ofSeconds(1), Distance.of(0), Speed.zero(), new AltitudeExtremities(0.0, 0.0), new AltitudeGainLoss(0, 0), null, null) + assertEquals(new Statistics(Instant.parse(startTime), Instant.parse(resumeTime), Duration.ofSeconds(1), Duration.ofSeconds(1), Distance.of(0), Speed.ZERO, new AltitudeExtremities(0.0, 0.0), new AltitudeGainLoss(0, 0), null, null) , contentProviderUtils.getTrack(trackId).getStatistics()); new TrackPointAssert().assertEquals(List.of( @@ -538,7 +538,7 @@ public class TrackRecordingServiceRecordingTest { sendGPSLocation(trackPointCreator, gps1, 45.0, 35.0, 100, 15); // then - Statistics startStatistics = new Statistics(Instant.parse(startTime), Instant.parse(startTime), Duration.ofSeconds(0), Duration.ofSeconds(0), Distance.of(0), Speed.of(0), new AltitudeExtremities(0.0, 0.0), null, null, null); + Statistics startStatistics = new Statistics(Instant.parse(startTime), Instant.parse(startTime), Duration.ofSeconds(0), Duration.ofSeconds(0), Distance.of(0), Speed.ZERO, new AltitudeExtremities(0.0, 0.0), null, null, null); assertEquals(startStatistics, contentProviderUtils.getTrack(trackId).getStatistics()); @@ -556,7 +556,7 @@ public class TrackRecordingServiceRecordingTest { service.endCurrentTrack(); // then - assertEquals(new Statistics(Instant.parse(startTime), Instant.parse(stopTime), Duration.ofSeconds(10), Duration.ofSeconds(10), Distance.of(0), Speed.of(0), new AltitudeExtremities(0.0, 0.0), new AltitudeGainLoss(0, 0), null, null) + assertEquals(new Statistics(Instant.parse(startTime), Instant.parse(stopTime), Duration.ofSeconds(10), Duration.ofSeconds(10), Distance.of(0), Speed.ZERO, new AltitudeExtremities(0.0, 0.0), new AltitudeGainLoss(0, 0), null, null) , contentProviderUtils.getTrack(trackId).getStatistics()); // then @@ -730,7 +730,7 @@ public class TrackRecordingServiceRecordingTest { 45.001, 35d, Distance.of(1), null, null, null, - Speed.of(0))) //Sensor data is now outdated, but we do not fall back to GPS. + Speed.ZERO)) //Sensor data is now outdated, but we do not fall back to GPS. .setSensorDistance(Distance.of(0)) ), TestDataUtil.getTrackPoints(contentProviderUtils, trackId)); } diff --git a/src/androidTest/java/de/dennisguse/opentracks/stats/TrackStatisticsUpdaterTest.java b/src/androidTest/java/de/dennisguse/opentracks/stats/TrackStatisticsUpdaterTest.java index d2cc129c1..a02df892d 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/stats/TrackStatisticsUpdaterTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/stats/TrackStatisticsUpdaterTest.java @@ -37,9 +37,9 @@ public class TrackStatisticsUpdaterTest { assertEquals(Duration.ZERO, statistics.getTotalTime()); assertEquals(Duration.ZERO, statistics.getMovingTime()); - assertEquals(Speed.of(0), statistics.getAverageSpeed()); - assertEquals(Speed.of(0), statistics.getAverageMovingSpeed()); - assertEquals(Speed.of(0), statistics.getMaxSpeed()); + assertEquals(Speed.ZERO, statistics.getAverageSpeed()); + assertEquals(Speed.ZERO, statistics.getAverageMovingSpeed()); + assertEquals(Speed.ZERO, statistics.getMaxSpeed()); assertNull(statistics.getTotalAltitudeGain()); assertNull(statistics.getTotalAltitudeLoss()); @@ -64,9 +64,9 @@ public class TrackStatisticsUpdaterTest { assertEquals(Duration.ZERO, statistics.getTotalTime()); assertEquals(Duration.ZERO, statistics.getMovingTime()); - assertEquals(Speed.of(0), statistics.getAverageSpeed()); - assertEquals(Speed.of(0), statistics.getAverageMovingSpeed()); - assertEquals(Speed.of(0), statistics.getMaxSpeed()); + assertEquals(Speed.ZERO, statistics.getAverageSpeed()); + assertEquals(Speed.ZERO, statistics.getAverageMovingSpeed()); + assertEquals(Speed.ZERO, statistics.getMaxSpeed()); assertNull(statistics.getTotalAltitudeGain()); assertNull(statistics.getTotalAltitudeLoss()); diff --git a/src/main/java/de/dennisguse/opentracks/data/models/Speed.java b/src/main/java/de/dennisguse/opentracks/data/models/Speed.java index f03c3f0f3..19a8c36fc 100644 --- a/src/main/java/de/dennisguse/opentracks/data/models/Speed.java +++ b/src/main/java/de/dennisguse/opentracks/data/models/Speed.java @@ -6,9 +6,11 @@ import de.dennisguse.opentracks.settings.UnitSystem; public record Speed(double speed_mps) { + public static Speed ZERO = Speed.of(0); + public static Speed of(Distance distance, Duration duration) { if (duration.isZero()) { - return zero(); + return ZERO; } return new Speed(distance.toM() / (duration.toMillis() / (double) Duration.ofSeconds(1).toMillis())); @@ -26,11 +28,6 @@ public record Speed(double speed_mps) { return of(Distance.ofKilometer(speed_kmh), Duration.ofHours(1)); } - //TODO Like Duration.ZERO - public static Speed zero() { - return of(0.0); - } - public static Speed max(Speed speed1, Speed speed2) { if (speed1.greaterThan(speed2)) { return speed1; @@ -40,7 +37,7 @@ public record Speed(double speed_mps) { } public boolean isZero() { - return speed_mps == 0; + return this.equals(ZERO); } public boolean isInvalid() { diff --git a/src/main/java/de/dennisguse/opentracks/data/models/SpeedFormatter.java b/src/main/java/de/dennisguse/opentracks/data/models/SpeedFormatter.java index 92ea4f741..4dcae25bb 100644 --- a/src/main/java/de/dennisguse/opentracks/data/models/SpeedFormatter.java +++ b/src/main/java/de/dennisguse/opentracks/data/models/SpeedFormatter.java @@ -50,7 +50,7 @@ public class SpeedFormatter { String unitString = resources.getString(unitId); if (speed == null) { - speed = Speed.zero(); + speed = Speed.ZERO; } if (reportSpeedOrPace) { diff --git a/src/main/java/de/dennisguse/opentracks/data/models/Statistics.java b/src/main/java/de/dennisguse/opentracks/data/models/Statistics.java index 4fd957c03..458f0d578 100644 --- a/src/main/java/de/dennisguse/opentracks/data/models/Statistics.java +++ b/src/main/java/de/dennisguse/opentracks/data/models/Statistics.java @@ -36,7 +36,7 @@ public record Statistics( public Speed getAverageSpeed() { if (totalTime.isZero()) { - return Speed.of(0); + return Speed.ZERO; } return Speed.of(totalDistance, totalTime); } diff --git a/src/main/java/de/dennisguse/opentracks/sensors/sensorData/AggregatorCyclingDistanceSpeed.java b/src/main/java/de/dennisguse/opentracks/sensors/sensorData/AggregatorCyclingDistanceSpeed.java index ceca15b55..92fe5cf2d 100644 --- a/src/main/java/de/dennisguse/opentracks/sensors/sensorData/AggregatorCyclingDistanceSpeed.java +++ b/src/main/java/de/dennisguse/opentracks/sensors/sensorData/AggregatorCyclingDistanceSpeed.java @@ -56,7 +56,7 @@ public class AggregatorCyclingDistanceSpeed extends Aggregator t.getStatistics().movingTime()).reduce(Duration.ZERO, Duration::plus); totalDistance = tracks.stream().map(t -> t.getStatistics().totalDistance()).reduce(Distance.of(0), Distance::plus); - maxSpeed = tracks.stream().map(t -> t.getStatistics().maxSpeed()).max((o1, o2) -> (int) (o1.speed_mps() - o2.speed_mps())).orElse(Speed.zero()); + maxSpeed = tracks.stream().map(t -> t.getStatistics().maxSpeed()).max((o1, o2) -> (int) (o1.speed_mps() - o2.speed_mps())).orElse(Speed.ZERO); avgMovingSpeed = Speed.of(totalDistance, totalMovingTime); } diff --git a/src/main/java/de/dennisguse/opentracks/ui/customRecordingLayout/SettingsCustomLayoutEditAdapter.java b/src/main/java/de/dennisguse/opentracks/ui/customRecordingLayout/SettingsCustomLayoutEditAdapter.java index 6632c2eb6..17fbadc1d 100644 --- a/src/main/java/de/dennisguse/opentracks/ui/customRecordingLayout/SettingsCustomLayoutEditAdapter.java +++ b/src/main/java/de/dennisguse/opentracks/ui/customRecordingLayout/SettingsCustomLayoutEditAdapter.java @@ -46,7 +46,7 @@ public class SettingsCustomLayoutEditAdapter extends RecyclerView.Adapter