From 0a1f511f187fa0350e593c0fcf37e7a6a2a381cf Mon Sep 17 00:00:00 2001 From: Serge Helfrich Date: Fri, 15 May 2026 12:25:17 +0200 Subject: [PATCH 1/5] Add unit and instrumentation tests for utils and marker DAO --- .../opentopo/da/MarkerDaoInstrumentedTest.kt | 52 +++++++++++ .../opentopo/util/UtilsInstrumentedTest.kt | 26 ++++++ .../java/org/nitri/opentopo/util/UtilsTest.kt | 87 +++++++++++++++++++ 3 files changed, 165 insertions(+) create mode 100644 app/src/androidTest/java/org/nitri/opentopo/da/MarkerDaoInstrumentedTest.kt create mode 100644 app/src/androidTest/java/org/nitri/opentopo/util/UtilsInstrumentedTest.kt create mode 100644 app/src/test/java/org/nitri/opentopo/util/UtilsTest.kt diff --git a/app/src/androidTest/java/org/nitri/opentopo/da/MarkerDaoInstrumentedTest.kt b/app/src/androidTest/java/org/nitri/opentopo/da/MarkerDaoInstrumentedTest.kt new file mode 100644 index 0000000..988c06e --- /dev/null +++ b/app/src/androidTest/java/org/nitri/opentopo/da/MarkerDaoInstrumentedTest.kt @@ -0,0 +1,52 @@ +package org.nitri.opentopo.da + +import androidx.room.Room +import androidx.test.core.app.ApplicationProvider +import androidx.test.ext.junit.runners.AndroidJUnit4 +import kotlinx.coroutines.runBlocking +import org.junit.After +import org.junit.Assert.assertEquals +import org.junit.Assert.assertTrue +import org.junit.Before +import org.junit.Test +import org.junit.runner.RunWith +import org.nitri.opentopo.model.MarkerModel +import org.nitri.opentopo.overlay.OverlayDatabase + +@RunWith(AndroidJUnit4::class) +class MarkerDaoInstrumentedTest { + private lateinit var db: OverlayDatabase + private lateinit var dao: MarkerDao + + @Before fun setup() { + db = Room.inMemoryDatabaseBuilder(ApplicationProvider.getApplicationContext(), OverlayDatabase::class.java) + .allowMainThreadQueries().build() + dao = db.markerDao() + } + + @After fun teardown() { db.close() } + + @Test fun insertUpdateDeleteMarker_flowWorks() = runBlocking { + dao.insertMarker(MarkerModel(seq = 1, latitude = 1.0, longitude = 2.0, name = "A", description = "x")) + val inserted = dao.getAllMarkersNow() + assertEquals(1, inserted.size) + val updated = inserted.first().copy(name = "B") + dao.updateMarker(updated) + assertEquals("B", dao.getAllMarkersNow().first().name) + dao.deleteMarkerById(updated.id) + assertTrue(dao.getAllMarkersNow().isEmpty()) + } + + @Test fun deleteMarkersByIds_removesMultiple() = runBlocking { + dao.insertMarkers(listOf( + MarkerModel(seq = 1, latitude = 1.0, longitude = 1.0, name = "a", description = ""), + MarkerModel(seq = 2, latitude = 2.0, longitude = 2.0, name = "b", description = ""), + MarkerModel(seq = 3, latitude = 3.0, longitude = 3.0, name = "c", description = "") + )) + val all = dao.getAllMarkersNow() + dao.deleteMarkersByIds(listOf(all[0].id, all[1].id)) + val remaining = dao.getAllMarkersNow() + assertEquals(1, remaining.size) + assertEquals("c", remaining.first().name) + } +} diff --git a/app/src/androidTest/java/org/nitri/opentopo/util/UtilsInstrumentedTest.kt b/app/src/androidTest/java/org/nitri/opentopo/util/UtilsInstrumentedTest.kt new file mode 100644 index 0000000..55bbc6b --- /dev/null +++ b/app/src/androidTest/java/org/nitri/opentopo/util/UtilsInstrumentedTest.kt @@ -0,0 +1,26 @@ +package org.nitri.opentopo.util + +import androidx.test.core.app.ApplicationProvider +import androidx.test.ext.junit.runners.AndroidJUnit4 +import org.junit.Assert.assertEquals +import org.junit.Assert.assertNotNull +import org.junit.Test +import org.junit.runner.RunWith +import org.nitri.opentopo.R + +@RunWith(AndroidJUnit4::class) +class UtilsInstrumentedTest { + + @Test + fun getBitmapFromDrawable_returnsBitmapWithIntrinsicDimensions() { + val context = ApplicationProvider.getApplicationContext() + val drawable = androidx.appcompat.content.res.AppCompatResources.getDrawable(context, R.drawable.ic_action_layers) + requireNotNull(drawable) + + val bitmap = Utils.getBitmapFromDrawable(context, R.drawable.ic_action_layers) + + assertNotNull(bitmap) + assertEquals(drawable.intrinsicWidth, bitmap.width) + assertEquals(drawable.intrinsicHeight, bitmap.height) + } +} diff --git a/app/src/test/java/org/nitri/opentopo/util/UtilsTest.kt b/app/src/test/java/org/nitri/opentopo/util/UtilsTest.kt new file mode 100644 index 0000000..3299235 --- /dev/null +++ b/app/src/test/java/org/nitri/opentopo/util/UtilsTest.kt @@ -0,0 +1,87 @@ +package org.nitri.opentopo.util + +import io.ticofab.androidgpxparser.parser.domain.Gpx +import io.ticofab.androidgpxparser.parser.domain.Route +import io.ticofab.androidgpxparser.parser.domain.RoutePoint +import io.ticofab.androidgpxparser.parser.domain.Track +import io.ticofab.androidgpxparser.parser.domain.TrackPoint +import io.ticofab.androidgpxparser.parser.domain.TrackSegment +import io.ticofab.androidgpxparser.parser.domain.WayPoint +import org.junit.Assert.assertEquals +import org.junit.Assert.assertSame +import org.junit.Assert.assertTrue +import org.junit.Test + +class UtilsTest { + @Test + fun area_usesTrackPointsWhenPresent() { + val trackPoints = listOf( + TrackPoint.Builder().setLatitude(10.0).setLongitude(20.0).build() as TrackPoint, + TrackPoint.Builder().setLatitude(12.0).setLongitude(18.0).build() as TrackPoint, + TrackPoint.Builder().setLatitude(8.0).setLongitude(25.0).build() as TrackPoint + ) + val gpx = Gpx.Builder() + .setTracks(listOf(Track.Builder().setTrackSegments(listOf(TrackSegment.Builder().setTrackPoints(trackPoints).build())).build())) + .build() + val bounds = Utils.area(gpx) + assertEquals(12.0, bounds.latNorth, 0.0) + assertEquals(8.0, bounds.latSouth, 0.0) + assertEquals(25.0, bounds.lonEast, 0.0) + assertEquals(18.0, bounds.lonWest, 0.0) + } + + @Test + fun getWayPointTypes_returnsSortedDistinctTypes() { + val points = listOf( + WayPoint.Builder().setType("summit").build(), + WayPoint.Builder().setType("cafe").build(), + WayPoint.Builder().setType("").build(), + WayPoint.Builder().setType("summit").build() + ) + val gpx = Gpx.Builder().setWayPoints(points).build() + val types = Utils.getWayPointTypes(gpx, "default") + assertEquals(listOf("cafe", "default", "summit"), types) + } + + @Test + fun getWayPointsByType_filtersCorrectly() { + val summit = WayPoint.Builder().setType("summit").build() + val blank = WayPoint.Builder().setType("").build() + val gpx = Gpx.Builder().setWayPoints(listOf(summit, blank)).build() + assertEquals(1, Utils.getWayPointsByType(gpx, "summit").size) + assertEquals(1, Utils.getWayPointsByType(gpx, "").size) + } + + @Test + fun convertRouteToTrack_createsSyntheticTrackWhenNoTrackExists() { + val routePoints = listOf( + RoutePoint.Builder().setLatitude(1.0).setLongitude(2.0).setDesc("a").build(), + RoutePoint.Builder().setLatitude(3.0).setLongitude(4.0).setDesc("b").build() + ) + val gpx = Gpx.Builder().setRoutes(listOf(Route.Builder().setRoutePoints(routePoints).build())).build() + val converted = Utils.convertRouteToTrack(gpx) + assertEquals(1, converted.tracks?.size) + assertEquals(2, converted.tracks?.first()?.trackSegments?.first()?.trackPoints?.size) + assertTrue(converted.routes?.isNotEmpty() == true) + } + + @Test + fun convertRouteToTrack_returnsOriginalWhenTrackPresent() { + val gpx = Gpx.Builder().setTracks(listOf(Track.Builder().setTrackSegments(emptyList()).build())).build() + val converted = Utils.convertRouteToTrack(gpx) + assertSame(gpx, converted) + } + + @Test + fun elevationFromNmea_validSentenceReturnsElevation() { + val nmea = "\$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,100.0,M,46.9,M,,*47" + val elevation = Utils.elevationFromNmea(nmea) + assertEquals(100.0, elevation, 0.0) + } + + @Test + fun elevationFromNmea_invalidSentenceReturnsNoElevationValue() { + val elevation = Utils.elevationFromNmea("INVALID") + assertEquals(Utils.NO_ELEVATION_VALUE.toDouble(), elevation, 0.0) + } +} From cfcf649e0e08075d0bae6e62f8385aa2c9985ed0 Mon Sep 17 00:00:00 2001 From: Serge Helfrich Date: Fri, 15 May 2026 12:33:14 +0200 Subject: [PATCH 2/5] Fix GPX domain builder typings in Utils tests --- .../java/org/nitri/opentopo/util/UtilsTest.kt | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/app/src/test/java/org/nitri/opentopo/util/UtilsTest.kt b/app/src/test/java/org/nitri/opentopo/util/UtilsTest.kt index 3299235..e6f68ad 100644 --- a/app/src/test/java/org/nitri/opentopo/util/UtilsTest.kt +++ b/app/src/test/java/org/nitri/opentopo/util/UtilsTest.kt @@ -33,10 +33,10 @@ class UtilsTest { @Test fun getWayPointTypes_returnsSortedDistinctTypes() { val points = listOf( - WayPoint.Builder().setType("summit").build(), - WayPoint.Builder().setType("cafe").build(), - WayPoint.Builder().setType("").build(), - WayPoint.Builder().setType("summit").build() + WayPoint.Builder().setType("summit").build() as WayPoint, + WayPoint.Builder().setType("cafe").build() as WayPoint, + WayPoint.Builder().setType("").build() as WayPoint, + WayPoint.Builder().setType("summit").build() as WayPoint ) val gpx = Gpx.Builder().setWayPoints(points).build() val types = Utils.getWayPointTypes(gpx, "default") @@ -45,8 +45,8 @@ class UtilsTest { @Test fun getWayPointsByType_filtersCorrectly() { - val summit = WayPoint.Builder().setType("summit").build() - val blank = WayPoint.Builder().setType("").build() + val summit = WayPoint.Builder().setType("summit").build() as WayPoint + val blank = WayPoint.Builder().setType("").build() as WayPoint val gpx = Gpx.Builder().setWayPoints(listOf(summit, blank)).build() assertEquals(1, Utils.getWayPointsByType(gpx, "summit").size) assertEquals(1, Utils.getWayPointsByType(gpx, "").size) @@ -55,8 +55,8 @@ class UtilsTest { @Test fun convertRouteToTrack_createsSyntheticTrackWhenNoTrackExists() { val routePoints = listOf( - RoutePoint.Builder().setLatitude(1.0).setLongitude(2.0).setDesc("a").build(), - RoutePoint.Builder().setLatitude(3.0).setLongitude(4.0).setDesc("b").build() + RoutePoint.Builder().setLatitude(1.0).setLongitude(2.0).setDesc("a").build() as RoutePoint, + RoutePoint.Builder().setLatitude(3.0).setLongitude(4.0).setDesc("b").build() as RoutePoint ) val gpx = Gpx.Builder().setRoutes(listOf(Route.Builder().setRoutePoints(routePoints).build())).build() val converted = Utils.convertRouteToTrack(gpx) From e7a6dacd82e9722d86bbbf48b0757dcfba1c4695 Mon Sep 17 00:00:00 2001 From: Serge Helfrich Date: Fri, 15 May 2026 12:46:37 +0200 Subject: [PATCH 3/5] Stabilize Utils tests for JVM and GPX builder behavior --- .../opentopo/util/UtilsInstrumentedTest.kt | 18 ++++++- .../java/org/nitri/opentopo/util/UtilsTest.kt | 50 +++++++++++-------- 2 files changed, 45 insertions(+), 23 deletions(-) diff --git a/app/src/androidTest/java/org/nitri/opentopo/util/UtilsInstrumentedTest.kt b/app/src/androidTest/java/org/nitri/opentopo/util/UtilsInstrumentedTest.kt index 55bbc6b..f7c6225 100644 --- a/app/src/androidTest/java/org/nitri/opentopo/util/UtilsInstrumentedTest.kt +++ b/app/src/androidTest/java/org/nitri/opentopo/util/UtilsInstrumentedTest.kt @@ -1,5 +1,6 @@ package org.nitri.opentopo.util +import androidx.appcompat.content.res.AppCompatResources import androidx.test.core.app.ApplicationProvider import androidx.test.ext.junit.runners.AndroidJUnit4 import org.junit.Assert.assertEquals @@ -14,13 +15,26 @@ class UtilsInstrumentedTest { @Test fun getBitmapFromDrawable_returnsBitmapWithIntrinsicDimensions() { val context = ApplicationProvider.getApplicationContext() - val drawable = androidx.appcompat.content.res.AppCompatResources.getDrawable(context, R.drawable.ic_action_layers) + val drawable = AppCompatResources.getDrawable(context, R.drawable.ic_action_layers) requireNotNull(drawable) - val bitmap = Utils.getBitmapFromDrawable(context, R.drawable.ic_action_layers) + val bitmap = Utils.getBitmapFromDrawable(context, R.drawable.ic_action_layers, 255) assertNotNull(bitmap) assertEquals(drawable.intrinsicWidth, bitmap.width) assertEquals(drawable.intrinsicHeight, bitmap.height) } + + @Test + fun elevationFromNmea_validSentenceReturnsElevation() { + val nmea = "\$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,100.0,M,46.9,M,,*47" + val elevation = Utils.elevationFromNmea(nmea) + assertEquals(100.0, elevation, 0.0) + } + + @Test + fun elevationFromNmea_invalidSentenceReturnsNoElevationValue() { + val elevation = Utils.elevationFromNmea("INVALID") + assertEquals(Utils.NO_ELEVATION_VALUE.toDouble(), elevation, 0.0) + } } diff --git a/app/src/test/java/org/nitri/opentopo/util/UtilsTest.kt b/app/src/test/java/org/nitri/opentopo/util/UtilsTest.kt index e6f68ad..77664ce 100644 --- a/app/src/test/java/org/nitri/opentopo/util/UtilsTest.kt +++ b/app/src/test/java/org/nitri/opentopo/util/UtilsTest.kt @@ -13,6 +13,19 @@ import org.junit.Assert.assertTrue import org.junit.Test class UtilsTest { + + private fun buildGpx( + tracks: List = emptyList(), + routes: List = emptyList(), + wayPoints: List = emptyList() + ): Gpx { + return Gpx.Builder() + .setTracks(tracks) + .setRoutes(routes) + .setWayPoints(wayPoints) + .build() + } + @Test fun area_usesTrackPointsWhenPresent() { val trackPoints = listOf( @@ -20,10 +33,12 @@ class UtilsTest { TrackPoint.Builder().setLatitude(12.0).setLongitude(18.0).build() as TrackPoint, TrackPoint.Builder().setLatitude(8.0).setLongitude(25.0).build() as TrackPoint ) - val gpx = Gpx.Builder() - .setTracks(listOf(Track.Builder().setTrackSegments(listOf(TrackSegment.Builder().setTrackPoints(trackPoints).build())).build())) + val track = Track.Builder() + .setTrackSegments(listOf(TrackSegment.Builder().setTrackPoints(trackPoints).build())) .build() - val bounds = Utils.area(gpx) + + val bounds = Utils.area(buildGpx(tracks = listOf(track))) + assertEquals(12.0, bounds.latNorth, 0.0) assertEquals(8.0, bounds.latSouth, 0.0) assertEquals(25.0, bounds.lonEast, 0.0) @@ -38,8 +53,7 @@ class UtilsTest { WayPoint.Builder().setType("").build() as WayPoint, WayPoint.Builder().setType("summit").build() as WayPoint ) - val gpx = Gpx.Builder().setWayPoints(points).build() - val types = Utils.getWayPointTypes(gpx, "default") + val types = Utils.getWayPointTypes(buildGpx(wayPoints = points), "default") assertEquals(listOf("cafe", "default", "summit"), types) } @@ -47,7 +61,8 @@ class UtilsTest { fun getWayPointsByType_filtersCorrectly() { val summit = WayPoint.Builder().setType("summit").build() as WayPoint val blank = WayPoint.Builder().setType("").build() as WayPoint - val gpx = Gpx.Builder().setWayPoints(listOf(summit, blank)).build() + val gpx = buildGpx(wayPoints = listOf(summit, blank)) + assertEquals(1, Utils.getWayPointsByType(gpx, "summit").size) assertEquals(1, Utils.getWayPointsByType(gpx, "").size) } @@ -58,8 +73,11 @@ class UtilsTest { RoutePoint.Builder().setLatitude(1.0).setLongitude(2.0).setDesc("a").build() as RoutePoint, RoutePoint.Builder().setLatitude(3.0).setLongitude(4.0).setDesc("b").build() as RoutePoint ) - val gpx = Gpx.Builder().setRoutes(listOf(Route.Builder().setRoutePoints(routePoints).build())).build() + val route = Route.Builder().setRoutePoints(routePoints).build() + val gpx = buildGpx(routes = listOf(route)) + val converted = Utils.convertRouteToTrack(gpx) + assertEquals(1, converted.tracks?.size) assertEquals(2, converted.tracks?.first()?.trackSegments?.first()?.trackPoints?.size) assertTrue(converted.routes?.isNotEmpty() == true) @@ -67,21 +85,11 @@ class UtilsTest { @Test fun convertRouteToTrack_returnsOriginalWhenTrackPresent() { - val gpx = Gpx.Builder().setTracks(listOf(Track.Builder().setTrackSegments(emptyList()).build())).build() - val converted = Utils.convertRouteToTrack(gpx) - assertSame(gpx, converted) - } + val existingTrack = Track.Builder().setTrackSegments(emptyList()).build() + val gpx = buildGpx(tracks = listOf(existingTrack)) - @Test - fun elevationFromNmea_validSentenceReturnsElevation() { - val nmea = "\$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,100.0,M,46.9,M,,*47" - val elevation = Utils.elevationFromNmea(nmea) - assertEquals(100.0, elevation, 0.0) - } + val converted = Utils.convertRouteToTrack(gpx) - @Test - fun elevationFromNmea_invalidSentenceReturnsNoElevationValue() { - val elevation = Utils.elevationFromNmea("INVALID") - assertEquals(Utils.NO_ELEVATION_VALUE.toDouble(), elevation, 0.0) + assertSame(gpx, converted) } } From 30eed7e4f491e5a94afce93c006ebc7e29143177 Mon Sep 17 00:00:00 2001 From: Serge Helfrich Date: Fri, 15 May 2026 12:52:24 +0200 Subject: [PATCH 4/5] Move TextUtils-dependent Utils tests to instrumentation --- .../opentopo/util/UtilsInstrumentedTest.kt | 24 ++++++++++ .../java/org/nitri/opentopo/util/UtilsTest.kt | 47 ++----------------- 2 files changed, 28 insertions(+), 43 deletions(-) diff --git a/app/src/androidTest/java/org/nitri/opentopo/util/UtilsInstrumentedTest.kt b/app/src/androidTest/java/org/nitri/opentopo/util/UtilsInstrumentedTest.kt index f7c6225..b5f7103 100644 --- a/app/src/androidTest/java/org/nitri/opentopo/util/UtilsInstrumentedTest.kt +++ b/app/src/androidTest/java/org/nitri/opentopo/util/UtilsInstrumentedTest.kt @@ -3,6 +3,8 @@ package org.nitri.opentopo.util import androidx.appcompat.content.res.AppCompatResources import androidx.test.core.app.ApplicationProvider import androidx.test.ext.junit.runners.AndroidJUnit4 +import io.ticofab.androidgpxparser.parser.domain.Gpx +import io.ticofab.androidgpxparser.parser.domain.WayPoint import org.junit.Assert.assertEquals import org.junit.Assert.assertNotNull import org.junit.Test @@ -37,4 +39,26 @@ class UtilsInstrumentedTest { val elevation = Utils.elevationFromNmea("INVALID") assertEquals(Utils.NO_ELEVATION_VALUE.toDouble(), elevation, 0.0) } + + @Test + fun getWayPointTypes_returnsSortedDistinctTypes() { + val points = listOf( + WayPoint.Builder().setType("summit").build() as WayPoint, + WayPoint.Builder().setType("cafe").build() as WayPoint, + WayPoint.Builder().setType("").build() as WayPoint, + WayPoint.Builder().setType("summit").build() as WayPoint + ) + val gpx = Gpx.Builder().setTracks(emptyList()).setRoutes(emptyList()).setWayPoints(points).build() + val types = Utils.getWayPointTypes(gpx, "default") + assertEquals(listOf("cafe", "default", "summit"), types) + } + + @Test + fun getWayPointsByType_filtersCorrectly() { + val summit = WayPoint.Builder().setType("summit").build() as WayPoint + val blank = WayPoint.Builder().setType("").build() as WayPoint + val gpx = Gpx.Builder().setTracks(emptyList()).setRoutes(emptyList()).setWayPoints(listOf(summit, blank)).build() + assertEquals(1, Utils.getWayPointsByType(gpx, "summit").size) + assertEquals(1, Utils.getWayPointsByType(gpx, "").size) + } } diff --git a/app/src/test/java/org/nitri/opentopo/util/UtilsTest.kt b/app/src/test/java/org/nitri/opentopo/util/UtilsTest.kt index 77664ce..e801d5a 100644 --- a/app/src/test/java/org/nitri/opentopo/util/UtilsTest.kt +++ b/app/src/test/java/org/nitri/opentopo/util/UtilsTest.kt @@ -13,18 +13,11 @@ import org.junit.Assert.assertTrue import org.junit.Test class UtilsTest { - private fun buildGpx( tracks: List = emptyList(), routes: List = emptyList(), wayPoints: List = emptyList() - ): Gpx { - return Gpx.Builder() - .setTracks(tracks) - .setRoutes(routes) - .setWayPoints(wayPoints) - .build() - } + ): Gpx = Gpx.Builder().setTracks(tracks).setRoutes(routes).setWayPoints(wayPoints).build() @Test fun area_usesTrackPointsWhenPresent() { @@ -33,40 +26,14 @@ class UtilsTest { TrackPoint.Builder().setLatitude(12.0).setLongitude(18.0).build() as TrackPoint, TrackPoint.Builder().setLatitude(8.0).setLongitude(25.0).build() as TrackPoint ) - val track = Track.Builder() - .setTrackSegments(listOf(TrackSegment.Builder().setTrackPoints(trackPoints).build())) - .build() - + val track = Track.Builder().setTrackSegments(listOf(TrackSegment.Builder().setTrackPoints(trackPoints).build())).build() val bounds = Utils.area(buildGpx(tracks = listOf(track))) - assertEquals(12.0, bounds.latNorth, 0.0) assertEquals(8.0, bounds.latSouth, 0.0) assertEquals(25.0, bounds.lonEast, 0.0) assertEquals(18.0, bounds.lonWest, 0.0) } - @Test - fun getWayPointTypes_returnsSortedDistinctTypes() { - val points = listOf( - WayPoint.Builder().setType("summit").build() as WayPoint, - WayPoint.Builder().setType("cafe").build() as WayPoint, - WayPoint.Builder().setType("").build() as WayPoint, - WayPoint.Builder().setType("summit").build() as WayPoint - ) - val types = Utils.getWayPointTypes(buildGpx(wayPoints = points), "default") - assertEquals(listOf("cafe", "default", "summit"), types) - } - - @Test - fun getWayPointsByType_filtersCorrectly() { - val summit = WayPoint.Builder().setType("summit").build() as WayPoint - val blank = WayPoint.Builder().setType("").build() as WayPoint - val gpx = buildGpx(wayPoints = listOf(summit, blank)) - - assertEquals(1, Utils.getWayPointsByType(gpx, "summit").size) - assertEquals(1, Utils.getWayPointsByType(gpx, "").size) - } - @Test fun convertRouteToTrack_createsSyntheticTrackWhenNoTrackExists() { val routePoints = listOf( @@ -74,10 +41,7 @@ class UtilsTest { RoutePoint.Builder().setLatitude(3.0).setLongitude(4.0).setDesc("b").build() as RoutePoint ) val route = Route.Builder().setRoutePoints(routePoints).build() - val gpx = buildGpx(routes = listOf(route)) - - val converted = Utils.convertRouteToTrack(gpx) - + val converted = Utils.convertRouteToTrack(buildGpx(routes = listOf(route))) assertEquals(1, converted.tracks?.size) assertEquals(2, converted.tracks?.first()?.trackSegments?.first()?.trackPoints?.size) assertTrue(converted.routes?.isNotEmpty() == true) @@ -87,9 +51,6 @@ class UtilsTest { fun convertRouteToTrack_returnsOriginalWhenTrackPresent() { val existingTrack = Track.Builder().setTrackSegments(emptyList()).build() val gpx = buildGpx(tracks = listOf(existingTrack)) - - val converted = Utils.convertRouteToTrack(gpx) - - assertSame(gpx, converted) + assertSame(gpx, Utils.convertRouteToTrack(gpx)) } } From 3bde1e5b5eb361e181a2e340c18634dcfabfc9f9 Mon Sep 17 00:00:00 2001 From: Pygmalion69 Date: Fri, 15 May 2026 12:59:03 +0200 Subject: [PATCH 5/5] Tidy up --- .../nitri/opentopo/ExampleInstrumentedTest.kt | 23 ------------------- .../org/nitri/opentopo/ExampleUnitTest.java | 17 -------------- .../{ => util}/DistanceCalculatorTest.kt | 11 ++++----- 3 files changed, 5 insertions(+), 46 deletions(-) delete mode 100644 app/src/androidTest/java/org/nitri/opentopo/ExampleInstrumentedTest.kt delete mode 100644 app/src/test/java/org/nitri/opentopo/ExampleUnitTest.java rename app/src/test/java/org/nitri/opentopo/{ => util}/DistanceCalculatorTest.kt (74%) diff --git a/app/src/androidTest/java/org/nitri/opentopo/ExampleInstrumentedTest.kt b/app/src/androidTest/java/org/nitri/opentopo/ExampleInstrumentedTest.kt deleted file mode 100644 index 19dfb8a..0000000 --- a/app/src/androidTest/java/org/nitri/opentopo/ExampleInstrumentedTest.kt +++ /dev/null @@ -1,23 +0,0 @@ -package org.nitri.opentopo - -import android.content.Context -import androidx.test.core.app.ApplicationProvider -import androidx.test.ext.junit.runners.AndroidJUnit4 -import org.junit.Assert -import org.junit.Test -import org.junit.runner.RunWith - -/** - * Instrumented test, which will execute on an Android device. - * - * @see [Testing documentation](http://d.android.com/tools/testing) - */ -@RunWith(AndroidJUnit4::class) -class ExampleInstrumentedTest { - @Test - fun useAppContext() { - // Context of the app under test. - val appContext = ApplicationProvider.getApplicationContext() - Assert.assertEquals("org.nitri.opentopo", appContext.packageName) - } -} diff --git a/app/src/test/java/org/nitri/opentopo/ExampleUnitTest.java b/app/src/test/java/org/nitri/opentopo/ExampleUnitTest.java deleted file mode 100644 index f6b9976..0000000 --- a/app/src/test/java/org/nitri/opentopo/ExampleUnitTest.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.nitri.opentopo; - -import org.junit.Test; - -import static org.junit.Assert.*; - -/** - * Example local unit test, which will execute on the development machine (host). - * - * @see Testing documentation - */ -public class ExampleUnitTest { - @Test - public void addition_isCorrect() { - assertEquals(4, 2 + 2); - } -} \ No newline at end of file diff --git a/app/src/test/java/org/nitri/opentopo/DistanceCalculatorTest.kt b/app/src/test/java/org/nitri/opentopo/util/DistanceCalculatorTest.kt similarity index 74% rename from app/src/test/java/org/nitri/opentopo/DistanceCalculatorTest.kt rename to app/src/test/java/org/nitri/opentopo/util/DistanceCalculatorTest.kt index f630b89..61494a2 100644 --- a/app/src/test/java/org/nitri/opentopo/DistanceCalculatorTest.kt +++ b/app/src/test/java/org/nitri/opentopo/util/DistanceCalculatorTest.kt @@ -1,8 +1,7 @@ -package org.nitri.opentopo +package org.nitri.opentopo.util -import org.junit.Assert.assertEquals +import org.junit.Assert import org.junit.Test -import org.nitri.opentopo.util.DistanceCalculator class DistanceCalculatorTest { @@ -13,7 +12,7 @@ class DistanceCalculatorTest { val distance = DistanceCalculator.distance(latitude, longitude, latitude, longitude) - assertEquals(0.0, distance, 0.0) + Assert.assertEquals(0.0, distance, 0.0) } @Test @@ -28,6 +27,6 @@ class DistanceCalculatorTest { val expectedDistanceMeters = 343_556.0 val toleranceMeters = 1_000.0 - assertEquals(expectedDistanceMeters, distance, toleranceMeters) + Assert.assertEquals(expectedDistanceMeters, distance, toleranceMeters) } -} +} \ No newline at end of file