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 3e718e36b..c76402675 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/content/data/TestDataUtil.java +++ b/src/androidTest/java/de/dennisguse/opentracks/content/data/TestDataUtil.java @@ -6,7 +6,6 @@ import android.util.Pair; import java.io.File; import java.io.IOException; -import java.time.Duration; import java.time.Instant; import java.util.ArrayList; import java.util.List; @@ -85,10 +84,6 @@ public class TestDataUtil { 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 markers = List.of( 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), @@ -153,11 +148,6 @@ public class TestDataUtil { dstFile.createNewFile(); 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); } diff --git a/src/androidTest/java/de/dennisguse/opentracks/ui/intervals/IntervalStatisticsUpdaterTest.java b/src/androidTest/java/de/dennisguse/opentracks/ui/intervals/IntervalStatisticsUpdaterTest.java index 25417b8ed..8006aeb79 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/ui/intervals/IntervalStatisticsUpdaterTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/ui/intervals/IntervalStatisticsUpdaterTest.java @@ -3,40 +3,24 @@ package de.dennisguse.opentracks.ui.intervals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; -import android.content.Context; import android.util.Pair; -import androidx.test.core.app.ApplicationProvider; - -import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; +import java.util.ArrayList; import java.util.List; 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.Track; import de.dennisguse.opentracks.data.models.TrackPoint; -import de.dennisguse.opentracks.stats.SegmentStatisticUpdater; import de.dennisguse.opentracks.stats.TrackStatisticsUpdater; @RunWith(JUnit4.class) 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. */ @@ -117,36 +101,31 @@ public class IntervalStatisticsUpdaterTest { Track dummyTrack = new Track(); dummyTrack.setId(new Track.Id(System.currentTimeMillis())); dummyTrack.setName("Dummy Track Without Elevation Loss"); - contentProviderUtils.insertTrack(dummyTrack); TrackStatisticsUpdater trackStatisticsUpdater = new TrackStatisticsUpdater(); + + ArrayList trackPoints = new ArrayList<>(); for (int i = 0; i < numberOfPoints; i++) { - TrackPoint tp = TestDataUtil.createTrackPoint(i); - tp.setAltitudeLoss(null); - contentProviderUtils.insertTrackPoint(tp, dummyTrack.getId()); - trackStatisticsUpdater.addTrackPoint(tp); + trackPoints.add(TestDataUtil.createTrackPoint(i).setAltitudeLoss(null)); } + trackStatisticsUpdater.addTrackPoints(trackPoints); + dummyTrack.setStatistics(trackStatisticsUpdater.getTrackStatistics()); - contentProviderUtils.updateTrack(dummyTrack); - Pair trackWithStats = new Pair<>(dummyTrack.getId(), trackStatisticsUpdater.getSegmentStatisticUpdater()); + Pair> trackWithStats = new Pair<>(dummyTrack, trackPoints); // when and then - whenAndThen(trackWithStats, numberOfPoints, distanceInterval); + whenAndThen(trackWithStats.first, trackWithStats.second, numberOfPoints, distanceInterval); } private void whenAndThen(int numberOfPoints, float distanceInterval) { - Pair trackWithStats = TestDataUtil.buildTrackWithTrackPoints(contentProviderUtils, numberOfPoints); - whenAndThen(trackWithStats, numberOfPoints, distanceInterval); - + Pair> trackWithStats = buildTrackWithTrackPoints(numberOfPoints); + whenAndThen(trackWithStats.first, trackWithStats.second, numberOfPoints, distanceInterval); } - private void whenAndThen(Pair trackWithStats, int numberOfPoints, float distanceInterval) { + private void whenAndThen(Track track, List trackPoints, int numberOfPoints, float distanceInterval) { IntervalStatisticsUpdater intervalStatistics = new IntervalStatisticsUpdater(Distance.of(distanceInterval)); - Track.Id trackId = trackWithStats.first; - SegmentStatisticUpdater trackStatistics = trackWithStats.second; - try (TrackPointIterator trackPointIterator = contentProviderUtils.getTrackPointLocationIterator(trackId, null)) { - assertEquals(trackPointIterator.getCount(), numberOfPoints); - intervalStatistics.addTrackPoints(trackPointIterator); - } + + intervalStatistics.addTrackPoints(trackPoints.iterator()); + List intervalList = intervalStatistics.getIntervalList(); Distance totalDistance = Distance.of(0); float totalTime = 0L; @@ -170,9 +149,9 @@ public class IntervalStatisticsUpdaterTest { } // then - assertEquals(trackStatistics.getTotalDistance().toM(), totalDistance.toM(), 0.01); - assertEquals(trackStatistics.getTotalTime().toSeconds(), totalTime, 0.01); - assertEquals(intervalList.size(), (int) Math.ceil(trackStatistics.getTotalDistance().toM() / distanceInterval)); + assertEquals(track.getStatistics().totalTime().toSeconds(), totalTime, 0.01); + assertEquals(track.getStatistics().totalDistance().toM(), totalDistance.toM(), 0.01); + assertEquals(intervalList.size(), (int) Math.ceil(track.getStatistics().totalDistance().toM() / distanceInterval)); if (totalGain != null) { assertEquals(totalGain, numberOfPoints * TestDataUtil.ALTITUDE_GAIN, 0.1); } else { @@ -190,4 +169,17 @@ public class IntervalStatisticsUpdaterTest { } assertEquals(intervalList.get(intervalList.size() - 1).getDistance().toM(), totalDistance.toM(), 0.01); } + + private static Pair> buildTrackWithTrackPoints(int numberOfPoints) { + Track dummyTrack = new Track(); + TrackStatisticsUpdater trackStatisticsUpdater = new TrackStatisticsUpdater(); + + ArrayList 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); + } } \ No newline at end of file diff --git a/src/main/java/de/dennisguse/opentracks/ui/intervals/IntervalStatisticsUpdater.java b/src/main/java/de/dennisguse/opentracks/ui/intervals/IntervalStatisticsUpdater.java index 18540dca7..884841849 100644 --- a/src/main/java/de/dennisguse/opentracks/ui/intervals/IntervalStatisticsUpdater.java +++ b/src/main/java/de/dennisguse/opentracks/ui/intervals/IntervalStatisticsUpdater.java @@ -4,9 +4,9 @@ import androidx.annotation.Nullable; import java.time.Duration; import java.util.ArrayList; +import java.util.Iterator; import java.util.List; -import de.dennisguse.opentracks.data.TrackPointIterator; import de.dennisguse.opentracks.data.models.Distance; import de.dennisguse.opentracks.data.models.HeartRate; 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. */ - public TrackPoint.Id addTrackPoints(TrackPointIterator trackPointIterator) { + public TrackPoint.Id addTrackPoints(Iterator trackPointIterator) { boolean newIntervalAdded = false; TrackPoint trackPoint = null;