Test: IntervalStatisticsUpdaterTest doesn't store data anymore.

This commit is contained in:
Dennis Guse
2025-10-29 19:03:14 +01:00
parent 05e45b6870
commit fd92793c2a
3 changed files with 32 additions and 50 deletions
@@ -6,7 +6,6 @@ import android.util.Pair;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.time.Duration;
import java.time.Instant; import java.time.Instant;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@@ -85,10 +84,6 @@ public class TestDataUtil {
createTrackPoint(i, TrackPoint.Type.SEGMENT_END_MANUAL) createTrackPoint(i, TrackPoint.Type.SEGMENT_END_MANUAL)
); );
//TODO Use TrackStatisticsUpdater
SegmentStatisticUpdater stats = new SegmentStatisticUpdater();
stats.setTotalDistance(Distance.of(0));
stats.setTotalTime(Duration.ofMillis(0));
List<Marker> markers = List.of( List<Marker> markers = List.of(
new Marker(trackId, trackPoints.get(1), "Marker 1", "Marker description 1", "Marker category 3", "", null), new Marker(trackId, trackPoints.get(1), "Marker 1", "Marker description 1", "Marker category 3", "", null),
new Marker(trackId, trackPoints.get(4), "Marker 2", "Marker description 2", "Marker category 3", "", null), new Marker(trackId, trackPoints.get(4), "Marker 2", "Marker description 2", "Marker category 3", "", null),
@@ -153,11 +148,6 @@ public class TestDataUtil {
dstFile.createNewFile(); dstFile.createNewFile();
Uri photoUri = FileUtils.getUriForFile(context, dstFile); Uri photoUri = FileUtils.getUriForFile(context, dstFile);
//TODO Use TrackStatisticsUpdater
SegmentStatisticUpdater stats = new SegmentStatisticUpdater();
stats.setTotalDistance(Distance.of(0));
stats.setTotalTime(Duration.ofMillis(0));
return new Marker(trackId, trackPoint, "Marker name", "Marker description", "Marker category", "", photoUri); return new Marker(trackId, trackPoint, "Marker name", "Marker description", "Marker category", "", photoUri);
} }
@@ -3,40 +3,24 @@ package de.dennisguse.opentracks.ui.intervals;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;
import android.content.Context;
import android.util.Pair; import android.util.Pair;
import androidx.test.core.app.ApplicationProvider;
import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.junit.runners.JUnit4; import org.junit.runners.JUnit4;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import de.dennisguse.opentracks.content.data.TestDataUtil; import de.dennisguse.opentracks.content.data.TestDataUtil;
import de.dennisguse.opentracks.data.ContentProviderUtils;
import de.dennisguse.opentracks.data.TrackPointIterator;
import de.dennisguse.opentracks.data.models.Distance; import de.dennisguse.opentracks.data.models.Distance;
import de.dennisguse.opentracks.data.models.Track; import de.dennisguse.opentracks.data.models.Track;
import de.dennisguse.opentracks.data.models.TrackPoint; import de.dennisguse.opentracks.data.models.TrackPoint;
import de.dennisguse.opentracks.stats.SegmentStatisticUpdater;
import de.dennisguse.opentracks.stats.TrackStatisticsUpdater; import de.dennisguse.opentracks.stats.TrackStatisticsUpdater;
@RunWith(JUnit4.class) @RunWith(JUnit4.class)
public class IntervalStatisticsUpdaterTest { public class IntervalStatisticsUpdaterTest {
private static final String TAG = IntervalStatisticsUpdaterTest.class.getSimpleName();
private final Context context = ApplicationProvider.getApplicationContext();
private ContentProviderUtils contentProviderUtils;
@Before
public void setUp() {
contentProviderUtils = new ContentProviderUtils(context);
}
/** /**
* Tests that build method compute the distance correctly comparing the result with TrackStatisticsUpdater result. * Tests that build method compute the distance correctly comparing the result with TrackStatisticsUpdater result.
*/ */
@@ -117,36 +101,31 @@ public class IntervalStatisticsUpdaterTest {
Track dummyTrack = new Track(); Track dummyTrack = new Track();
dummyTrack.setId(new Track.Id(System.currentTimeMillis())); dummyTrack.setId(new Track.Id(System.currentTimeMillis()));
dummyTrack.setName("Dummy Track Without Elevation Loss"); dummyTrack.setName("Dummy Track Without Elevation Loss");
contentProviderUtils.insertTrack(dummyTrack);
TrackStatisticsUpdater trackStatisticsUpdater = new TrackStatisticsUpdater(); TrackStatisticsUpdater trackStatisticsUpdater = new TrackStatisticsUpdater();
ArrayList<TrackPoint> trackPoints = new ArrayList<>();
for (int i = 0; i < numberOfPoints; i++) { for (int i = 0; i < numberOfPoints; i++) {
TrackPoint tp = TestDataUtil.createTrackPoint(i); trackPoints.add(TestDataUtil.createTrackPoint(i).setAltitudeLoss(null));
tp.setAltitudeLoss(null);
contentProviderUtils.insertTrackPoint(tp, dummyTrack.getId());
trackStatisticsUpdater.addTrackPoint(tp);
} }
trackStatisticsUpdater.addTrackPoints(trackPoints);
dummyTrack.setStatistics(trackStatisticsUpdater.getTrackStatistics()); dummyTrack.setStatistics(trackStatisticsUpdater.getTrackStatistics());
contentProviderUtils.updateTrack(dummyTrack); Pair<Track, List<TrackPoint>> trackWithStats = new Pair<>(dummyTrack, trackPoints);
Pair<Track.Id, SegmentStatisticUpdater> trackWithStats = new Pair<>(dummyTrack.getId(), trackStatisticsUpdater.getSegmentStatisticUpdater());
// when and then // when and then
whenAndThen(trackWithStats, numberOfPoints, distanceInterval); whenAndThen(trackWithStats.first, trackWithStats.second, numberOfPoints, distanceInterval);
} }
private void whenAndThen(int numberOfPoints, float distanceInterval) { private void whenAndThen(int numberOfPoints, float distanceInterval) {
Pair<Track.Id, SegmentStatisticUpdater> trackWithStats = TestDataUtil.buildTrackWithTrackPoints(contentProviderUtils, numberOfPoints); Pair<Track, List<TrackPoint>> trackWithStats = buildTrackWithTrackPoints(numberOfPoints);
whenAndThen(trackWithStats, numberOfPoints, distanceInterval); whenAndThen(trackWithStats.first, trackWithStats.second, numberOfPoints, distanceInterval);
} }
private void whenAndThen(Pair<Track.Id, SegmentStatisticUpdater> trackWithStats, int numberOfPoints, float distanceInterval) { private void whenAndThen(Track track, List<TrackPoint> trackPoints, int numberOfPoints, float distanceInterval) {
IntervalStatisticsUpdater intervalStatistics = new IntervalStatisticsUpdater(Distance.of(distanceInterval)); IntervalStatisticsUpdater intervalStatistics = new IntervalStatisticsUpdater(Distance.of(distanceInterval));
Track.Id trackId = trackWithStats.first;
SegmentStatisticUpdater trackStatistics = trackWithStats.second; intervalStatistics.addTrackPoints(trackPoints.iterator());
try (TrackPointIterator trackPointIterator = contentProviderUtils.getTrackPointLocationIterator(trackId, null)) {
assertEquals(trackPointIterator.getCount(), numberOfPoints);
intervalStatistics.addTrackPoints(trackPointIterator);
}
List<IntervalStatisticsUpdater.Interval> intervalList = intervalStatistics.getIntervalList(); List<IntervalStatisticsUpdater.Interval> intervalList = intervalStatistics.getIntervalList();
Distance totalDistance = Distance.of(0); Distance totalDistance = Distance.of(0);
float totalTime = 0L; float totalTime = 0L;
@@ -170,9 +149,9 @@ public class IntervalStatisticsUpdaterTest {
} }
// then // then
assertEquals(trackStatistics.getTotalDistance().toM(), totalDistance.toM(), 0.01); assertEquals(track.getStatistics().totalTime().toSeconds(), totalTime, 0.01);
assertEquals(trackStatistics.getTotalTime().toSeconds(), totalTime, 0.01); assertEquals(track.getStatistics().totalDistance().toM(), totalDistance.toM(), 0.01);
assertEquals(intervalList.size(), (int) Math.ceil(trackStatistics.getTotalDistance().toM() / distanceInterval)); assertEquals(intervalList.size(), (int) Math.ceil(track.getStatistics().totalDistance().toM() / distanceInterval));
if (totalGain != null) { if (totalGain != null) {
assertEquals(totalGain, numberOfPoints * TestDataUtil.ALTITUDE_GAIN, 0.1); assertEquals(totalGain, numberOfPoints * TestDataUtil.ALTITUDE_GAIN, 0.1);
} else { } else {
@@ -190,4 +169,17 @@ public class IntervalStatisticsUpdaterTest {
} }
assertEquals(intervalList.get(intervalList.size() - 1).getDistance().toM(), totalDistance.toM(), 0.01); assertEquals(intervalList.get(intervalList.size() - 1).getDistance().toM(), totalDistance.toM(), 0.01);
} }
private static Pair<Track, List<TrackPoint>> buildTrackWithTrackPoints(int numberOfPoints) {
Track dummyTrack = new Track();
TrackStatisticsUpdater trackStatisticsUpdater = new TrackStatisticsUpdater();
ArrayList<TrackPoint> trackPoints = new ArrayList<>();
for (int i = 0; i < numberOfPoints; i++) {
trackPoints.add(TestDataUtil.createTrackPoint(i));
}
trackStatisticsUpdater.addTrackPoints(trackPoints);
dummyTrack.setStatistics(trackStatisticsUpdater.getTrackStatistics());
return new Pair<>(dummyTrack, trackPoints);
}
} }
@@ -4,9 +4,9 @@ import androidx.annotation.Nullable;
import java.time.Duration; import java.time.Duration;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Iterator;
import java.util.List; import java.util.List;
import de.dennisguse.opentracks.data.TrackPointIterator;
import de.dennisguse.opentracks.data.models.Distance; import de.dennisguse.opentracks.data.models.Distance;
import de.dennisguse.opentracks.data.models.HeartRate; import de.dennisguse.opentracks.data.models.HeartRate;
import de.dennisguse.opentracks.data.models.Power; import de.dennisguse.opentracks.data.models.Power;
@@ -38,7 +38,7 @@ public class IntervalStatisticsUpdater {
* *
* @return the last track point's id used to compute the intervals. * @return the last track point's id used to compute the intervals.
*/ */
public TrackPoint.Id addTrackPoints(TrackPointIterator trackPointIterator) { public TrackPoint.Id addTrackPoints(Iterator<TrackPoint> trackPointIterator) {
boolean newIntervalAdded = false; boolean newIntervalAdded = false;
TrackPoint trackPoint = null; TrackPoint trackPoint = null;