Tests: created TrackPointAssert to unify verification (incl. speed).

This commit is contained in:
Dennis Guse
2021-06-29 17:07:14 +02:00
parent 1f83b71336
commit 0edb72aaed
5 changed files with 80 additions and 40 deletions
@@ -17,6 +17,7 @@ import java.io.InputStream;
import java.util.List; import java.util.List;
import de.dennisguse.opentracks.content.data.Distance; 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.TestDataUtil;
import de.dennisguse.opentracks.content.data.Track; import de.dennisguse.opentracks.content.data.Track;
import de.dennisguse.opentracks.content.data.TrackPoint; import de.dennisguse.opentracks.content.data.TrackPoint;
@@ -81,8 +82,10 @@ public class GPXImportTest {
TrackPointAssert a = new TrackPointAssert(); TrackPointAssert a = new TrackPointAssert();
a.assertEquals(List.of( a.assertEquals(List.of(
a.expect(TrackPoint.Type.SEGMENT_START_AUTOMATIC, "2021-01-07T21:51:59.179Z", 14.0, 3.0, 10.0), a.expect(TrackPoint.Type.SEGMENT_START_AUTOMATIC, "2021-01-07T21:51:59.179Z", 14.0, 3.0, 10.0),
a.expect(TrackPoint.Type.TRACKPOINT, "2021-01-07T21:52:00.653Z", 14.001, 3.0, 10.0), a.expect(TrackPoint.Type.TRACKPOINT, "2021-01-07T21:52:00.653Z", 14.001, 3.0, 10.0)
a.expect(TrackPoint.Type.TRACKPOINT, "2021-01-07T21:52:01.010Z", 14.002, 3.0, 10.0), .setSpeed(Speed.of(75.4192)),
a.expect(TrackPoint.Type.TRACKPOINT, "2021-01-07T21:52:01.010Z", 14.002, 3.0, 10.0)
.setSpeed(Speed.of(311.3948)),
a.expect(TrackPoint.Type.SEGMENT_END_MANUAL, "2021-01-07T21:52:02.658Z"), a.expect(TrackPoint.Type.SEGMENT_END_MANUAL, "2021-01-07T21:52:02.658Z"),
// created resume trackpoint with time of next valid trackpoint // created resume trackpoint with time of next valid trackpoint
@@ -17,6 +17,7 @@ import java.io.InputStream;
import java.util.List; import java.util.List;
import de.dennisguse.opentracks.content.data.Distance; 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.TestDataUtil;
import de.dennisguse.opentracks.content.data.Track; import de.dennisguse.opentracks.content.data.Track;
import de.dennisguse.opentracks.content.data.TrackPoint; import de.dennisguse.opentracks.content.data.TrackPoint;
@@ -82,8 +83,10 @@ public class KMLImportTest {
a.assertEquals(List.of( a.assertEquals(List.of(
a.expect(TrackPoint.Type.SEGMENT_START_MANUAL, "2021-05-29T18:06:21.767Z"), a.expect(TrackPoint.Type.SEGMENT_START_MANUAL, "2021-05-29T18:06:21.767Z"),
a.expect(TrackPoint.Type.TRACKPOINT, "2021-05-29T18:06:22.042Z", 14.0, 3.0, 10.0), a.expect(TrackPoint.Type.TRACKPOINT, "2021-05-29T18:06:22.042Z", 14.0, 3.0, 10.0),
a.expect(TrackPoint.Type.TRACKPOINT, "2021-05-29T18:06:22.192Z", 14.001, 3.0, 10.0), a.expect(TrackPoint.Type.TRACKPOINT, "2021-05-29T18:06:22.192Z", 14.001, 3.0, 10.0)
a.expect(TrackPoint.Type.TRACKPOINT, "2021-05-29T18:06:22.318Z", 14.002, 3.0, 10.0), .setSpeed(Speed.of(741.1196)),
a.expect(TrackPoint.Type.TRACKPOINT, "2021-05-29T18:06:22.318Z", 14.002, 3.0, 10.0)
.setSpeed(Speed.of(882.2853)),
a.expect(TrackPoint.Type.SEGMENT_END_MANUAL, "2021-05-29T18:06:22.512Z") a.expect(TrackPoint.Type.SEGMENT_END_MANUAL, "2021-05-29T18:06:22.512Z")
), importedTrackPoints); ), importedTrackPoints);
} }
@@ -158,19 +161,25 @@ public class KMLImportTest {
a.assertEquals(List.of( a.assertEquals(List.of(
// first 3 trackpoints // first 3 trackpoints
a.expect(TrackPoint.Type.SEGMENT_START_AUTOMATIC, "2020-11-28T17:06:22.401Z", 1.234156, 12.340097, 469.286376953125) a.expect(TrackPoint.Type.SEGMENT_START_AUTOMATIC, "2020-11-28T17:06:22.401Z", 1.234156, 12.340097, 469.286376953125)
.setAltitudeGain(0f), .setAltitudeGain(0f)
.setSpeed(Speed.of(0.539)),
a.expect(TrackPoint.Type.TRACKPOINT, "2020-11-28T17:06:25.448Z", 1.23415, 12.340036, 439.1626281738281) a.expect(TrackPoint.Type.TRACKPOINT, "2020-11-28T17:06:25.448Z", 1.23415, 12.340036, 439.1626281738281)
.setAltitudeGain(0f), .setAltitudeGain(0f)
.setSpeed(Speed.of(0.1577)),
a.expect(TrackPoint.Type.TRACKPOINT, "2020-11-28T17:06:47.888Z", 1.23405, 12.340057, 421.8070983886719) a.expect(TrackPoint.Type.TRACKPOINT, "2020-11-28T17:06:47.888Z", 1.23405, 12.340057, 421.8070983886719)
.setAltitudeGain(0f), .setAltitudeGain(0f)
.setSpeed(Speed.of(0)),
// created resume trackpoint with time of next valid trackpoint // created resume trackpoint with time of next valid trackpoint
a.expect(TrackPoint.Type.SEGMENT_START_AUTOMATIC, "2020-11-28T17:06:55.861Z", 1.23405, 12.340057, 419.93902587890625) a.expect(TrackPoint.Type.SEGMENT_START_AUTOMATIC, "2020-11-28T17:06:55.861Z", 1.23405, 12.340057, 419.93902587890625)
.setAltitudeGain(0f), .setAltitudeGain(0f)
.setSpeed(Speed.of(0)),
a.expect(TrackPoint.Type.TRACKPOINT, "2020-11-28T17:06:56.905Z", 1.23405, 12.340057, 419.9036560058594) a.expect(TrackPoint.Type.TRACKPOINT, "2020-11-28T17:06:56.905Z", 1.23405, 12.340057, 419.9036560058594)
.setAltitudeGain(0f), .setAltitudeGain(0f)
.setSpeed(Speed.of(0)),
a.expect(TrackPoint.Type.TRACKPOINT, "2020-11-28T17:07:20.870Z", 1.234046, 12.340082, 417.99432373046875) a.expect(TrackPoint.Type.TRACKPOINT, "2020-11-28T17:07:20.870Z", 1.234046, 12.340082, 417.99432373046875)
.setAltitudeGain(0f) .setAltitudeGain(0f)
.setSpeed(Speed.of(0))
), importedTrackPoints); ), importedTrackPoints);
} }
@@ -45,8 +45,7 @@ public class TrackPointAssert {
Assert.assertEquals(expected.getAltitudeLoss(), actual.getAltitudeLoss(), 0.001); Assert.assertEquals(expected.getAltitudeLoss(), actual.getAltitudeLoss(), 0.001);
} }
// TODO Speed is always computed even if none was exported, thus this assert fails for now; Assert.assertEquals(expected.hasSpeed(), actual.hasSpeed());
// Assert.assertEquals(expected.hasSpeed(), actual.hasSpeed());
if (expected.hasSpeed()) { if (expected.hasSpeed()) {
Assert.assertEquals(expected.getSpeed().toMPS(), actual.getSpeed().toMPS(), 0.001); Assert.assertEquals(expected.getSpeed().toMPS(), actual.getSpeed().toMPS(), 0.001);
} }
@@ -23,6 +23,7 @@ import java.util.List;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException; import java.util.concurrent.TimeoutException;
import de.dennisguse.opentracks.content.data.Speed;
import de.dennisguse.opentracks.content.data.TestDataUtil; import de.dennisguse.opentracks.content.data.TestDataUtil;
import de.dennisguse.opentracks.content.data.Track; import de.dennisguse.opentracks.content.data.Track;
import de.dennisguse.opentracks.content.data.TrackPoint; import de.dennisguse.opentracks.content.data.TrackPoint;
@@ -117,12 +118,18 @@ public class TrackRecordingServiceTestLocation {
.ignoreTime(); .ignoreTime();
a.assertEquals(List.of( a.assertEquals(List.of(
a.expect(TrackPoint.Type.SEGMENT_START_MANUAL), a.expect(TrackPoint.Type.SEGMENT_START_MANUAL),
a.expect(TrackPoint.Type.TRACKPOINT, 1), a.expect(TrackPoint.Type.TRACKPOINT, 1)
a.expect(TrackPoint.Type.TRACKPOINT, 2), .setSpeed(Speed.of(15)),
a.expect(TrackPoint.Type.TRACKPOINT, 3), a.expect(TrackPoint.Type.TRACKPOINT, 2)
a.expect(TrackPoint.Type.TRACKPOINT, 4), .setSpeed(Speed.of(15)),
a.expect(TrackPoint.Type.TRACKPOINT, 5), a.expect(TrackPoint.Type.TRACKPOINT, 3)
a.expect(TrackPoint.Type.TRACKPOINT, 6), .setSpeed(Speed.of(15)),
a.expect(TrackPoint.Type.TRACKPOINT, 4)
.setSpeed(Speed.of(15)),
a.expect(TrackPoint.Type.TRACKPOINT, 5)
.setSpeed(Speed.of(15)),
a.expect(TrackPoint.Type.TRACKPOINT, 6)
.setSpeed(Speed.of(15)),
a.expect(TrackPoint.Type.SEGMENT_END_MANUAL) a.expect(TrackPoint.Type.SEGMENT_END_MANUAL)
), trackPoints); ), trackPoints);
} }
@@ -152,8 +159,10 @@ public class TrackRecordingServiceTestLocation {
.ignoreTime(); .ignoreTime();
a.assertEquals(List.of( a.assertEquals(List.of(
a.expect(TrackPoint.Type.SEGMENT_START_MANUAL), a.expect(TrackPoint.Type.SEGMENT_START_MANUAL),
a.expect(TrackPoint.Type.TRACKPOINT, 1), a.expect(TrackPoint.Type.TRACKPOINT, 1)
a.expect(TrackPoint.Type.TRACKPOINT, 6), .setSpeed(Speed.of(15)),
a.expect(TrackPoint.Type.TRACKPOINT, 6)
.setSpeed(Speed.of(15)),
a.expect(TrackPoint.Type.SEGMENT_END_MANUAL) a.expect(TrackPoint.Type.SEGMENT_END_MANUAL)
), trackPoints); ), trackPoints);
} }
@@ -182,9 +191,12 @@ public class TrackRecordingServiceTestLocation {
.ignoreTime(); .ignoreTime();
a.assertEquals(List.of( a.assertEquals(List.of(
a.expect(TrackPoint.Type.SEGMENT_START_MANUAL), a.expect(TrackPoint.Type.SEGMENT_START_MANUAL),
a.expect(TrackPoint.Type.TRACKPOINT, 1), a.expect(TrackPoint.Type.TRACKPOINT, 1)
a.expect(TrackPoint.Type.TRACKPOINT, 2), .setSpeed(Speed.of(0)),
a.expect(TrackPoint.Type.TRACKPOINT, 6), a.expect(TrackPoint.Type.TRACKPOINT, 2) //TODO Why is this added? Systems is idle and not moving at all.
.setSpeed(Speed.of(0)),
a.expect(TrackPoint.Type.TRACKPOINT, 6)
.setSpeed(Speed.of(0)),
a.expect(TrackPoint.Type.SEGMENT_END_MANUAL) a.expect(TrackPoint.Type.SEGMENT_END_MANUAL)
), trackPoints); ), trackPoints);
} }
@@ -213,10 +225,14 @@ public class TrackRecordingServiceTestLocation {
.ignoreTime(); .ignoreTime();
a.assertEquals(List.of( a.assertEquals(List.of(
a.expect(TrackPoint.Type.SEGMENT_START_MANUAL), a.expect(TrackPoint.Type.SEGMENT_START_MANUAL),
a.expect(TrackPoint.Type.TRACKPOINT, 1), a.expect(TrackPoint.Type.TRACKPOINT, 1)
a.expect(TrackPoint.Type.TRACKPOINT, 2), .setSpeed(Speed.of(15)),
a.expect(TrackPoint.Type.TRACKPOINT, 5), //TODO Check why this trackPoint is inserted. a.expect(TrackPoint.Type.TRACKPOINT, 2) //TODO Check why this trackPoint is inserted.
a.expect(TrackPoint.Type.TRACKPOINT, 6), .setSpeed(Speed.of(0)),
a.expect(TrackPoint.Type.TRACKPOINT, 5) //TODO Check why this trackPoint is inserted.
.setSpeed(Speed.of(0)),
a.expect(TrackPoint.Type.TRACKPOINT, 6)
.setSpeed(Speed.of(15)),
a.expect(TrackPoint.Type.SEGMENT_END_MANUAL) a.expect(TrackPoint.Type.SEGMENT_END_MANUAL)
), trackPoints); ), trackPoints);
} }
@@ -260,12 +276,18 @@ public class TrackRecordingServiceTestLocation {
.ignoreTime(); .ignoreTime();
a.assertEquals(List.of( a.assertEquals(List.of(
a.expect(TrackPoint.Type.SEGMENT_START_MANUAL), a.expect(TrackPoint.Type.SEGMENT_START_MANUAL),
a.expect(TrackPoint.Type.TRACKPOINT, 1, 5f), a.expect(TrackPoint.Type.TRACKPOINT, 1, 5f)
a.expect(TrackPoint.Type.TRACKPOINT, 2, 5f), .setSpeed(Speed.of(0)),
a.expect(TrackPoint.Type.TRACKPOINT, 3, 5f), a.expect(TrackPoint.Type.TRACKPOINT, 2, 5f)
a.expect(TrackPoint.Type.TRACKPOINT, 4, 5f), .setSpeed(Speed.of(0)),
a.expect(TrackPoint.Type.TRACKPOINT, 5, 5f), a.expect(TrackPoint.Type.TRACKPOINT, 3, 5f)
a.expect(TrackPoint.Type.TRACKPOINT, 6, 5f), .setSpeed(Speed.of(0)),
a.expect(TrackPoint.Type.TRACKPOINT, 4, 5f)
.setSpeed(Speed.of(0)),
a.expect(TrackPoint.Type.TRACKPOINT, 5, 5f)
.setSpeed(Speed.of(0)),
a.expect(TrackPoint.Type.TRACKPOINT, 6, 5f)
.setSpeed(Speed.of(0)),
a.expecHeartrate(TrackPoint.Type.SEGMENT_END_MANUAL, 5f) a.expecHeartrate(TrackPoint.Type.SEGMENT_END_MANUAL, 5f)
), trackPoints); ), trackPoints);
} }
@@ -294,13 +316,18 @@ public class TrackRecordingServiceTestLocation {
.ignoreTime(); .ignoreTime();
a.assertEquals(List.of( a.assertEquals(List.of(
a.expect(TrackPoint.Type.SEGMENT_START_MANUAL), a.expect(TrackPoint.Type.SEGMENT_START_MANUAL),
a.expect(TrackPoint.Type.TRACKPOINT, 1), a.expect(TrackPoint.Type.TRACKPOINT, 1)
.setSpeed(Speed.of(0)),
a.expect(TrackPoint.Type.SEGMENT_START_AUTOMATIC, 2), a.expect(TrackPoint.Type.SEGMENT_START_AUTOMATIC, 2)
a.expect(TrackPoint.Type.TRACKPOINT, 3), .setSpeed(Speed.of(0)),
a.expect(TrackPoint.Type.TRACKPOINT, 3)
.setSpeed(Speed.of(0)),
a.expect(TrackPoint.Type.SEGMENT_START_AUTOMATIC, 4), a.expect(TrackPoint.Type.SEGMENT_START_AUTOMATIC, 4)
a.expect(TrackPoint.Type.TRACKPOINT, 5), .setSpeed(Speed.of(0)),
a.expect(TrackPoint.Type.TRACKPOINT, 5)
.setSpeed(Speed.of(0)),
a.expect(TrackPoint.Type.SEGMENT_END_MANUAL) a.expect(TrackPoint.Type.SEGMENT_END_MANUAL)
), trackPoints); ), trackPoints);
} }
@@ -164,9 +164,11 @@ public class IntervalStatistics {
time = time.plus(trackStatistics.getTotalTime()); time = time.plus(trackStatistics.getTotalTime());
gain_m = trackStatistics.hasTotalAltitudeGain() ? trackStatistics.getTotalAltitudeGain() : gain_m; gain_m = trackStatistics.hasTotalAltitudeGain() ? trackStatistics.getTotalAltitudeGain() : gain_m;
loss_m = trackStatistics.hasTotalAltitudeLoss() ? trackStatistics.getTotalAltitudeLoss() : loss_m; loss_m = trackStatistics.hasTotalAltitudeLoss() ? trackStatistics.getTotalAltitudeLoss() : loss_m;
if (lastTrackPoint != null) { if (gain_m != null && lastTrackPoint != null && lastTrackPoint.hasAltitudeGain()) {
gain_m = lastTrackPoint.hasAltitudeGain() ? gain_m - lastTrackPoint.getAltitudeGain() : gain_m; gain_m = gain_m - lastTrackPoint.getAltitudeGain();
loss_m = lastTrackPoint.hasAltitudeLoss() ? loss_m - lastTrackPoint.getAltitudeLoss() : loss_m; }
if (loss_m != null && lastTrackPoint != null && lastTrackPoint.hasAltitudeLoss()) {
loss_m = loss_m - lastTrackPoint.getAltitudeLoss();
} }
} }