diff --git a/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/GPXImportTest.java b/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/GPXImportTest.java index 66555f35e..9b2c5e54c 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/GPXImportTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/GPXImportTest.java @@ -14,6 +14,7 @@ import org.junit.runners.JUnit4; import java.io.IOException; import java.io.InputStream; +import java.time.Duration; import java.time.Instant; import java.util.List; @@ -23,6 +24,7 @@ import de.dennisguse.opentracks.content.data.TestDataUtil; import de.dennisguse.opentracks.content.data.Track; import de.dennisguse.opentracks.content.data.TrackPoint; import de.dennisguse.opentracks.content.provider.ContentProviderUtils; +import de.dennisguse.opentracks.stats.TrackStatistics; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; @@ -67,7 +69,7 @@ public class GPXImportTest { importTrackId = importer.importFile(inputStream).get(0); // then - // 1. track + // 2. track Track importedTrack = contentProviderUtils.getTrack(importTrackId); assertNotNull(importedTrack); assertEquals("the category", importedTrack.getCategory()); @@ -75,6 +77,8 @@ public class GPXImportTest { assertEquals("2021-01-07 22:51", importedTrack.getName()); assertEquals("UNKNOWN", importedTrack.getIcon()); + //TODO Check trackstatistics + // 3. trackpoints List importedTrackPoints = TestDataUtil.getTrackPoints(contentProviderUtils, importTrackId); assertEquals(6, importedTrackPoints.size()); @@ -106,4 +110,52 @@ public class GPXImportTest { .setAltitude(10) ), importedTrackPoints); } + + @LargeTest + @Test + public void gpx_without_speed() throws IOException { + // given + XMLImporter importer = new XMLImporter(new GpxTrackImporter(context, trackImporter)); + InputStream inputStream = InstrumentationRegistry.getInstrumentation().getContext().getResources().openRawResource(de.dennisguse.opentracks.debug.test.R.raw.gpx11_without_speed); + + // when + // 1. import + importTrackId = importer.importFile(inputStream).get(0); + + // then + // 2. track + Track importedTrack = contentProviderUtils.getTrack(importTrackId); + assertNotNull(importedTrack); + assertEquals("", importedTrack.getCategory()); + assertEquals("", importedTrack.getDescription()); + assertEquals("20210907_213924.gpx", importedTrack.getName()); + assertEquals("", importedTrack.getIcon()); + + // 3. trackstatistics + TrackStatistics trackStatistics = importedTrack.getTrackStatistics(); + assertEquals(1.44, trackStatistics.getMaxSpeed().toMPS(), 0.01); + assertEquals(Duration.ofSeconds(53), trackStatistics.getMovingTime()); + + // 4. trackpoints + List importedTrackPoints = TestDataUtil.getTrackPoints(contentProviderUtils, importTrackId); + assertEquals(3, importedTrackPoints.size()); + + TrackPointAssert a = new TrackPointAssert(); + a.assertEquals(List.of( + new TrackPoint(TrackPoint.Type.SEGMENT_START_AUTOMATIC, Instant.parse("2021-09-07T22:10:19Z")) + .setLatitude(30.14185982) + .setLongitude(-40.3863038) + .setAltitude(-5), + new TrackPoint(TrackPoint.Type.TRACKPOINT, Instant.parse("2021-09-07T22:11:07Z")) + .setLatitude(30.14184657) + .setLongitude(-40.38670089) + .setAltitude(-5) + .setSpeed(Speed.of(0.7976524233818054)), + new TrackPoint(TrackPoint.Type.TRACKPOINT, Instant.parse("2021-09-07T22:12:00Z")) + .setLatitude(30.14185982) + .setLongitude(-40.3863038) + .setAltitude(-5) + .setSpeed(Speed.of(0.7224021553993225)) + ), importedTrackPoints); + } } \ No newline at end of file diff --git a/src/androidTest/res/raw/gpx11_without_speed.gpx b/src/androidTest/res/raw/gpx11_without_speed.gpx new file mode 100644 index 000000000..e4bc20a43 --- /dev/null +++ b/src/androidTest/res/raw/gpx11_without_speed.gpx @@ -0,0 +1,23 @@ + + + + 20210907_213924.gpx + + + -5 + + 4 + + + -5 + + 4 + + + -5 + + 4 + + + + \ No newline at end of file diff --git a/src/main/java/de/dennisguse/opentracks/io/file/importer/TrackImporter.java b/src/main/java/de/dennisguse/opentracks/io/file/importer/TrackImporter.java index fc284a07c..930252f57 100644 --- a/src/main/java/de/dennisguse/opentracks/io/file/importer/TrackImporter.java +++ b/src/main/java/de/dennisguse/opentracks/io/file/importer/TrackImporter.java @@ -144,6 +144,8 @@ public class TrackImporter { return 0; }); + adjustTrackPoints(); + TrackStatisticsUpdater updater = new TrackStatisticsUpdater(); updater.addTrackPoints(trackPoints, recordingDistanceInterval); track.setTrackStatistics(updater.getTrackStatistics()); @@ -151,7 +153,6 @@ public class TrackImporter { Track.Id trackId = contentProviderUtils.insertTrack(track); // Store TrackPoints - adjustTrackPoints(); contentProviderUtils.bulkInsertTrackPoint(trackPoints, trackId); // Store Markers