From 21d1852505a45c2aa478829a6ffadb9301547a6c Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Fri, 8 Jul 2022 00:16:48 +0200 Subject: [PATCH] Test: import+export results in same timezone. Part of #1296. --- build.gradle | 2 +- .../file/importer/GPXTrackImporterTest.java | 34 ++++++++++++++ src/androidTest/res/raw/gpx_timezone.gpx | 45 +++++++++++++++++++ 3 files changed, 80 insertions(+), 1 deletion(-) create mode 100644 src/androidTest/res/raw/gpx_timezone.gpx diff --git a/build.gradle b/build.gradle index 81c9783d6..13ca16676 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ buildscript { mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:7.2.1' + classpath 'com.android.tools.build:gradle:7.3.0-beta04' } } diff --git a/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/GPXTrackImporterTest.java b/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/GPXTrackImporterTest.java index efb8c6bba..740399fe0 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/GPXTrackImporterTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/GPXTrackImporterTest.java @@ -15,11 +15,16 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; +import java.io.BufferedReader; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; +import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; import java.time.Duration; import java.time.Instant; import java.util.List; +import java.util.stream.Collectors; import de.dennisguse.opentracks.content.data.TestDataUtil; import de.dennisguse.opentracks.data.ContentProviderUtils; @@ -27,6 +32,8 @@ import de.dennisguse.opentracks.data.models.Distance; import de.dennisguse.opentracks.data.models.Speed; import de.dennisguse.opentracks.data.models.Track; import de.dennisguse.opentracks.data.models.TrackPoint; +import de.dennisguse.opentracks.io.file.TrackFileFormat; +import de.dennisguse.opentracks.io.file.exporter.TrackExporter; import de.dennisguse.opentracks.stats.TrackStatistics; /** @@ -208,4 +215,31 @@ public class GPXTrackImporterTest { .setSpeed(Speed.of(3)) ), importedTrackPoints); } + + @LargeTest + @Test + public void importExportTest_timezone() 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.gpx_timezone); + InputStream inputStreamExpected = InstrumentationRegistry.getInstrumentation().getContext().getResources().openRawResource(de.dennisguse.opentracks.debug.test.R.raw.gpx_timezone); + + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + + // when + // 1. import + importTrackId = importer.importFile(inputStream).get(0); + Track importedTrack = contentProviderUtils.getTrack(importTrackId); + + TrackExporter trackExporter = TrackFileFormat.GPX.createTrackExporter(context); + trackExporter.writeTrack(importedTrack, outputStream); + + // then + String expected = new BufferedReader( + new InputStreamReader(inputStreamExpected, StandardCharsets.UTF_8)) + .lines() + .collect(Collectors.joining("\n")) + "\n"; + + assertEquals(expected, outputStream.toString()); //TODO inputStream.readAllBytes() ? + } } \ No newline at end of file diff --git a/src/androidTest/res/raw/gpx_timezone.gpx b/src/androidTest/res/raw/gpx_timezone.gpx new file mode 100644 index 000000000..82bcef041 --- /dev/null +++ b/src/androidTest/res/raw/gpx_timezone.gpx @@ -0,0 +1,45 @@ + + + +10 + + + + + + + + + + +c0c0c0 +7002101e-4198-4613-8c24-544e01ca3981 + +0.0 +0 +0 +0 +0.0 +null +null + + + + +10 + + + + +