This commit is contained in:
Dennis Guse
2020-12-25 18:29:56 +01:00
parent a689b6eb2c
commit 577b978a5c
7 changed files with 30 additions and 50 deletions
@@ -7,6 +7,8 @@ import android.util.Pair;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import de.dennisguse.opentracks.content.provider.ContentProviderUtils; import de.dennisguse.opentracks.content.provider.ContentProviderUtils;
import de.dennisguse.opentracks.util.FileUtils; import de.dennisguse.opentracks.util.FileUtils;
@@ -36,19 +38,19 @@ public class TestDataUtil {
* @param trackId the trackId of the track * @param trackId the trackId of the track
* @param numPoints the trackPoints number in the track * @param numPoints the trackPoints number in the track
*/ */
public static Pair<Track, TrackPoint[]> createTrack(Track.Id trackId, int numPoints) { public static Pair<Track, List<TrackPoint>> createTrack(Track.Id trackId, int numPoints) {
Track track = createTrack(trackId); Track track = createTrack(trackId);
TrackPoint[] trackPoints = new TrackPoint[numPoints]; List<TrackPoint> trackPoints = new ArrayList<>(numPoints);
for (int i = 0; i < numPoints; i++) { for (int i = 0; i < numPoints; i++) {
trackPoints[i] = createTrackPoint(i); trackPoints.add(createTrackPoint(i));
} }
return new Pair<>(track, trackPoints); return new Pair<>(track, trackPoints);
} }
public static Track createTrackAndInsert(ContentProviderUtils contentProviderUtils, Track.Id trackId, int numPoints) { public static Track createTrackAndInsert(ContentProviderUtils contentProviderUtils, Track.Id trackId, int numPoints) {
Pair<Track, TrackPoint[]> pair = createTrack(trackId, numPoints); Pair<Track, List<TrackPoint>> pair = createTrack(trackId, numPoints);
insertTrackWithLocations(contentProviderUtils, pair.first, pair.second); insertTrackWithLocations(contentProviderUtils, pair.first, pair.second);
@@ -83,7 +85,7 @@ public class TestDataUtil {
* @param track track to be inserted * @param track track to be inserted
* @param trackPoints trackPoints to be inserted * @param trackPoints trackPoints to be inserted
*/ */
public static void insertTrackWithLocations(ContentProviderUtils contentProviderUtils, Track track, TrackPoint[] trackPoints) { public static void insertTrackWithLocations(ContentProviderUtils contentProviderUtils, Track track, List<TrackPoint> trackPoints) {
contentProviderUtils.insertTrack(track); contentProviderUtils.insertTrack(track);
contentProviderUtils.bulkInsertTrackPoint(trackPoints, track.getId()); contentProviderUtils.bulkInsertTrackPoint(trackPoints, track.getId());
} }
@@ -34,7 +34,6 @@ import org.mockito.junit.MockitoJUnitRunner;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.UUID; import java.util.UUID;
@@ -64,6 +63,7 @@ import static org.mockito.Mockito.when;
*/ */
@RunWith(MockitoJUnitRunner.class) @RunWith(MockitoJUnitRunner.class)
public class CustomContentProviderUtilsTest { public class CustomContentProviderUtilsTest {
private static final String NAME_PREFIX = "test name"; private static final String NAME_PREFIX = "test name";
private static final String MOCK_DESC = "Mock Next Marker Desc!"; private static final String MOCK_DESC = "Mock Next Marker Desc!";
private static final String TEST_DESC = "Test Desc!"; private static final String TEST_DESC = "Test Desc!";
@@ -131,14 +131,14 @@ public class CustomContentProviderUtilsTest {
track = contentProviderUtils.getTrack(id); track = contentProviderUtils.getTrack(id);
assertNotNull(track); assertNotNull(track);
TrackPoint[] trackPoints = new TrackPoint[numPoints]; List<TrackPoint> trackPoints = new ArrayList<>(numPoints);
for (int i = 0; i < numPoints; ++i) { for (int i = 0; i < numPoints; ++i) {
Location loc = new Location("test"); Location loc = new Location("test");
loc.setLatitude(37.0 + (double) i / 10000.0); loc.setLatitude(37.0 + (double) i / 10000.0);
loc.setLongitude(57.0 - (double) i / 10000.0); loc.setLongitude(57.0 - (double) i / 10000.0);
loc.setAccuracy((float) i / 100.0f); loc.setAccuracy((float) i / 100.0f);
loc.setAltitude(i * 2.5); loc.setAltitude(i * 2.5);
trackPoints[i] = new TrackPoint(loc); trackPoints.add(new TrackPoint(loc));
} }
contentProviderUtils.bulkInsertTrackPoint(trackPoints, id); contentProviderUtils.bulkInsertTrackPoint(trackPoints, id);
@@ -420,7 +420,7 @@ public class CustomContentProviderUtilsTest {
@Test @Test
public void testCreateContentValues_marker() { public void testCreateContentValues_marker() {
Track.Id trackId = new Track.Id(System.currentTimeMillis()); Track.Id trackId = new Track.Id(System.currentTimeMillis());
Pair<Track, TrackPoint[]> track = TestDataUtil.createTrack(trackId, 10); Pair<Track, List<TrackPoint>> track = TestDataUtil.createTrack(trackId, 10);
// Bottom // Bottom
long startTime = 1000L; long startTime = 1000L;
@@ -439,7 +439,7 @@ public class CustomContentProviderUtilsTest {
track.first.setTrackStatistics(statistics); track.first.setTrackStatistics(statistics);
contentProviderUtils.insertTrack(track.first); contentProviderUtils.insertTrack(track.first);
Marker marker = new Marker(trackId, track.second[0]); Marker marker = new Marker(trackId, track.second.get(0));
marker.setDescription(TEST_DESC); marker.setDescription(TEST_DESC);
contentProviderUtils.insertMarker(marker); contentProviderUtils.insertMarker(marker);
@@ -754,19 +754,19 @@ public class CustomContentProviderUtilsTest {
} }
/** /**
* Tests the method {@link ContentProviderUtils#bulkInsertTrackPoint(TrackPoint[], Track.Id)}. * Tests the method {@link ContentProviderUtils#bulkInsertTrackPoint(List, Track.Id)}.
*/ */
@Test @Test
public void testBulkInsertTrackPoint() { public void testBulkInsertTrackPoint() {
// given // given
Track.Id trackId = new Track.Id(System.currentTimeMillis()); Track.Id trackId = new Track.Id(System.currentTimeMillis());
Pair<Track, TrackPoint[]> track = TestDataUtil.createTrack(trackId, 10); Pair<Track, List<TrackPoint>> track = TestDataUtil.createTrack(trackId, 10);
TestDataUtil.insertTrackWithLocations(contentProviderUtils, track.first, track.second); TestDataUtil.insertTrackWithLocations(contentProviderUtils, track.first, track.second);
// when / then // when / then
contentProviderUtils.bulkInsertTrackPoint(track.second, trackId); contentProviderUtils.bulkInsertTrackPoint(track.second, trackId);
assertEquals(20, contentProviderUtils.getTrackPointCursor(trackId, -1L, 1000).getCount()); assertEquals(20, contentProviderUtils.getTrackPointCursor(trackId, -1L, 1000).getCount());
contentProviderUtils.bulkInsertTrackPoint(Arrays.copyOfRange(track.second, 0, 8), trackId); contentProviderUtils.bulkInsertTrackPoint(track.second.subList(0, 8), trackId);
assertEquals(28, contentProviderUtils.getTrackPointCursor(trackId, -1L, 1000).getCount()); assertEquals(28, contentProviderUtils.getTrackPointCursor(trackId, -1L, 1000).getCount());
} }
@@ -866,12 +866,12 @@ public class CustomContentProviderUtilsTest {
public void testGetTrackPointCursor_asc() { public void testGetTrackPointCursor_asc() {
// given // given
Track.Id trackId = new Track.Id(System.currentTimeMillis()); Track.Id trackId = new Track.Id(System.currentTimeMillis());
Pair<Track, TrackPoint[]> track = TestDataUtil.createTrack(trackId, 10); Pair<Track, List<TrackPoint>> track = TestDataUtil.createTrack(trackId, 10);
contentProviderUtils.insertTrack(track.first); contentProviderUtils.insertTrack(track.first);
long[] trackpointIds = new long[track.second.length]; long[] trackpointIds = new long[track.second.size()];
for (int i = 0; i < trackpointIds.length; i++) { for (int i = 0; i < trackpointIds.length; i++) {
trackpointIds[i] = ContentUris.parseId(contentProviderUtils.insertTrackPoint(track.second[i], track.first.getId())); trackpointIds[i] = ContentUris.parseId(contentProviderUtils.insertTrackPoint(track.second.get(i), track.first.getId()));
} }
// when // when
@@ -885,12 +885,12 @@ public class CustomContentProviderUtilsTest {
public void testGetTrackPointLocationIterator_asc() { public void testGetTrackPointLocationIterator_asc() {
// given // given
Track.Id trackId = new Track.Id(System.currentTimeMillis()); Track.Id trackId = new Track.Id(System.currentTimeMillis());
Pair<Track, TrackPoint[]> track = TestDataUtil.createTrack(trackId, 10); Pair<Track, List<TrackPoint>> track = TestDataUtil.createTrack(trackId, 10);
contentProviderUtils.insertTrack(track.first); contentProviderUtils.insertTrack(track.first);
long[] trackpointIds = new long[track.second.length]; long[] trackpointIds = new long[track.second.size()];
for (int i = 0; i < trackpointIds.length; i++) { for (int i = 0; i < trackpointIds.length; i++) {
trackpointIds[i] = ContentUris.parseId(contentProviderUtils.insertTrackPoint(track.second[i], track.first.getId())); trackpointIds[i] = ContentUris.parseId(contentProviderUtils.insertTrackPoint(track.second.get(i), track.first.getId()));
} }
long startTrackPointId = trackpointIds[0]; long startTrackPointId = trackpointIds[0];
@@ -18,7 +18,6 @@ import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.InputStream; import java.io.InputStream;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
import de.dennisguse.opentracks.R; import de.dennisguse.opentracks.R;
@@ -62,7 +61,7 @@ public class ExportImportTest {
@Before @Before
public void setUp() { public void setUp() {
Pair<Track, TrackPoint[]> track = TestDataUtil.createTrack(trackId, 10); Pair<Track, List<TrackPoint>> track = TestDataUtil.createTrack(trackId, 10);
track.first.setIcon(TRACK_ICON); track.first.setIcon(TRACK_ICON);
track.first.setCategory(TRACK_CATEGORY); track.first.setCategory(TRACK_CATEGORY);
track.first.setDescription(TRACK_DESCRIPTION); track.first.setDescription(TRACK_DESCRIPTION);
@@ -70,10 +69,10 @@ public class ExportImportTest {
contentProviderUtils.bulkInsertTrackPoint(track.second, track.first.getId()); contentProviderUtils.bulkInsertTrackPoint(track.second, track.first.getId());
trackPoints.clear(); trackPoints.clear();
trackPoints.addAll(Arrays.asList(track.second)); trackPoints.addAll(track.second);
for (int i = 0; i < 3; i++) { for (int i = 0; i < 3; i++) {
Marker marker = new Marker(trackId, track.second[i].getLocation()); Marker marker = new Marker(trackId, track.second.get(i).getLocation());
marker.setName("the marker " + i); marker.setName("the marker " + i);
marker.setDescription("the marker description " + i); marker.setDescription("the marker description " + i);
marker.setCategory("the marker category" + i); marker.setCategory("the marker category" + i);
@@ -8,7 +8,6 @@ import androidx.test.ext.junit.runners.AndroidJUnit4;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import java.util.Arrays;
import java.util.List; import java.util.List;
import de.dennisguse.opentracks.R; import de.dennisguse.opentracks.R;
@@ -50,7 +49,7 @@ public class AnnouncementUtilsTest {
stats.setMaxSpeed(100); stats.setMaxSpeed(100);
stats.setTotalElevationGain(6000); stats.setTotalElevationGain(6000);
List<TrackPoint> trackPoints = Arrays.asList(TestDataUtil.createTrack(new Track.Id(System.currentTimeMillis()), 10).second); List<TrackPoint> trackPoints = TestDataUtil.createTrack(new Track.Id(System.currentTimeMillis()), 10).second;
IntervalStatistics intervalStatistics = new IntervalStatistics(trackPoints, 1000); IntervalStatistics intervalStatistics = new IntervalStatistics(trackPoints, 1000);
IntervalStatistics.Interval lastInterval = intervalStatistics.getIntervalList().get(intervalStatistics.getIntervalList().size() - 1); IntervalStatistics.Interval lastInterval = intervalStatistics.getIntervalList().get(intervalStatistics.getIntervalList().size() - 1);
@@ -1,12 +1,9 @@
package de.dennisguse.opentracks.viewmodels; package de.dennisguse.opentracks.viewmodels;
import android.util.Pair;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.junit.runners.JUnit4; import org.junit.runners.JUnit4;
import java.util.Arrays;
import java.util.List; import java.util.List;
import de.dennisguse.opentracks.content.data.TestDataUtil; import de.dennisguse.opentracks.content.data.TestDataUtil;
@@ -24,8 +21,7 @@ public class IntervalStatisticsTest {
private static final String TAG = IntervalStatisticsTest.class.getSimpleName(); private static final String TAG = IntervalStatisticsTest.class.getSimpleName();
private List<TrackPoint> buildTrackPoints(int numberOfTrackPoints) { private List<TrackPoint> buildTrackPoints(int numberOfTrackPoints) {
Pair<Track, TrackPoint[]> pair = TestDataUtil.createTrack(new Track.Id(System.currentTimeMillis()), numberOfTrackPoints); return TestDataUtil.createTrack(new Track.Id(System.currentTimeMillis()), numberOfTrackPoints).second;
return Arrays.asList(pair.second);
} }
private TrackStatistics buildTrackStatistics(List<TrackPoint> trackPoints) { private TrackStatistics buildTrackStatistics(List<TrackPoint> trackPoints) {
@@ -76,10 +76,10 @@ public class SensorsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder
} }
private class ViewHolder extends RecyclerView.ViewHolder { private class ViewHolder extends RecyclerView.ViewHolder {
TextView label; final TextView label;
TextView sensorValue; final TextView sensorValue;
TextView value; final TextView value;
TextView unit; final TextView unit;
public ViewHolder(@NonNull View itemView) { public ViewHolder(@NonNull View itemView) {
super(itemView); super(itemView);
@@ -588,22 +588,6 @@ public class ContentProviderUtils {
return trackPoint; return trackPoint;
} }
/**
* Inserts multiple trackPoints.
*
* @param trackPoints an array of trackPoints
* @param trackId the trackPoints id
* @return the number of trackPoints inserted
*/
//TODO Only used for testing; might be better to replace it.
public int bulkInsertTrackPoint(TrackPoint[] trackPoints, Track.Id trackId) {
ContentValues[] values = new ContentValues[trackPoints.length];
for (int i = 0; i < values.length; i++) {
values[i] = createContentValues(trackPoints[i], trackId);
}
return contentResolver.bulkInsert(TrackPointsColumns.CONTENT_URI_BY_ID, values);
}
//TODO Only used for file import; might be better to replace it. //TODO Only used for file import; might be better to replace it.
public int bulkInsertTrackPoint(List<TrackPoint> trackPoints, Track.Id trackId) { public int bulkInsertTrackPoint(List<TrackPoint> trackPoints, Track.Id trackId) {
ContentValues[] values = new ContentValues[trackPoints.size()]; ContentValues[] values = new ContentValues[trackPoints.size()];