mirror of
https://codeberg.org/OpenTracksApp/OpenTracks.git
synced 2026-10-02 09:33:06 +02:00
a5158a55d9
Fixes #505.
165 lines
6.1 KiB
Java
165 lines
6.1 KiB
Java
package de.dennisguse.opentracks.stats;
|
|
|
|
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
|
|
|
import org.junit.Ignore;
|
|
import org.junit.Test;
|
|
import org.junit.runner.RunWith;
|
|
|
|
import java.time.Duration;
|
|
import java.time.Instant;
|
|
|
|
import de.dennisguse.opentracks.content.data.TestDataUtil;
|
|
import de.dennisguse.opentracks.content.data.Track;
|
|
import de.dennisguse.opentracks.content.data.TrackPoint;
|
|
|
|
import static org.junit.Assert.assertEquals;
|
|
|
|
@RunWith(AndroidJUnit4.class)
|
|
public class TrackStatisticsUpdaterTest {
|
|
|
|
private static final int GPS_DISTANCE = 50;
|
|
|
|
@Test
|
|
public void addTrackPoint_TestingTrack() {
|
|
// given
|
|
TestDataUtil.TrackData data = TestDataUtil.createTestingTrack(new Track.Id(1));
|
|
|
|
// when
|
|
TrackStatisticsUpdater subject = new TrackStatisticsUpdater();
|
|
data.trackPoints.forEach(it -> subject.addTrackPoint(it, GPS_DISTANCE));
|
|
|
|
// then
|
|
TrackStatistics statistics = subject.getTrackStatistics();
|
|
assertEquals(85.35, statistics.getTotalDistance(), 0.01);
|
|
assertEquals(Duration.ofMillis(13999), statistics.getTotalTime());
|
|
assertEquals(Duration.ofSeconds(6), statistics.getMovingTime());
|
|
|
|
assertEquals(2.5, statistics.getMinElevation(), 0.01);
|
|
assertEquals(27.5, statistics.getMaxElevation(), 0.01);
|
|
assertEquals(27, statistics.getTotalElevationGain(), 0.01);
|
|
assertEquals(27.0, statistics.getTotalElevationLoss(), 0.01);
|
|
|
|
assertEquals(14.226, statistics.getMaxSpeed(), 0.01);
|
|
assertEquals(14.226, statistics.getAverageMovingSpeed(), 0.01);
|
|
assertEquals(6.566, statistics.getAverageSpeed(), 0.01);
|
|
}
|
|
|
|
@Test
|
|
public void addTrackPoint_distance_from_GPS_not_moving() {
|
|
// given
|
|
TrackStatisticsUpdater subject = new TrackStatisticsUpdater();
|
|
|
|
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));
|
|
|
|
// when
|
|
subject.addTrackPoint(tp1, GPS_DISTANCE);
|
|
subject.addTrackPoint(tp2, GPS_DISTANCE);
|
|
subject.addTrackPoint(tp3, GPS_DISTANCE);
|
|
|
|
// then
|
|
assertEquals(0, subject.getTrackStatistics().getTotalDistance(), 0.01);
|
|
}
|
|
|
|
@Test
|
|
public void addTrackPoint_distance_from_GPS_moving() {
|
|
// given
|
|
TrackStatisticsUpdater subject = new TrackStatisticsUpdater();
|
|
|
|
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);
|
|
|
|
// when
|
|
subject.addTrackPoint(tp1, GPS_DISTANCE);
|
|
subject.addTrackPoint(tp2, GPS_DISTANCE);
|
|
subject.addTrackPoint(tp3, GPS_DISTANCE);
|
|
|
|
// then
|
|
assertEquals(1.10, subject.getTrackStatistics().getTotalDistance(), 0.01);
|
|
}
|
|
|
|
@Test
|
|
public void addTrackPoint_distance_from_GPS_moving_and_sensor_moving() {
|
|
// given
|
|
TrackStatisticsUpdater subject = new TrackStatisticsUpdater();
|
|
|
|
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);
|
|
TrackPoint tp3 = new TrackPoint(0.001, 0, 5.0, Instant.ofEpochMilli(3000));
|
|
tp2.setSpeed(5f);
|
|
TrackPoint tp4 = new TrackPoint(0.001, 0, 5.0, Instant.ofEpochMilli(4000));
|
|
tp2.setSpeed(5f);
|
|
tp4.setSensorDistance(5f);
|
|
TrackPoint tp5 = new TrackPoint(TrackPoint.Type.SEGMENT_END_MANUAL, Instant.ofEpochMilli(5000));
|
|
tp5.setSensorDistance(10f);
|
|
|
|
// when
|
|
subject.addTrackPoint(tp1, GPS_DISTANCE);
|
|
subject.addTrackPoint(tp2, GPS_DISTANCE);
|
|
subject.addTrackPoint(tp3, GPS_DISTANCE);
|
|
|
|
// then
|
|
assertEquals(110.57, subject.getTrackStatistics().getTotalDistance(), 0.01);
|
|
|
|
// when
|
|
subject.addTrackPoint(tp4, GPS_DISTANCE);
|
|
subject.addTrackPoint(tp5, GPS_DISTANCE);
|
|
|
|
// then
|
|
assertEquals(125.57, subject.getTrackStatistics().getTotalDistance(), 0.01);
|
|
}
|
|
|
|
@Test
|
|
public void addTrackPoint_distance_from_GPS_not_moving_and_sensor_moving() {
|
|
// given
|
|
TrackStatisticsUpdater subject = new TrackStatisticsUpdater();
|
|
|
|
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));
|
|
TrackPoint tp4 = new TrackPoint(0.00001, 0, 5.0, Instant.ofEpochMilli(4000));
|
|
tp4.setSensorDistance(5f);
|
|
TrackPoint tp5 = new TrackPoint(TrackPoint.Type.SEGMENT_END_MANUAL, Instant.ofEpochMilli(5000));
|
|
tp5.setSensorDistance(10f);
|
|
|
|
// when
|
|
subject.addTrackPoint(tp1, GPS_DISTANCE);
|
|
subject.addTrackPoint(tp2, GPS_DISTANCE);
|
|
subject.addTrackPoint(tp3, GPS_DISTANCE);
|
|
|
|
// then
|
|
assertEquals(0, subject.getTrackStatistics().getTotalDistance(), 0.01);
|
|
|
|
// when
|
|
subject.addTrackPoint(tp4, GPS_DISTANCE);
|
|
subject.addTrackPoint(tp5, GPS_DISTANCE);
|
|
|
|
// then
|
|
assertEquals(15, subject.getTrackStatistics().getTotalDistance(), 0.01);
|
|
}
|
|
|
|
@Ignore("TODO: create a concept ont to compute speed from GPS and sensor")
|
|
@Test
|
|
public void addTrackPoint_speed_from_GPS_not_moving() {
|
|
}
|
|
|
|
@Ignore("TODO: create a concept ont to compute speed from GPS and sensor")
|
|
@Test
|
|
public void addTrackPoint_speed_from_GPS_moving() {
|
|
}
|
|
|
|
@Ignore("TODO: create a concept ont to compute speed from GPS and sensor")
|
|
@Test
|
|
public void addTrackPoint_speed_from_GPS_not_moving_and_sensor_speed() {
|
|
}
|
|
|
|
@Ignore("TODO: create a concept ont to compute speed from GPS and sensor")
|
|
@Test
|
|
public void addTrackPoint_speed_from_GPS_moving_and_sensor_speed() {
|
|
}
|
|
} |