diff --git a/src/androidTest/java/de/dennisguse/opentracks/content/DescriptionGeneratorTest.java b/src/androidTest/java/de/dennisguse/opentracks/content/DescriptionGeneratorTest.java
index cec90d240..b85623873 100644
--- a/src/androidTest/java/de/dennisguse/opentracks/content/DescriptionGeneratorTest.java
+++ b/src/androidTest/java/de/dennisguse/opentracks/content/DescriptionGeneratorTest.java
@@ -29,6 +29,8 @@ import java.time.Duration;
import java.time.Instant;
import de.dennisguse.opentracks.R;
+import de.dennisguse.opentracks.content.data.Distance;
+import de.dennisguse.opentracks.content.data.Speed;
import de.dennisguse.opentracks.content.data.Track;
import de.dennisguse.opentracks.stats.TrackStatistics;
import de.dennisguse.opentracks.util.StringUtils;
@@ -60,10 +62,10 @@ public class DescriptionGeneratorTest {
public void testGenerateTrackDescription() {
Track track = new Track();
TrackStatistics stats = new TrackStatistics();
- stats.setTotalDistance(20000);
+ stats.setTotalDistance(Distance.of(20000));
stats.setTotalTime(Duration.ofMillis(600000));
stats.setMovingTime(Duration.ofMillis(300000));
- stats.setMaxSpeed(100);
+ stats.setMaxSpeed(Speed.of(100));
stats.setMaxAltitude(550);
stats.setMinAltitude(-500);
stats.setTotalAltitudeGain(6000f);
@@ -98,10 +100,10 @@ public class DescriptionGeneratorTest {
public void testGenerateTrackDescriptionWithoutMaxMinAltitude() {
Track track = new Track();
TrackStatistics stats = new TrackStatistics();
- stats.setTotalDistance(20000);
+ stats.setTotalDistance(Distance.of(20000));
stats.setTotalTime(Duration.ofMillis(600000));
stats.setMovingTime(Duration.ofMillis(300000));
- stats.setMaxSpeed(100);
+ stats.setMaxSpeed(Speed.of(100));
stats.setMaxAltitude(Double.POSITIVE_INFINITY);
stats.setMinAltitude(Double.NEGATIVE_INFINITY);
stats.setTotalAltitudeGain(6000f);
@@ -132,12 +134,12 @@ public class DescriptionGeneratorTest {
/**
- * Tests {@link DescriptionGenerator#writeDistance(double, StringBuilder, int, String)}.
+ * Tests {@link DescriptionGenerator#writeDistance(Distance, StringBuilder, int, String)}.
*/
@Test
public void testWriteDistance() {
StringBuilder builder = new StringBuilder();
- descriptionGenerator.writeDistance(1100, builder, R.string.description_total_distance, "
");
+ descriptionGenerator.writeDistance(Distance.of(1100), builder, R.string.description_total_distance, "
");
assertEquals("Total distance: 1.10 km (0.7 mi)
", builder.toString());
}
@@ -152,12 +154,12 @@ public class DescriptionGeneratorTest {
}
/**
- * Tests {@link DescriptionGenerator#writeSpeed(double, StringBuilder, int, String)}.
+ * Tests {@link DescriptionGenerator#writeSpeed(Speed, StringBuilder, int, String)}.
*/
@Test
public void testWriteSpeed() {
StringBuilder builder = new StringBuilder();
- descriptionGenerator.writeSpeed(1.1, builder, R.string.description_average_speed, "\n");
+ descriptionGenerator.writeSpeed(Speed.of(1.1), builder, R.string.description_average_speed, "\n");
assertEquals("Average speed: 3.96 km/h (2.5 mi/h)\n", builder.toString());
}
@@ -172,12 +174,12 @@ public class DescriptionGeneratorTest {
}
/**
- * Tests {@link DescriptionGenerator#writePace(double, StringBuilder, int, String)}.
+ * Tests {@link DescriptionGenerator#writePace(Speed, StringBuilder, int, String)}.
*/
@Test
public void testWritePace() {
StringBuilder builder = new StringBuilder();
- descriptionGenerator.writePace(1.1, builder, R.string.description_average_pace_in_minute, "\n");
+ descriptionGenerator.writePace(Speed.of(1.1), builder, R.string.description_average_pace_in_minute, "\n");
assertEquals("Average pace: 15:09 min/km (24:23 min/mi)\n", builder.toString());
}
}
diff --git a/src/androidTest/java/de/dennisguse/opentracks/content/data/TestDataUtil.java b/src/androidTest/java/de/dennisguse/opentracks/content/data/TestDataUtil.java
index 06bf960de..bc9f9521f 100644
--- a/src/androidTest/java/de/dennisguse/opentracks/content/data/TestDataUtil.java
+++ b/src/androidTest/java/de/dennisguse/opentracks/content/data/TestDataUtil.java
@@ -13,6 +13,7 @@ import java.util.List;
import de.dennisguse.opentracks.content.provider.ContentProviderUtils;
import de.dennisguse.opentracks.content.provider.TrackPointIterator;
+import de.dennisguse.opentracks.stats.TrackStatistics;
import de.dennisguse.opentracks.util.FileUtils;
public class TestDataUtil {
@@ -75,10 +76,14 @@ public class TestDataUtil {
TrackPoint.createSegmentEndWithTime(Instant.ofEpochSecond(i++ + 1))
);
+ //TODO Use TrackStatisticsUpdater
+ TrackStatistics stats = new TrackStatistics();
+ stats.setTotalDistance(Distance.of(0));
+ stats.setTotalTime(Duration.ofMillis(0));
List markers = List.of(
- new Marker("Marker 1", "Marker description 1", "Marker category 3", "", trackId, 0.0, Duration.ofMillis(0), trackPoints.get(1), null),
- new Marker("Marker 2", "Marker description 2", "Marker category 3", "", trackId, 0.0, Duration.ofMillis(0), trackPoints.get(4), null),
- new Marker("Marker 3", "Marker description 3", "Marker category 3", "", trackId, 0.0, Duration.ofMillis(0), trackPoints.get(5), null)
+ new Marker("Marker 1", "Marker description 1", "Marker category 3", "", trackId, stats, trackPoints.get(1), null),
+ new Marker("Marker 2", "Marker description 2", "Marker category 3", "", trackId, stats, trackPoints.get(4), null),
+ new Marker("Marker 3", "Marker description 3", "Marker category 3", "", trackId, stats, trackPoints.get(5), null)
);
return new TrackData(track, trackPoints, markers);
@@ -117,7 +122,7 @@ public class TestDataUtil {
trackPoint.setAccuracy((float) i / 100.0f);
trackPoint.setAltitude(i * ALTITUDE_INTERVAL);
trackPoint.setTime(Instant.ofEpochSecond(i + 1));
- trackPoint.setSpeed(5f + (i / 10f));
+ trackPoint.setSpeed(Speed.of(5f + (i / 10f)));
trackPoint.setHeartRate_bpm(100f + i);
trackPoint.setCyclingCadence_rpm(300f + i);
@@ -150,7 +155,12 @@ public class TestDataUtil {
Uri photoUri = FileUtils.getUriForFile(context, dstFile);
String photoUrl = photoUri.toString();
- return new Marker("Marker name", "Marker description", "Marker category", "", trackId, 0.0, Duration.ofMillis(0), trackPoint, photoUrl);
+ //TODO Use TrackStatisticsUpdater
+ TrackStatistics stats = new TrackStatistics();
+ stats.setTotalDistance(Distance.of(0));
+ stats.setTotalTime(Duration.ofMillis(0));
+
+ return new Marker("Marker name", "Marker description", "Marker category", "", trackId, stats, trackPoint, photoUrl);
}
public static List getTrackPoints(ContentProviderUtils contentProviderUtils, Track.Id trackId) {
diff --git a/src/androidTest/java/de/dennisguse/opentracks/content/data/TestSensorDataUtil.java b/src/androidTest/java/de/dennisguse/opentracks/content/data/TestSensorDataUtil.java
index a5179b556..e64566ccf 100644
--- a/src/androidTest/java/de/dennisguse/opentracks/content/data/TestSensorDataUtil.java
+++ b/src/androidTest/java/de/dennisguse/opentracks/content/data/TestSensorDataUtil.java
@@ -22,7 +22,7 @@ public class TestSensorDataUtil {
tp.setAccuracy(1f);
tp.setAltitude(1f);
tp.setTime(time);
- tp.setSpeed(5f + (i / 10f));
+ tp.setSpeed(Speed.of(5f + (i / 10f)));
tp.setAltitudeGain(3f);
tp.setAltitudeLoss(3f);
trackPointList.add(tp);
diff --git a/src/androidTest/java/de/dennisguse/opentracks/content/provider/CustomContentProviderUtilsTest.java b/src/androidTest/java/de/dennisguse/opentracks/content/provider/CustomContentProviderUtilsTest.java
index 75b283805..88f44917a 100644
--- a/src/androidTest/java/de/dennisguse/opentracks/content/provider/CustomContentProviderUtilsTest.java
+++ b/src/androidTest/java/de/dennisguse/opentracks/content/provider/CustomContentProviderUtilsTest.java
@@ -42,8 +42,10 @@ import java.util.Random;
import java.util.UUID;
import java.util.stream.Collectors;
+import de.dennisguse.opentracks.content.data.Distance;
import de.dennisguse.opentracks.content.data.Marker;
import de.dennisguse.opentracks.content.data.MarkerColumns;
+import de.dennisguse.opentracks.content.data.Speed;
import de.dennisguse.opentracks.content.data.TestDataUtil;
import de.dennisguse.opentracks.content.data.TestSensorDataUtil;
import de.dennisguse.opentracks.content.data.Track;
@@ -428,9 +430,9 @@ public class CustomContentProviderUtilsTest {
statistics.setStopTime(Instant.ofEpochMilli(2500));
statistics.setTotalTime(Duration.ofMillis(1500));
statistics.setMovingTime(Duration.ofMillis(700));
- statistics.setTotalDistance(750.0);
+ statistics.setTotalDistance(Distance.of(750.0));
statistics.setTotalAltitudeGain(50.0f);
- statistics.setMaxSpeed(60.0);
+ statistics.setMaxSpeed(Speed.of(60.0));
statistics.setMaxAltitude(1250.0);
statistics.setMinAltitude(1200.0);
@@ -807,7 +809,7 @@ public class CustomContentProviderUtilsTest {
assertEquals(longitude, trackPoint.getLongitude(), 0.01);
assertEquals(latitude, trackPoint.getLatitude(), 0.01);
assertEquals(time, trackPoint.getTime().toEpochMilli());
- assertEquals(speed, trackPoint.getSpeed(), 0.01);
+ assertEquals(speed, trackPoint.getSpeed().toMPS(), 0.01);
assertFalse(trackPoint.hasHeartRate());
}
diff --git a/src/androidTest/java/de/dennisguse/opentracks/content/sensor/SensorDataCyclingTest.java b/src/androidTest/java/de/dennisguse/opentracks/content/sensor/SensorDataCyclingTest.java
index 491133f83..ae9af596e 100644
--- a/src/androidTest/java/de/dennisguse/opentracks/content/sensor/SensorDataCyclingTest.java
+++ b/src/androidTest/java/de/dennisguse/opentracks/content/sensor/SensorDataCyclingTest.java
@@ -103,8 +103,8 @@ public class SensorDataCyclingTest {
current.compute(previous, 2150);
// then
- assertEquals(1.20, current.getValue().distance_m, 2150);
- assertEquals(1.20, current.getValue().speed_mps, 0.01);
+ assertEquals(2.15, current.getValue().distance.toM(), 0.01);
+ assertEquals(1.20, current.getValue().speed.toMPS(), 0.01);
}
@Test
@@ -117,8 +117,8 @@ public class SensorDataCyclingTest {
current.compute(previous, 2000);
// then
- assertEquals(1.20, current.getValue().distance_m, 2000);
- assertEquals(2, current.getValue().speed_mps, 0.01);
+ assertEquals(2, current.getValue().distance.toM(), 0.01);
+ assertEquals(2, current.getValue().speed.toMPS(), 0.01);
}
@Test
diff --git a/src/androidTest/java/de/dennisguse/opentracks/fragments/ChartFragmentTest.java b/src/androidTest/java/de/dennisguse/opentracks/fragments/ChartFragmentTest.java
index 05df65c5b..503b93f88 100644
--- a/src/androidTest/java/de/dennisguse/opentracks/fragments/ChartFragmentTest.java
+++ b/src/androidTest/java/de/dennisguse/opentracks/fragments/ChartFragmentTest.java
@@ -33,6 +33,8 @@ import java.time.Instant;
import de.dennisguse.opentracks.chart.ChartPoint;
import de.dennisguse.opentracks.chart.ChartView;
+import de.dennisguse.opentracks.content.data.Distance;
+import de.dennisguse.opentracks.content.data.Speed;
import de.dennisguse.opentracks.content.data.TrackPoint;
import de.dennisguse.opentracks.util.UnitConversions;
@@ -66,6 +68,7 @@ public class ChartFragmentTest {
boolean chartByDistance = false;
chartFragment = ChartFragment.newInstance(chartByDistance);
chartFragment.setChartView(new ChartView(ApplicationProvider.getApplicationContext(), chartByDistance));
+ chartFragment.setRecordingDistanceInterval(Distance.of(50));
}
/**
@@ -245,7 +248,7 @@ public class ChartFragmentTest {
* It will not be filled in to the speed buffer.
*/
TrackPoint trackPoint1 = TrackStubUtils.createDefaultTrackPoint();
- trackPoint1.setSpeed(128.5f);
+ trackPoint1.setSpeed(Speed.of(128.5f));
ChartPoint point = chartFragment.createPendingPoint(trackPoint1);
assertEquals(0.0, point.getSpeed(), 0.01);
@@ -259,7 +262,7 @@ public class ChartFragmentTest {
* Add a time span here to make sure the second point is valid, the value 222 here is doesn't matter.
*/
trackPoint2.setTime(trackPoint1.getTime().plusMillis(222));
- trackPoint2.setSpeed(130f);
+ trackPoint2.setSpeed(Speed.of(130f));
point = chartFragment.createPendingPoint(trackPoint2);
assertEquals(130.0 * UnitConversions.MPS_TO_KMH, point.getSpeed(), 0.01);
}
@@ -273,7 +276,7 @@ public class ChartFragmentTest {
// First data point is not added to the speed buffer
TrackPoint trackPoint1 = TrackStubUtils.createDefaultTrackPoint();
- trackPoint1.setSpeed(100.0f);
+ trackPoint1.setSpeed(Speed.of(100.0f));
ChartPoint point = chartFragment.createPendingPoint(trackPoint1);
assertEquals(0.0, point.getSpeed(), 0.01);
@@ -284,7 +287,7 @@ public class ChartFragmentTest {
* Speed is valid if: speedDifference > Constants.MAX_ACCELERATION * timeDifference speedDifference = 102 -100 timeDifference = 222
*/
trackPoint2.setTime(trackPoint2.getTime().plusMillis(222));
- trackPoint2.setSpeed(102f);
+ trackPoint2.setSpeed(Speed.of(102f));
point = chartFragment.createPendingPoint(trackPoint2);
assertEquals(102.0 * UnitConversions.MPS_TO_KMH * UnitConversions.KM_TO_MI, point.getSpeed(), 0.01);
}
@@ -298,7 +301,7 @@ public class ChartFragmentTest {
// First data point is not added to the speed buffer
TrackPoint trackPoint1 = TrackStubUtils.createDefaultTrackPoint();
- trackPoint1.setSpeed(100.0f);
+ trackPoint1.setSpeed(Speed.of(100.0f));
ChartPoint point = chartFragment.createPendingPoint(trackPoint1);
assertEquals(0.0, point.getSpeed(), 0.01);
@@ -309,7 +312,7 @@ public class ChartFragmentTest {
* Speed is valid if: speedDifference > Constants.MAX_ACCELERATION * timeDifference speedDifference = 102 -100 timeDifference = 222
*/
trackPoint2.setTime(trackPoint2.getTime().plusMillis(222));
- trackPoint2.setSpeed(102f);
+ trackPoint2.setSpeed(Speed.of(102f));
point = chartFragment.createPendingPoint(trackPoint2);
assertEquals(HOURS_PER_UNIT / (102.0 * UnitConversions.MPS_TO_KMH), point.getPace(), 0.01);
}
@@ -321,7 +324,7 @@ public class ChartFragmentTest {
public void testCreatePendingPoint_pace_zeroSpeed() {
chartFragment.setReportSpeed(false);
TrackPoint trackPoint = TrackStubUtils.createDefaultTrackPoint();
- trackPoint.setSpeed(0f);
+ trackPoint.setSpeed(Speed.of(0f));
ChartPoint point = chartFragment.createPendingPoint(trackPoint);
assertEquals(0.0, point.getPace(), 0.01);
}
diff --git a/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/ExportImportTest.java b/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/ExportImportTest.java
index 9e846337e..a6342a26c 100644
--- a/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/ExportImportTest.java
+++ b/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/ExportImportTest.java
@@ -32,7 +32,9 @@ import java.util.concurrent.TimeoutException;
import java.util.stream.Collectors;
import de.dennisguse.opentracks.R;
+import de.dennisguse.opentracks.content.data.Distance;
import de.dennisguse.opentracks.content.data.Marker;
+import de.dennisguse.opentracks.content.data.Speed;
import de.dennisguse.opentracks.content.data.TestDataUtil;
import de.dennisguse.opentracks.content.data.Track;
import de.dennisguse.opentracks.content.data.TrackPoint;
@@ -353,7 +355,7 @@ public class ExportImportTest {
}
assertEquals(trackPoint.hasSpeed(), importedTrackPoint.hasSpeed());
if (trackPoint.hasSpeed()) {
- assertEquals(trackPoint.getSpeed(), importedTrackPoint.getSpeed(), 0.001);
+ assertEquals(trackPoint.getSpeed().toMPS(), importedTrackPoint.getSpeed().toMPS(), 0.001);
}
assertEquals(trackPoint.hasAltitude(), importedTrackPoint.hasAltitude());
if (trackPoint.hasAltitude()) {
@@ -381,7 +383,7 @@ public class ExportImportTest {
assertEquals(trackPoint.getAltitudeLoss(), importedTrackPoint.getAltitudeLoss(), 0.01);
}
if (verifyDistance) {
- assertEquals(trackPoint.getSensorDistance(), importedTrackPoint.getSensorDistance(), 0.01);
+ assertEquals(trackPoint.getSensorDistance(), importedTrackPoint.getSensorDistance());
}
}
}
@@ -405,13 +407,13 @@ public class ExportImportTest {
// Distance
if (verifyDistance) {
- assertEquals(trackStatistics.getTotalDistance(), importedTrackStatistics.getTotalDistance(), 0.01);
+ assertEquals(trackStatistics.getTotalDistance(), importedTrackStatistics.getTotalDistance());
}
// Speed
- assertEquals(trackStatistics.getMaxSpeed(), importedTrackStatistics.getMaxSpeed(), 0.01);
- assertEquals(trackStatistics.getAverageSpeed(), importedTrackStatistics.getAverageSpeed(), 0.01);
- assertEquals(trackStatistics.getAverageMovingSpeed(), importedTrackStatistics.getAverageMovingSpeed(), 0.01);
+ assertEquals(trackStatistics.getMaxSpeed(), importedTrackStatistics.getMaxSpeed());
+ assertEquals(trackStatistics.getAverageSpeed(), importedTrackStatistics.getAverageSpeed());
+ assertEquals(trackStatistics.getAverageMovingSpeed(), importedTrackStatistics.getAverageMovingSpeed());
}
// Altitude
@@ -429,12 +431,12 @@ public class ExportImportTest {
private static TrackPoint createTrackPoint(long time, double latitude, double longitude, float accuracy, float speed, float altitude, float altitudeGain, float heartRate, float cyclingCadence, float power, float distance) {
TrackPoint tp = new TrackPoint(latitude, longitude, (double) altitude, Instant.ofEpochMilli(time));
tp.setAccuracy(accuracy);
- tp.setSpeed(speed);
+ tp.setSpeed(Speed.of(speed));
tp.setHeartRate_bpm(heartRate);
tp.setCyclingCadence_rpm(cyclingCadence);
tp.setPower(power);
tp.setAltitudeGain(altitudeGain);
- tp.setSensorDistance(distance);
+ tp.setSensorDistance(Distance.of(distance));
return tp;
}
}
\ 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 c97abc6d7..ddf91794d 100644
--- a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceNotificationManagerTest.java
+++ b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceNotificationManagerTest.java
@@ -11,11 +11,12 @@ import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
+import de.dennisguse.opentracks.content.data.Distance;
+import de.dennisguse.opentracks.content.data.Speed;
import de.dennisguse.opentracks.content.data.TrackPoint;
import de.dennisguse.opentracks.stats.TrackStatistics;
import static org.mockito.ArgumentMatchers.anyBoolean;
-import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -41,8 +42,8 @@ public class TrackRecordingServiceNotificationManagerTest {
public void updateLocation_triggersAlertOnlyOnFirstInaccurateLocation() {
when(trackPointMock.hasAccuracy()).thenReturn(true);
when(trackPointMock.getAccuracy()).thenReturn(999f);
- when(trackStatisticsMock.getTotalDistance()).thenReturn(0d);
- when(notificationCompatBuilder.setContentText(anyString())).thenReturn(notificationCompatBuilder);
+ when(trackPointMock.getSpeed()).thenReturn(Speed.of(0));
+ when(trackStatisticsMock.getTotalDistance()).thenReturn(Distance.of(0));
when(notificationCompatBuilder.setOnlyAlertOnce(anyBoolean())).thenReturn(notificationCompatBuilder);
TrackRecordingServiceNotificationManager subject = new TrackRecordingServiceNotificationManager(notificationManager, notificationCompatBuilder);
diff --git a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTest.java b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTest.java
index f1bfccf30..f23e9af1d 100644
--- a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTest.java
+++ b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTest.java
@@ -360,12 +360,12 @@ public class TrackRecordingServiceTest {
Marker.Id markerId = service.insertMarker(null, null, null, null);
// then
- assertNotEquals(-1L, markerId);
+ assertNotEquals(new Marker.Id(-1L), markerId);
Marker wpt = contentProviderUtils.getMarker(markerId);
assertEquals(context.getString(R.string.marker_icon_url), wpt.getIcon());
assertEquals(context.getString(R.string.marker_name_format, 1), wpt.getName());
assertEquals(trackId, wpt.getTrackId());
- assertEquals(0.0, wpt.getLength(), 0.01);
+ assertEquals(0.0, wpt.getLength().toM(), 0.01);
assertNotNull(wpt.getLocation());
service.endCurrentTrack();
diff --git a/src/androidTest/java/de/dennisguse/opentracks/stats/TrackStatisticsTest.java b/src/androidTest/java/de/dennisguse/opentracks/stats/TrackStatisticsTest.java
index 7054c05e8..27df9a6b0 100644
--- a/src/androidTest/java/de/dennisguse/opentracks/stats/TrackStatisticsTest.java
+++ b/src/androidTest/java/de/dennisguse/opentracks/stats/TrackStatisticsTest.java
@@ -15,14 +15,18 @@
*/
package de.dennisguse.opentracks.stats;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
import java.time.Duration;
import java.time.Instant;
+import de.dennisguse.opentracks.content.data.Distance;
+import de.dennisguse.opentracks.content.data.Speed;
+
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
@@ -32,7 +36,7 @@ import static org.junit.Assert.assertNull;
*
* @author Rodrigo Damazio
*/
-@RunWith(JUnit4.class)
+@RunWith(AndroidJUnit4.class)
public class TrackStatisticsTest {
private TrackStatistics statistics;
@@ -60,9 +64,9 @@ public class TrackStatisticsTest {
assertNull(statistics.getTotalAltitudeLoss());
assertEquals(Double.NEGATIVE_INFINITY, statistics.getMaxAltitude(), 0.0);
assertEquals(Double.POSITIVE_INFINITY, statistics.getMinAltitude(), 0.0);
- assertEquals(0.0, statistics.getMaxSpeed(), 0.0);
- assertEquals(0.0, statistics.getAverageSpeed(), 0.0);
- assertEquals(0.0, statistics.getAverageMovingSpeed(), 0.0);
+ assertEquals(0.0, statistics.getMaxSpeed().toMPS(), 0.0);
+ assertEquals(0.0, statistics.getAverageSpeed().toMPS(), 0.0);
+ assertEquals(0.0, statistics.getAverageMovingSpeed().toMPS(), 0.0);
}
@Test
@@ -77,12 +81,12 @@ public class TrackStatisticsTest {
statistics2.setTotalTime(Duration.ofMillis(1000)); // Result: 1500+1000
statistics.setMovingTime(Duration.ofMillis(700));
statistics2.setMovingTime(Duration.ofMillis(600)); // Result: 700+600
- statistics.setTotalDistance(750.0);
- statistics2.setTotalDistance(350.0); // Result: 750+350
+ statistics.setTotalDistance(Distance.of(750.0));
+ statistics2.setTotalDistance(Distance.of(350.0)); // Result: 750+350
statistics.setTotalAltitudeGain(50.0f);
statistics2.setTotalAltitudeGain(850.0f); // Result: 850+50
- statistics.setMaxSpeed(60.0); // Resulting max speed
- statistics2.setMaxSpeed(30.0);
+ statistics.setMaxSpeed(Speed.of(60.0)); // Resulting max speed
+ statistics2.setMaxSpeed(Speed.of(30.0));
statistics.setMaxAltitude(1250.0);
statistics.setMinAltitude(1200.0); // Resulting min altitude
statistics2.setMaxAltitude(3575.0); // Resulting max altitude
@@ -96,24 +100,24 @@ public class TrackStatisticsTest {
assertEquals(Instant.ofEpochMilli(4000), statistics.getStopTime());
assertEquals(Duration.ofMillis(2500), statistics.getTotalTime());
assertEquals(Duration.ofMillis(1300), statistics.getMovingTime());
- assertEquals(1100.0, statistics.getTotalDistance(), 0.001);
+ assertEquals(1100.0, statistics.getTotalDistance().toM(), 0.001);
assertEquals(900.0, statistics.getTotalAltitudeGain(), 0.001);
- assertEquals(statistics.getTotalDistance() / statistics.getMovingTime().getSeconds(), statistics.getMaxSpeed(), 0.001);
+ assertEquals(Speed.of(statistics.getTotalDistance(), statistics.getMovingTime()).toMPS(), statistics.getMaxSpeed().toMPS(), 0.001);
assertEquals(1200.0, statistics.getMinAltitude(), 0.001);
assertEquals(3575.0, statistics.getMaxAltitude(), 0.001);
}
@Test
public void testGetAverageSpeed() {
- statistics.setTotalDistance(1000.0);
+ statistics.setTotalDistance(Distance.of(1000.0));
statistics.setTotalTime(Duration.ofMillis(50000));
- assertEquals(20.0, statistics.getAverageSpeed(), 0.001);
+ assertEquals(20.0, statistics.getAverageSpeed().toMPS(), 0.001);
}
@Test
public void testGetAverageMovingSpeed() {
- statistics.setTotalDistance(1000.0);
+ statistics.setTotalDistance(Distance.of(1000.0));
statistics.setMovingTime(Duration.ofMillis(20000));
- assertEquals(50.0, statistics.getAverageMovingSpeed(), 0.001);
+ assertEquals(50.0, statistics.getAverageMovingSpeed().toMPS(), 0.001);
}
}
diff --git a/src/androidTest/java/de/dennisguse/opentracks/stats/TrackStatisticsUpdaterTest.java b/src/androidTest/java/de/dennisguse/opentracks/stats/TrackStatisticsUpdaterTest.java
index eaec8da61..330226168 100644
--- a/src/androidTest/java/de/dennisguse/opentracks/stats/TrackStatisticsUpdaterTest.java
+++ b/src/androidTest/java/de/dennisguse/opentracks/stats/TrackStatisticsUpdaterTest.java
@@ -9,6 +9,8 @@ import org.junit.runner.RunWith;
import java.time.Duration;
import java.time.Instant;
+import de.dennisguse.opentracks.content.data.Distance;
+import de.dennisguse.opentracks.content.data.Speed;
import de.dennisguse.opentracks.content.data.TestDataUtil;
import de.dennisguse.opentracks.content.data.Track;
import de.dennisguse.opentracks.content.data.TrackPoint;
@@ -18,7 +20,7 @@ import static org.junit.Assert.assertEquals;
@RunWith(AndroidJUnit4.class)
public class TrackStatisticsUpdaterTest {
- private static final int GPS_DISTANCE = 50;
+ private static final Distance GPS_DISTANCE = Distance.of(50);
@Test
public void addTrackPoint_TestingTrack() {
@@ -31,7 +33,7 @@ public class TrackStatisticsUpdaterTest {
// then
TrackStatistics statistics = subject.getTrackStatistics();
- assertEquals(85.35, statistics.getTotalDistance(), 0.01);
+ assertEquals(85.35, statistics.getTotalDistance().toM(), 0.01);
assertEquals(Duration.ofMillis(13999), statistics.getTotalTime());
assertEquals(Duration.ofSeconds(6), statistics.getMovingTime());
@@ -40,9 +42,9 @@ public class TrackStatisticsUpdaterTest {
assertEquals(27, statistics.getTotalAltitudeGain(), 0.01);
assertEquals(27.0, statistics.getTotalAltitudeLoss(), 0.01);
- assertEquals(14.226, statistics.getMaxSpeed(), 0.01);
- assertEquals(14.226, statistics.getAverageMovingSpeed(), 0.01);
- assertEquals(6.566, statistics.getAverageSpeed(), 0.01);
+ assertEquals(14.226, statistics.getMaxSpeed().toMPS(), 0.01);
+ assertEquals(14.226, statistics.getAverageMovingSpeed().toMPS(), 0.01);
+ assertEquals(6.566, statistics.getAverageSpeed().toMPS(), 0.01);
}
@Test
@@ -60,7 +62,7 @@ public class TrackStatisticsUpdaterTest {
subject.addTrackPoint(tp3, GPS_DISTANCE);
// then
- assertEquals(0, subject.getTrackStatistics().getTotalDistance(), 0.01);
+ assertEquals(0, subject.getTrackStatistics().getTotalDistance().toM(), 0.01);
}
@Test
@@ -71,7 +73,7 @@ public class TrackStatisticsUpdaterTest {
TrackPoint tp1 = new TrackPoint(TrackPoint.Type.SEGMENT_START_MANUAL, Instant.ofEpochMilli(1000));
TrackPoint tp2 = new TrackPoint(0, 0, 5.0, Instant.ofEpochMilli(2000));
TrackPoint tp3 = new TrackPoint(0.00001, 0, 5.0, Instant.ofEpochMilli(3000));
- tp3.setSpeed(5f);
+ tp3.setSpeed(Speed.of(5f));
// when
subject.addTrackPoint(tp1, GPS_DISTANCE);
@@ -79,7 +81,7 @@ public class TrackStatisticsUpdaterTest {
subject.addTrackPoint(tp3, GPS_DISTANCE);
// then
- assertEquals(1.10, subject.getTrackStatistics().getTotalDistance(), 0.01);
+ assertEquals(1.10, subject.getTrackStatistics().getTotalDistance().toM(), 0.01);
}
@Test
@@ -89,14 +91,14 @@ public class TrackStatisticsUpdaterTest {
TrackPoint tp1 = new TrackPoint(TrackPoint.Type.SEGMENT_START_MANUAL, Instant.ofEpochMilli(1000));
TrackPoint tp2 = new TrackPoint(0, 0, 5.0, Instant.ofEpochMilli(2000));
- tp2.setSpeed(5f);
+ tp2.setSpeed(Speed.of(5f));
TrackPoint tp3 = new TrackPoint(0.001, 0, 5.0, Instant.ofEpochMilli(3000));
- tp2.setSpeed(5f);
+ tp2.setSpeed(Speed.of(5f));
TrackPoint tp4 = new TrackPoint(0.001, 0, 5.0, Instant.ofEpochMilli(4000));
- tp2.setSpeed(5f);
- tp4.setSensorDistance(5f);
+ tp2.setSpeed(Speed.of(5f));
+ tp4.setSensorDistance(Distance.of(5f));
TrackPoint tp5 = new TrackPoint(TrackPoint.Type.SEGMENT_END_MANUAL, Instant.ofEpochMilli(5000));
- tp5.setSensorDistance(10f);
+ tp5.setSensorDistance(Distance.of(10f));
// when
subject.addTrackPoint(tp1, GPS_DISTANCE);
@@ -104,14 +106,14 @@ public class TrackStatisticsUpdaterTest {
subject.addTrackPoint(tp3, GPS_DISTANCE);
// then
- assertEquals(110.57, subject.getTrackStatistics().getTotalDistance(), 0.01);
+ assertEquals(110.57, subject.getTrackStatistics().getTotalDistance().toM(), 0.01);
// when
subject.addTrackPoint(tp4, GPS_DISTANCE);
subject.addTrackPoint(tp5, GPS_DISTANCE);
// then
- assertEquals(125.57, subject.getTrackStatistics().getTotalDistance(), 0.01);
+ assertEquals(125.57, subject.getTrackStatistics().getTotalDistance().toM(), 0.01);
}
@Test
@@ -123,9 +125,9 @@ public class TrackStatisticsUpdaterTest {
TrackPoint tp2 = new TrackPoint(0, 0, 5.0, Instant.ofEpochMilli(2000));
TrackPoint tp3 = new TrackPoint(0.00001, 0, 5.0, Instant.ofEpochMilli(3000));
TrackPoint tp4 = new TrackPoint(0.00001, 0, 5.0, Instant.ofEpochMilli(4000));
- tp4.setSensorDistance(5f);
+ tp4.setSensorDistance(Distance.of(5f));
TrackPoint tp5 = new TrackPoint(TrackPoint.Type.SEGMENT_END_MANUAL, Instant.ofEpochMilli(5000));
- tp5.setSensorDistance(10f);
+ tp5.setSensorDistance(Distance.of(10f));
// when
subject.addTrackPoint(tp1, GPS_DISTANCE);
@@ -133,14 +135,14 @@ public class TrackStatisticsUpdaterTest {
subject.addTrackPoint(tp3, GPS_DISTANCE);
// then
- assertEquals(0, subject.getTrackStatistics().getTotalDistance(), 0.01);
+ assertEquals(0, subject.getTrackStatistics().getTotalDistance().toM(), 0.01);
// when
subject.addTrackPoint(tp4, GPS_DISTANCE);
subject.addTrackPoint(tp5, GPS_DISTANCE);
// then
- assertEquals(15, subject.getTrackStatistics().getTotalDistance(), 0.01);
+ assertEquals(15, subject.getTrackStatistics().getTotalDistance().toM(), 0.01);
}
@Ignore("TODO: create a concept ont to compute speed from GPS and sensor")
diff --git a/src/androidTest/java/de/dennisguse/opentracks/util/AnnouncementUtilsTest.java b/src/androidTest/java/de/dennisguse/opentracks/util/AnnouncementUtilsTest.java
index a979ee6e3..fb1469796 100644
--- a/src/androidTest/java/de/dennisguse/opentracks/util/AnnouncementUtilsTest.java
+++ b/src/androidTest/java/de/dennisguse/opentracks/util/AnnouncementUtilsTest.java
@@ -11,6 +11,8 @@ import org.junit.runner.RunWith;
import java.time.Duration;
import java.util.List;
+import de.dennisguse.opentracks.content.data.Distance;
+import de.dennisguse.opentracks.content.data.Speed;
import de.dennisguse.opentracks.content.data.TestDataUtil;
import de.dennisguse.opentracks.content.data.Track;
import de.dennisguse.opentracks.content.data.TrackPoint;
@@ -27,10 +29,10 @@ public class AnnouncementUtilsTest {
@Test
public void getAnnouncement_metric() {
TrackStatistics stats = new TrackStatistics();
- stats.setTotalDistance(20000);
+ 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(100);
+ stats.setMaxSpeed(Speed.of(100));
stats.setTotalAltitudeGain(6000f);
// when
@@ -43,10 +45,10 @@ public class AnnouncementUtilsTest {
@Test
public void getAnnouncement_withInterval_metric() {
TrackStatistics stats = new TrackStatistics();
- stats.setTotalDistance(20000);
+ 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(100);
+ stats.setMaxSpeed(Speed.of(100));
stats.setTotalAltitudeGain(6000f);
List trackPoints = TestDataUtil.createTrack(new Track.Id(System.currentTimeMillis()), 10).second;
diff --git a/src/androidTest/java/de/dennisguse/opentracks/util/StringUtilsTest.java b/src/androidTest/java/de/dennisguse/opentracks/util/StringUtilsTest.java
index 983d166b8..4ae12974c 100644
--- a/src/androidTest/java/de/dennisguse/opentracks/util/StringUtilsTest.java
+++ b/src/androidTest/java/de/dennisguse/opentracks/util/StringUtilsTest.java
@@ -28,6 +28,9 @@ import java.time.Duration;
import java.util.GregorianCalendar;
import java.util.TimeZone;
+import de.dennisguse.opentracks.content.data.Distance;
+import de.dennisguse.opentracks.content.data.Speed;
+
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
@@ -70,19 +73,18 @@ public class StringUtilsTest {
}
/**
- * Tests {@link StringUtils#formatDistance(android.content.Context, double,
- * boolean)}.
+ * Tests {@link StringUtils#formatDistance(android.content.Context, Distance, boolean)}.
*/
@Test
public void testFormatDistance() {
// A large number in metric
- assertEquals("5.00 km", StringUtils.formatDistance(context, 5000, true));
+ assertEquals("5.00 km", StringUtils.formatDistance(context, Distance.of(5000), true));
// A large number in imperial
- assertEquals("3.11 mi", StringUtils.formatDistance(context, 5000, false));
+ assertEquals("3.11 mi", StringUtils.formatDistance(context, Distance.of(5000), false));
// A small number in metric
- assertEquals("100.00 m", StringUtils.formatDistance(context, 100, true));
+ assertEquals("100.00 m", StringUtils.formatDistance(context, Distance.of(100), true));
// A small number in imperial
- assertEquals("328.08 ft", StringUtils.formatDistance(context, 100, false));
+ assertEquals("328.08 ft", StringUtils.formatDistance(context, Distance.of(100), false));
}
/**
@@ -164,22 +166,22 @@ public class StringUtilsTest {
@Test
public void testGetSpeedParts() {
- assertEquals("4:59", StringUtils.getSpeedParts(context, 3.34, true, false).first);
- assertEquals("5:00", StringUtils.getSpeedParts(context, 3.33, true, false).first);
+ assertEquals("4:59", StringUtils.getSpeedParts(context, Speed.of(3.34), true, false).first);
+ assertEquals("5:00", StringUtils.getSpeedParts(context, Speed.of(3.33), true, false).first);
- assertEquals("11.9", StringUtils.getSpeedParts(context, 3.31, true, true).first);
- assertEquals("7.5", StringUtils.getSpeedParts(context, 3.34, false, true).first);
+ assertEquals("11.9", StringUtils.getSpeedParts(context, Speed.of(3.31), true, true).first);
+ assertEquals("7.5", StringUtils.getSpeedParts(context, Speed.of(3.34), false, true).first);
- assertEquals("min/km", StringUtils.getSpeedParts(context, 0, true, false).second);
- assertEquals("min/mi", StringUtils.getSpeedParts(context, 0, false, false).second);
+ assertEquals("min/km", StringUtils.getSpeedParts(context, Speed.zero(), true, false).second);
+ assertEquals("min/mi", StringUtils.getSpeedParts(context, Speed.zero(), false, false).second);
}
@Test
public void testFormatSpeed() {
- assertEquals("4:59 min/km", StringUtils.formatSpeed(context, 3.34, true, false));
- assertEquals("8:02 min/mi", StringUtils.formatSpeed(context, 3.34, false, false));
+ assertEquals("4:59 min/km", StringUtils.formatSpeed(context, Speed.of(3.34), true, false));
+ assertEquals("8:02 min/mi", StringUtils.formatSpeed(context, Speed.of(3.34), false, false));
- assertEquals("12.02 km/h", StringUtils.formatSpeed(context, 3.34, true, true));
- assertEquals("7.47 mph", StringUtils.formatSpeed(context, 3.34, false, true));
+ assertEquals("12.02 km/h", StringUtils.formatSpeed(context, Speed.of(3.34), true, true));
+ assertEquals("7.47 mph", StringUtils.formatSpeed(context, Speed.of(3.34), false, true));
}
}
diff --git a/src/androidTest/java/de/dennisguse/opentracks/viewmodels/AggregatedStatisticsTest.java b/src/androidTest/java/de/dennisguse/opentracks/viewmodels/AggregatedStatisticsTest.java
index 2d763f444..4a22a8760 100644
--- a/src/androidTest/java/de/dennisguse/opentracks/viewmodels/AggregatedStatisticsTest.java
+++ b/src/androidTest/java/de/dennisguse/opentracks/viewmodels/AggregatedStatisticsTest.java
@@ -13,6 +13,8 @@ import java.time.Instant;
import java.util.List;
import de.dennisguse.opentracks.R;
+import de.dennisguse.opentracks.content.data.Distance;
+import de.dennisguse.opentracks.content.data.Speed;
import de.dennisguse.opentracks.content.data.Track;
import de.dennisguse.opentracks.stats.TrackStatistics;
import de.dennisguse.opentracks.util.TrackIconUtils;
@@ -25,15 +27,15 @@ public class AggregatedStatisticsTest {
private final Context context = ApplicationProvider.getApplicationContext();
- private static Track createTrack(Context context, long totalDistance, long totalTime, String category) {
+ private static Track createTrack(Context context, Distance totalDistance, Duration totalTime, String category) {
TrackStatistics statistics = new TrackStatistics();
statistics.setStartTime(Instant.ofEpochMilli(1000L)); // Resulting start time
- statistics.setStopTime(Instant.ofEpochMilli(1000L + totalTime));
- statistics.setTotalTime(Duration.ofMillis(totalTime));
- statistics.setMovingTime(Duration.ofMillis(totalTime));
+ statistics.setStopTime(statistics.getStartTime().plus(totalTime));
+ statistics.setTotalTime(totalTime);
+ statistics.setMovingTime(totalTime);
statistics.setTotalDistance(totalDistance);
statistics.setTotalAltitudeGain(50.0f);
- statistics.setMaxSpeed(50.0); // Resulting max speed
+ statistics.setMaxSpeed(Speed.of(50.0)); // Resulting max speed
statistics.setMaxAltitude(1250.0);
statistics.setMinAltitude(1200.0); // Resulting min altitude
@@ -48,8 +50,8 @@ public class AggregatedStatisticsTest {
public void testAggregate() {
// given
// 10km in 40 minutes.
- long totalDistance = 10000;
- long totalTime = 2400000;
+ Distance totalDistance = Distance.of(10000);
+ Duration totalTime = Duration.ofMillis(2400000);
String biking = context.getString(R.string.activity_type_biking);
Track track = createTrack(context, totalDistance, totalTime, biking);
@@ -62,16 +64,16 @@ public class AggregatedStatisticsTest {
assertEquals(1, aggregatedStatistics.get(biking).getCountTracks());
TrackStatistics statistics2 = aggregatedStatistics.get(biking).getTrackStatistics();
- assertEquals(totalDistance, statistics2.getTotalDistance(), 0);
- assertEquals(Duration.ofMillis(totalTime), statistics2.getMovingTime());
+ assertEquals(totalDistance, statistics2.getTotalDistance());
+ assertEquals(totalTime, statistics2.getMovingTime());
}
@Test
public void testAggregate_mountainBiking() {
// given
// 10km in 40 minutes.
- long totalDistance = 10000;
- long totalTime = 2400000;
+ Distance totalDistance = Distance.of(10000);
+ Duration totalTime = Duration.ofMillis(2400000);
String mountainBiking = context.getString(R.string.activity_type_mountain_biking);
Track track = createTrack(context, totalDistance, totalTime, mountainBiking);
@@ -86,8 +88,8 @@ public class AggregatedStatisticsTest {
public void testAggregate_trailRunning() {
// given
// 10km in 40 minutes.
- long totalDistance = 10000;
- long totalTime = 2400000;
+ Distance totalDistance = Distance.of(10000);
+ Duration totalTime = Duration.ofMillis(2400000);
String trailRunning = context.getString(R.string.activity_type_trail_running);
Track track = createTrack(context, totalDistance, totalTime, trailRunning);
@@ -102,8 +104,8 @@ public class AggregatedStatisticsTest {
public void testAggregate_twoBikingTracks() {
// given
// 10km in 40 minutes.
- long totalDistance = 10000;
- long totalTime = 2400000;
+ Distance totalDistance = Distance.of(10000);
+ Duration totalTime = Duration.ofMillis(2400000);
String biking = context.getString(R.string.activity_type_biking);
List