From 4f5e87f87daeb94db1ebf50c040acf23e30963e6 Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Wed, 14 Aug 2019 08:04:02 +0200 Subject: [PATCH] Enabled some TrackDataHub tests. --- .../opentracks/content/TrackDataHubTest.java | 642 ++++++++---------- .../opentracks/util/PreferencesUtils.java | 1 - 2 files changed, 302 insertions(+), 341 deletions(-) diff --git a/src/androidTest/java/de/dennisguse/opentracks/content/TrackDataHubTest.java b/src/androidTest/java/de/dennisguse/opentracks/content/TrackDataHubTest.java index f783c2483..ffc6ff2cb 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/content/TrackDataHubTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/content/TrackDataHubTest.java @@ -19,73 +19,69 @@ import android.content.Context; import android.content.SharedPreferences; import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.database.ContentObserver; -import android.database.Cursor; -import android.database.MatrixCursor; import android.location.Location; -import android.provider.BaseColumns; -import android.test.RenamingDelegatingContext; -import android.test.mock.MockContentResolver; -import androidx.test.ext.junit.runners.AndroidJUnit4; +import androidx.test.core.app.ApplicationProvider; -import de.dennisguse.opentracks.Constants; -import de.dennisguse.opentracks.TrackStubUtils; -import de.dennisguse.opentracks.content.ContentProviderUtils.LocationFactory; -import de.dennisguse.opentracks.content.ContentProviderUtils.LocationIterator; -import de.dennisguse.opentracks.services.TrackRecordingServiceTest.MockContext; -import de.dennisguse.opentracks.util.PreferencesUtils; -import de.dennisguse.opentracks.R; -import com.google.android.testing.mocking.AndroidMock; -import com.google.android.testing.mocking.UsesMocks; - -import org.easymock.Capture; -import org.easymock.IAnswer; +import org.junit.After; +import org.junit.Assert; import org.junit.Before; +import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.ArgumentCaptor; +import org.mockito.Mock; +import org.mockito.junit.MockitoJUnitRunner; import java.util.EnumSet; import java.util.HashSet; import java.util.Set; -import static com.google.android.testing.mocking.AndroidMock.capture; -import static com.google.android.testing.mocking.AndroidMock.eq; -import static com.google.android.testing.mocking.AndroidMock.expect; -import static com.google.android.testing.mocking.AndroidMock.isA; +import de.dennisguse.opentracks.R; +import de.dennisguse.opentracks.content.ContentProviderUtils.LocationFactory; +import de.dennisguse.opentracks.content.ContentProviderUtils.LocationIterator; +import de.dennisguse.opentracks.util.PreferencesUtils; + +import static org.mockito.Mockito.eq; +import static org.mockito.Mockito.isA; +import static org.mockito.Mockito.reset; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; /** * Tests for {@link TrackDataHub}. * * @author Rodrigo Damazio */ -@RunWith(AndroidJUnit4.class) +@RunWith(MockitoJUnitRunner.class) public class TrackDataHubTest { - private static final long TRACK_ID = 42L; private static final int TARGET_POINTS = 50; - private MockContext context; + private Context context = ApplicationProvider.getApplicationContext(); private SharedPreferences sharedPreferences; + + @Mock private ContentProviderUtils contentProviderUtils; + + @Mock private DataSource dataSource; + private TrackDataManager trackDataManager; + private TrackDataHub trackDataHub; + + @Mock private TrackDataListener trackDataListener1; + + @Mock private TrackDataListener trackDataListener2; - private Capture preferenceChangeListenerCapture = new Capture< - SharedPreferences.OnSharedPreferenceChangeListener>(); + private ArgumentCaptor preferenceChangeListenerCapture = ArgumentCaptor.forClass(OnSharedPreferenceChangeListener.class); @Before - @UsesMocks({ContentProviderUtils.class, DataSource.class, TrackDataListener.class}) - @Override - protected void setUp() { - context = new MockContext(new MockContentResolver(), new RenamingDelegatingContext( - getContext(), getContext(), "test.")); + public void setUp() { sharedPreferences = PreferencesUtils.getSharedPreferences(context); - contentProviderUtils = AndroidMock.createMock(ContentProviderUtils.class); - dataSource = AndroidMock.createMock(DataSource.class, context); trackDataManager = new TrackDataManager(); - trackDataHub = new TrackDataHub( - context, trackDataManager, contentProviderUtils, TARGET_POINTS) { + trackDataHub = new TrackDataHub(context, trackDataManager, contentProviderUtils, TARGET_POINTS) { @Override protected DataSource newDataSource() { return dataSource; @@ -97,56 +93,46 @@ public class TrackDataHubTest { runnable.run(); } }; - - trackDataListener1 = AndroidMock.createStrictMock( - "trackDataListener1", TrackDataListener.class); - trackDataListener2 = AndroidMock.createStrictMock( - "trackDataListener2", TrackDataListener.class); PreferencesUtils.setLong(context, R.string.recording_track_id_key, TRACK_ID); } - @Override - protected void tearDown() throws Exception { - AndroidMock.reset(dataSource); + @After + public void tearDown() { + reset(dataSource); // Expect everything to be unregistered. dataSource.unregisterContentObserver(isA(ContentObserver.class)); - AndroidMock.expectLastCall().times(3); - dataSource.unregisterOnSharedPreferenceChangeListener( - isA(OnSharedPreferenceChangeListener.class)); - AndroidMock.replay(dataSource); - + //TODO +// AndroidMock.expectLastCall().times(3); + dataSource.unregisterOnSharedPreferenceChangeListener(isA(OnSharedPreferenceChangeListener.class)); + verify(dataSource); trackDataHub.stop(); trackDataHub = null; - super.tearDown(); } /** * Tests registering for tracks table update. */ + @Test public void testTracksTableUpdate() { - // Register two listeners - Capture contentObserverCapture = new Capture(); + ArgumentCaptor contentObserverCapture = ArgumentCaptor.forClass(ContentObserver.class); Track track = new Track(); - expect(contentProviderUtils.getTrack(TRACK_ID)).andStubReturn(track); - dataSource.registerContentObserver( - eq(TracksColumns.CONTENT_URI), capture(contentObserverCapture)); + when(contentProviderUtils.getTrack(TRACK_ID)).thenReturn(track); + dataSource.registerContentObserver(eq(TracksColumns.CONTENT_URI), contentObserverCapture.capture()); trackDataListener1.onTrackUpdated(track); trackDataListener2.onTrackUpdated(track); replay(); trackDataHub.start(); trackDataHub.loadTrack(TRACK_ID); - trackDataHub.registerTrackDataListener( - trackDataListener1, EnumSet.of(TrackDataType.TRACKS_TABLE)); - trackDataHub.registerTrackDataListener( - trackDataListener2, EnumSet.of(TrackDataType.TRACKS_TABLE)); + trackDataHub.registerTrackDataListener(trackDataListener1, EnumSet.of(TrackDataType.TRACKS_TABLE)); + trackDataHub.registerTrackDataListener(trackDataListener2, EnumSet.of(TrackDataType.TRACKS_TABLE)); verifyAndReset(); // Causes tracks table update ContentObserver contentObserver = contentObserverCapture.getValue(); - expect(contentProviderUtils.getTrack(TRACK_ID)).andStubReturn(track); + when(contentProviderUtils.getTrack(TRACK_ID)).thenReturn(track); trackDataListener1.onTrackUpdated(track); trackDataListener2.onTrackUpdated(track); replay(); @@ -155,7 +141,7 @@ public class TrackDataHubTest { verifyAndReset(); // Unregister one listener - expect(contentProviderUtils.getTrack(TRACK_ID)).andStubReturn(track); + when(contentProviderUtils.getTrack(TRACK_ID)).thenReturn(track); trackDataListener2.onTrackUpdated(track); replay(); @@ -172,111 +158,117 @@ public class TrackDataHubTest { verifyAndReset(); } + //TODO /** * Tests registering for waypoints table update. */ - public void testWaypointsTableUpdate() { - Waypoint waypoint1 = new Waypoint(); - Waypoint waypoint2 = new Waypoint(); - Waypoint waypoint3 = new Waypoint(); - Waypoint waypoint4 = new Waypoint(); - Location location = new Location("gps"); - location.setLatitude(10.0); - location.setLongitude(8.0); - waypoint1.setLocation(location); - waypoint2.setLocation(location); - waypoint3.setLocation(location); - waypoint4.setLocation(location); - - // Register two listeners - Capture contentObserverCapture = new Capture(); - expect(contentProviderUtils.getWaypointCursor( - eq(TRACK_ID), AndroidMock.leq(-1L), eq(TrackDataHub.MAX_DISPLAYED_WAYPOINTS))) - .andStubAnswer(new FixedSizeCursorAnswer(2)); - expect(contentProviderUtils.createWaypoint(isA(Cursor.class))) - .andReturn(waypoint1).andReturn(waypoint2).andReturn(waypoint1).andReturn(waypoint2); - dataSource.registerContentObserver( - eq(WaypointsColumns.CONTENT_URI), capture(contentObserverCapture)); - trackDataListener1.clearWaypoints(); - trackDataListener2.clearWaypoints(); - trackDataListener1.onNewWaypoint(waypoint1); - trackDataListener2.onNewWaypoint(waypoint1); - trackDataListener1.onNewWaypoint(waypoint2); - trackDataListener2.onNewWaypoint(waypoint2); - trackDataListener1.onNewWaypointsDone(); - trackDataListener2.onNewWaypointsDone(); - replay(); - - trackDataHub.start(); - trackDataHub.loadTrack(TRACK_ID); - trackDataHub.registerTrackDataListener( - trackDataListener1, EnumSet.of(TrackDataType.WAYPOINTS_TABLE)); - trackDataHub.registerTrackDataListener( - trackDataListener2, EnumSet.of(TrackDataType.WAYPOINTS_TABLE)); - verifyAndReset(); - - // Cause waypoints table update - ContentObserver contentObserver = contentObserverCapture.getValue(); - expect(contentProviderUtils.getWaypointCursor( - eq(TRACK_ID), AndroidMock.leq(-1L), eq(TrackDataHub.MAX_DISPLAYED_WAYPOINTS))) - .andStubAnswer(new FixedSizeCursorAnswer(3)); - expect(contentProviderUtils.createWaypoint(isA(Cursor.class))) - .andReturn(waypoint1).andReturn(waypoint2).andReturn(waypoint3); - trackDataListener1.clearWaypoints(); - trackDataListener2.clearWaypoints(); - trackDataListener1.onNewWaypoint(waypoint1); - trackDataListener2.onNewWaypoint(waypoint1); - trackDataListener1.onNewWaypoint(waypoint2); - trackDataListener2.onNewWaypoint(waypoint2); - trackDataListener1.onNewWaypoint(waypoint3); - trackDataListener2.onNewWaypoint(waypoint3); - trackDataListener1.onNewWaypointsDone(); - trackDataListener2.onNewWaypointsDone(); - replay(); - - contentObserver.onChange(false); - verifyAndReset(); - - // Unregister one listener - expect(contentProviderUtils.getWaypointCursor( - eq(TRACK_ID), AndroidMock.leq(-1L), eq(TrackDataHub.MAX_DISPLAYED_WAYPOINTS))) - .andStubAnswer(new FixedSizeCursorAnswer(4)); - expect(contentProviderUtils.createWaypoint(isA(Cursor.class))) - .andReturn(waypoint1).andReturn(waypoint2).andReturn(waypoint3).andReturn(waypoint4); - trackDataListener2.clearWaypoints(); - trackDataListener2.onNewWaypoint(waypoint1); - trackDataListener2.onNewWaypoint(waypoint2); - trackDataListener2.onNewWaypoint(waypoint3); - trackDataListener2.onNewWaypoint(waypoint4); - trackDataListener2.onNewWaypointsDone(); - replay(); - - trackDataHub.unregisterTrackDataListener(trackDataListener1); - contentObserver.onChange(false); - verifyAndReset(); - - // Unregister the second listener - dataSource.unregisterContentObserver(contentObserver); - replay(); - - trackDataHub.unregisterTrackDataListener(trackDataListener2); - contentObserver.onChange(false); - verifyAndReset(); - } +// @Test +// public void testWaypointsTableUpdate() { +// Waypoint waypoint1 = new Waypoint(); +// Waypoint waypoint2 = new Waypoint(); +// Waypoint waypoint3 = new Waypoint(); +// Waypoint waypoint4 = new Waypoint(); +// Location location = new Location("gps"); +// location.setLatitude(10.0); +// location.setLongitude(8.0); +// waypoint1.setLocation(location); +// waypoint2.setLocation(location); +// waypoint3.setLocation(location); +// waypoint4.setLocation(location); +// +// // Register two listeners +// ArgumentCaptor contentObserverCapture = ArgumentCaptor.forClass(ContentObserver.class); +// when(contentProviderUtils.getWaypointCursor( +// eq(TRACK_ID), AndroidMock.leq(-1L), eq(TrackDataHub.MAX_DISPLAYED_WAYPOINTS))) +// .andStubAnswer(new FixedSizeCursorAnswer(2)); +// when(contentProviderUtils.createWaypoint(isA(Cursor.class))) +// .thenReturn(waypoint1) +// .thenReturn(waypoint2) +// .thenReturn(waypoint1) +// .thenReturn(waypoint2); +// dataSource.registerContentObserver(eq(WaypointsColumns.CONTENT_URI), contentObserverCapture.capture()); +// trackDataListener1.clearWaypoints(); +// trackDataListener2.clearWaypoints(); +// trackDataListener1.onNewWaypoint(waypoint1); +// trackDataListener2.onNewWaypoint(waypoint1); +// trackDataListener1.onNewWaypoint(waypoint2); +// trackDataListener2.onNewWaypoint(waypoint2); +// trackDataListener1.onNewWaypointsDone(); +// trackDataListener2.onNewWaypointsDone(); +// replay(); +// +// trackDataHub.start(); +// trackDataHub.loadTrack(TRACK_ID); +// trackDataHub.registerTrackDataListener(trackDataListener1, EnumSet.of(TrackDataType.WAYPOINTS_TABLE)); +// trackDataHub.registerTrackDataListener(trackDataListener2, EnumSet.of(TrackDataType.WAYPOINTS_TABLE)); +// verifyAndReset(); +// +// // Cause waypoints table update +// ContentObserver contentObserver = contentObserverCapture.getValue(); +// when(contentProviderUtils.getWaypointCursor( +// eq(TRACK_ID), AndroidMock.leq(-1L), eq(TrackDataHub.MAX_DISPLAYED_WAYPOINTS))) +// .andStubAnswer(new FixedSizeCursorAnswer(3)); +// when(contentProviderUtils.createWaypoint(isA(Cursor.class))) +// .thenReturn(waypoint1) +// .thenReturn(waypoint2) +// .thenReturn(waypoint3); +// trackDataListener1.clearWaypoints(); +// trackDataListener2.clearWaypoints(); +// trackDataListener1.onNewWaypoint(waypoint1); +// trackDataListener2.onNewWaypoint(waypoint1); +// trackDataListener1.onNewWaypoint(waypoint2); +// trackDataListener2.onNewWaypoint(waypoint2); +// trackDataListener1.onNewWaypoint(waypoint3); +// trackDataListener2.onNewWaypoint(waypoint3); +// trackDataListener1.onNewWaypointsDone(); +// trackDataListener2.onNewWaypointsDone(); +// replay(); +// +// contentObserver.onChange(false); +// verifyAndReset(); +// +// // Unregister one listener +// when(contentProviderUtils.getWaypointCursor( +// eq(TRACK_ID), AndroidMock.leq(-1L), eq(TrackDataHub.MAX_DISPLAYED_WAYPOINTS))) +// .andStubAnswer(new FixedSizeCursorAnswer(4)); +// when(contentProviderUtils.createWaypoint(isA(Cursor.class))) +// .thenReturn(waypoint1) +// .thenReturn(waypoint2) +// .thenReturn(waypoint3) +// .thenReturn(waypoint4); +// trackDataListener2.clearWaypoints(); +// trackDataListener2.onNewWaypoint(waypoint1); +// trackDataListener2.onNewWaypoint(waypoint2); +// trackDataListener2.onNewWaypoint(waypoint3); +// trackDataListener2.onNewWaypoint(waypoint4); +// trackDataListener2.onNewWaypointsDone(); +// replay(); +// +// trackDataHub.unregisterTrackDataListener(trackDataListener1); +// contentObserver.onChange(false); +// verifyAndReset(); +// +// // Unregister the second listener +// dataSource.unregisterContentObserver(contentObserver); +// replay(); +// +// trackDataHub.unregisterTrackDataListener(trackDataListener2); +// contentObserver.onChange(false); +// verifyAndReset(); +// } /** * Tests track points table update. */ + @Test public void testTrackPointsTableUpdate() { // Register one listener - Capture contentObserverCapture = new Capture(); - dataSource.registerContentObserver( - eq(TrackPointsColumns.CONTENT_URI), capture(contentObserverCapture)); + ArgumentCaptor contentObserverCapture = ArgumentCaptor.forClass(ContentObserver.class); + dataSource.registerContentObserver(eq(TrackPointsColumns.CONTENT_URI), contentObserverCapture.capture()); FixedSizeLocationIterator locationIterator = new FixedSizeLocationIterator(1, 10, 5); - expect(contentProviderUtils.getTrackPointLocationIterator( - eq(TRACK_ID), eq(0L), eq(false), isA(LocationFactory.class))).andReturn(locationIterator); - expect(contentProviderUtils.getLastTrackPointId(TRACK_ID)).andReturn(10L); + when(contentProviderUtils.getTrackPointLocationIterator(eq(TRACK_ID), eq(0L), eq(false), isA(LocationFactory.class))).thenReturn(locationIterator); + when(contentProviderUtils.getLastTrackPointId(TRACK_ID)).thenReturn(10L); trackDataListener1.clearTrackPoints(); locationIterator.expectLocationsDelivered(trackDataListener1); trackDataListener1.onNewTrackPointsDone(); @@ -284,30 +276,26 @@ public class TrackDataHubTest { trackDataHub.start(); trackDataHub.loadTrack(TRACK_ID); - trackDataHub.registerTrackDataListener( - trackDataListener1, EnumSet.of(TrackDataType.SAMPLED_IN_TRACK_POINTS_TABLE)); + trackDataHub.registerTrackDataListener(trackDataListener1, EnumSet.of(TrackDataType.SAMPLED_IN_TRACK_POINTS_TABLE)); verifyAndReset(); // Register a second listener locationIterator = new FixedSizeLocationIterator(1, 10, 5); - expect(contentProviderUtils.getTrackPointLocationIterator( - eq(TRACK_ID), eq(0L), eq(false), isA(LocationFactory.class))).andReturn(locationIterator); - expect(contentProviderUtils.getLastTrackPointId(TRACK_ID)).andReturn(10L); + when(contentProviderUtils.getTrackPointLocationIterator(eq(TRACK_ID), eq(0L), eq(false), isA(LocationFactory.class))).thenReturn(locationIterator); + when(contentProviderUtils.getLastTrackPointId(TRACK_ID)).thenReturn(10L); trackDataListener2.clearTrackPoints(); locationIterator.expectLocationsDelivered(trackDataListener2); trackDataListener2.onNewTrackPointsDone(); replay(); - trackDataHub.registerTrackDataListener( - trackDataListener2, EnumSet.of(TrackDataType.SAMPLED_IN_TRACK_POINTS_TABLE)); + trackDataHub.registerTrackDataListener(trackDataListener2, EnumSet.of(TrackDataType.SAMPLED_IN_TRACK_POINTS_TABLE)); verifyAndReset(); // Deliver more points - should go to both listeners without clearing ContentObserver contentObserver = contentObserverCapture.getValue(); locationIterator = new FixedSizeLocationIterator(11, 10, 1); - expect(contentProviderUtils.getTrackPointLocationIterator( - eq(TRACK_ID), eq(11L), eq(false), isA(LocationFactory.class))).andReturn(locationIterator); - expect(contentProviderUtils.getLastTrackPointId(TRACK_ID)).andReturn(20L); + when(contentProviderUtils.getTrackPointLocationIterator(eq(TRACK_ID), eq(11L), eq(false), isA(LocationFactory.class))).thenReturn(locationIterator); + when(contentProviderUtils.getLastTrackPointId(TRACK_ID)).thenReturn(20L); locationIterator.expectLocationsDelivered(trackDataListener1); locationIterator.expectLocationsDelivered(trackDataListener2); trackDataListener1.onNewTrackPointsDone(); @@ -319,10 +307,10 @@ public class TrackDataHubTest { // Unregister one listener and change track locationIterator = new FixedSizeLocationIterator(101, 10); - expect(contentProviderUtils.getTrackPointLocationIterator( + when(contentProviderUtils.getTrackPointLocationIterator( eq(TRACK_ID + 1), eq(0L), eq(false), isA(LocationFactory.class))) - .andReturn(locationIterator); - expect(contentProviderUtils.getLastTrackPointId(TRACK_ID + 1)).andReturn(110L); + .thenReturn(locationIterator); + when(contentProviderUtils.getLastTrackPointId(TRACK_ID + 1)).thenReturn(110L); trackDataListener2.clearTrackPoints(); locationIterator.expectLocationsDelivered(trackDataListener2); trackDataListener2.onNewTrackPointsDone(); @@ -336,17 +324,16 @@ public class TrackDataHubTest { /** * Tests track points table update with registering the same listener. */ + @Test public void testTrackPointsTableUpdate_reRegister() { - // Register one listener - Capture contentObserverCapture = new Capture(); - dataSource.registerContentObserver( - eq(TrackPointsColumns.CONTENT_URI), capture(contentObserverCapture)); + ArgumentCaptor contentObserverCapture = ArgumentCaptor.forClass(ContentObserver.class); + dataSource.registerContentObserver(eq(TrackPointsColumns.CONTENT_URI), contentObserverCapture.capture()); FixedSizeLocationIterator locationIterator = new FixedSizeLocationIterator(1, 10, 5); - expect(contentProviderUtils.getTrackPointLocationIterator( - eq(TRACK_ID), eq(0L), eq(false), isA(LocationFactory.class))).andReturn(locationIterator); - expect(contentProviderUtils.getLastTrackPointId(TRACK_ID)).andReturn(10L); + when(contentProviderUtils.getTrackPointLocationIterator( + eq(TRACK_ID), eq(0L), eq(false), isA(LocationFactory.class))).thenReturn(locationIterator); + when(contentProviderUtils.getLastTrackPointId(TRACK_ID)).thenReturn(10L); trackDataListener1.clearTrackPoints(); locationIterator.expectLocationsDelivered(trackDataListener1); @@ -355,8 +342,7 @@ public class TrackDataHubTest { trackDataHub.start(); trackDataHub.loadTrack(TRACK_ID); - trackDataHub.registerTrackDataListener( - trackDataListener1, EnumSet.of(TrackDataType.SAMPLED_IN_TRACK_POINTS_TABLE)); + trackDataHub.registerTrackDataListener(trackDataListener1, EnumSet.of(TrackDataType.SAMPLED_IN_TRACK_POINTS_TABLE)); verifyAndReset(); // Unregister the listener @@ -368,36 +354,32 @@ public class TrackDataHubTest { verifyAndReset(); // Register again - dataSource.registerContentObserver( - eq(TrackPointsColumns.CONTENT_URI), capture(contentObserverCapture)); + dataSource.registerContentObserver(eq(TrackPointsColumns.CONTENT_URI), contentObserverCapture.capture()); locationIterator = new FixedSizeLocationIterator(1, 10, 5); - expect(contentProviderUtils.getTrackPointLocationIterator( - eq(TRACK_ID), eq(0L), eq(false), isA(LocationFactory.class))).andReturn(locationIterator); - expect(contentProviderUtils.getLastTrackPointId(TRACK_ID)).andReturn(10L); + when(contentProviderUtils.getTrackPointLocationIterator(eq(TRACK_ID), eq(0L), eq(false), isA(LocationFactory.class))).thenReturn(locationIterator); + when(contentProviderUtils.getLastTrackPointId(TRACK_ID)).thenReturn(10L); trackDataListener1.clearTrackPoints(); locationIterator.expectLocationsDelivered(trackDataListener1); trackDataListener1.onNewTrackPointsDone(); replay(); - trackDataHub.registerTrackDataListener( - trackDataListener1, EnumSet.of(TrackDataType.SAMPLED_IN_TRACK_POINTS_TABLE)); + trackDataHub.registerTrackDataListener(trackDataListener1, EnumSet.of(TrackDataType.SAMPLED_IN_TRACK_POINTS_TABLE)); verifyAndReset(); } /** * Tests tracks point able change. Register a listener after a track change. */ + @Test public void testTrackPointsTableUpdate_reRegisterAfterTrackChange() { - // Register one listener - Capture observerCapture = new Capture(); - dataSource.registerContentObserver( - eq(TrackPointsColumns.CONTENT_URI), capture(observerCapture)); + ArgumentCaptor observerCapture = ArgumentCaptor.forClass(ContentObserver.class); + dataSource.registerContentObserver(eq(TrackPointsColumns.CONTENT_URI), observerCapture.capture()); FixedSizeLocationIterator locationIterator = new FixedSizeLocationIterator(1, 10, 5); - expect(contentProviderUtils.getTrackPointLocationIterator( - eq(TRACK_ID), eq(0L), eq(false), isA(LocationFactory.class))).andReturn(locationIterator); - expect(contentProviderUtils.getLastTrackPointId(TRACK_ID)).andReturn(10L); + when(contentProviderUtils.getTrackPointLocationIterator( + eq(TRACK_ID), eq(0L), eq(false), isA(LocationFactory.class))).thenReturn(locationIterator); + when(contentProviderUtils.getLastTrackPointId(TRACK_ID)).thenReturn(10L); trackDataListener1.clearTrackPoints(); locationIterator.expectLocationsDelivered(trackDataListener1); trackDataListener1.onNewTrackPointsDone(); @@ -419,12 +401,12 @@ public class TrackDataHubTest { // Register the listener after a new track dataSource.registerContentObserver( - eq(TrackPointsColumns.CONTENT_URI), capture(observerCapture)); + eq(TrackPointsColumns.CONTENT_URI), observerCapture.capture()); locationIterator = new FixedSizeLocationIterator(1, 10); - expect(contentProviderUtils.getTrackPointLocationIterator( + when(contentProviderUtils.getTrackPointLocationIterator( eq(TRACK_ID + 1), eq(0L), eq(false), isA(LocationFactory.class))) - .andReturn(locationIterator); - expect(contentProviderUtils.getLastTrackPointId(TRACK_ID + 1)).andReturn(10L); + .thenReturn(locationIterator); + when(contentProviderUtils.getLastTrackPointId(TRACK_ID + 1)).thenReturn(10L); trackDataListener1.clearTrackPoints(); locationIterator.expectLocationsDelivered(trackDataListener1); trackDataListener1.onNewTrackPointsDone(); @@ -436,55 +418,50 @@ public class TrackDataHubTest { verifyAndReset(); } + //TODO /** * Tests track points table update with large track sampling. */ - public void testTrackPointsTableUpdate_largeTrackSampling() { - Capture contentObserverCapture = new Capture(); - dataSource.registerContentObserver( - eq(TrackPointsColumns.CONTENT_URI), capture(contentObserverCapture)); - - expect(contentProviderUtils.getLastTrackPointId(TRACK_ID)).andReturn(200L); - AndroidMock.expectLastCall().anyTimes(); - FixedSizeLocationIterator locationIterator1 = new FixedSizeLocationIterator( - 1, 200, 4, 25, 71, 120); - expect(contentProviderUtils.getTrackPointLocationIterator( - eq(TRACK_ID), eq(0L), eq(false), isA(LocationFactory.class))).andReturn(locationIterator1); - FixedSizeLocationIterator locationIterator2 = new FixedSizeLocationIterator( - 1, 200, 4, 25, 71, 120); - expect(contentProviderUtils.getTrackPointLocationIterator( - eq(TRACK_ID), eq(0L), eq(false), isA(LocationFactory.class))).andReturn(locationIterator2); - - trackDataListener1.clearTrackPoints(); - locationIterator1.expectSampledLocationsDelivered(trackDataListener1, 4, false); - trackDataListener1.onNewTrackPointsDone(); - trackDataListener2.clearTrackPoints(); - locationIterator2.expectSampledLocationsDelivered(trackDataListener2, 4, true); - trackDataListener2.onNewTrackPointsDone(); - replay(); - - trackDataHub.start(); - trackDataHub.loadTrack(TRACK_ID); - trackDataHub.registerTrackDataListener( - trackDataListener1, EnumSet.of(TrackDataType.SAMPLED_IN_TRACK_POINTS_TABLE)); - trackDataHub.registerTrackDataListener(trackDataListener2, EnumSet.of( - TrackDataType.SAMPLED_IN_TRACK_POINTS_TABLE, TrackDataType.SAMPLED_OUT_TRACK_POINTS_TABLE)); - verifyAndReset(); - } +// @Test +// public void testTrackPointsTableUpdate_largeTrackSampling() { +// ArgumentCaptor contentObserverCapture = ArgumentCaptor.forClass(ContentObserver.class); +// dataSource.registerContentObserver(eq(TrackPointsColumns.CONTENT_URI), contentObserverCapture.capture()); +// +// when(contentProviderUtils.getLastTrackPointId(TRACK_ID)).thenReturn(200L); +// AndroidMock.expectLastCall().anyTimes(); +// FixedSizeLocationIterator locationIterator1 = new FixedSizeLocationIterator(1, 200, 4, 25, 71, 120); +// when(contentProviderUtils.getTrackPointLocationIterator(eq(TRACK_ID), eq(0L), eq(false), isA(LocationFactory.class))).thenReturn(locationIterator1); +// FixedSizeLocationIterator locationIterator2 = new FixedSizeLocationIterator(1, 200, 4, 25, 71, 120); +// when(contentProviderUtils.getTrackPointLocationIterator(eq(TRACK_ID), eq(0L), eq(false), isA(LocationFactory.class))).thenReturn(locationIterator2); +// +// trackDataListener1.clearTrackPoints(); +// locationIterator1.expectSampledLocationsDelivered(trackDataListener1, 4, false); +// trackDataListener1.onNewTrackPointsDone(); +// trackDataListener2.clearTrackPoints(); +// locationIterator2.expectSampledLocationsDelivered(trackDataListener2, 4, true); +// trackDataListener2.onNewTrackPointsDone(); +// replay(); +// +// trackDataHub.start(); +// trackDataHub.loadTrack(TRACK_ID); +// trackDataHub.registerTrackDataListener(trackDataListener1, EnumSet.of(TrackDataType.SAMPLED_IN_TRACK_POINTS_TABLE)); +// trackDataHub.registerTrackDataListener(trackDataListener2, EnumSet.of(TrackDataType.SAMPLED_IN_TRACK_POINTS_TABLE, TrackDataType.SAMPLED_OUT_TRACK_POINTS_TABLE)); +// verifyAndReset(); +// } /** * Tests track points table update with resampling. */ + @Test public void testTrackPointsTableUpdate_resampling() { - Capture observerCapture = new Capture(); - dataSource.registerContentObserver( - eq(TrackPointsColumns.CONTENT_URI), capture(observerCapture)); + ArgumentCaptor observerCapture = ArgumentCaptor.forClass(ContentObserver.class); + dataSource.registerContentObserver(eq(TrackPointsColumns.CONTENT_URI), observerCapture.capture()); // Deliver 30 points (no sampling happens) FixedSizeLocationIterator locationIterator = new FixedSizeLocationIterator(1, 30, 5); - expect(contentProviderUtils.getTrackPointLocationIterator( - eq(TRACK_ID), eq(0L), eq(false), isA(LocationFactory.class))).andReturn(locationIterator); - expect(contentProviderUtils.getLastTrackPointId(TRACK_ID)).andReturn(30L); + when(contentProviderUtils.getTrackPointLocationIterator( + eq(TRACK_ID), eq(0L), eq(false), isA(LocationFactory.class))).thenReturn(locationIterator); + when(contentProviderUtils.getLastTrackPointId(TRACK_ID)).thenReturn(30L); trackDataListener1.clearTrackPoints(); locationIterator.expectLocationsDelivered(trackDataListener1); @@ -493,16 +470,14 @@ public class TrackDataHubTest { trackDataHub.start(); trackDataHub.loadTrack(TRACK_ID); - trackDataHub.registerTrackDataListener( - trackDataListener1, EnumSet.of(TrackDataType.SAMPLED_IN_TRACK_POINTS_TABLE)); + trackDataHub.registerTrackDataListener(trackDataListener1, EnumSet.of(TrackDataType.SAMPLED_IN_TRACK_POINTS_TABLE)); verifyAndReset(); // Now deliver 30 more (incrementally sampled) ContentObserver observer = observerCapture.getValue(); locationIterator = new FixedSizeLocationIterator(31, 30); - expect(contentProviderUtils.getTrackPointLocationIterator( - eq(TRACK_ID), eq(31L), eq(false), isA(LocationFactory.class))).andReturn(locationIterator); - expect(contentProviderUtils.getLastTrackPointId(TRACK_ID)).andReturn(60L); + when(contentProviderUtils.getTrackPointLocationIterator(eq(TRACK_ID), eq(31L), eq(false), isA(LocationFactory.class))).thenReturn(locationIterator); + when(contentProviderUtils.getLastTrackPointId(TRACK_ID)).thenReturn(60L); locationIterator.expectSampledLocationsDelivered(trackDataListener1, 2, false); trackDataListener1.onNewTrackPointsDone(); replay(); @@ -512,9 +487,9 @@ public class TrackDataHubTest { // Now another 30 (triggers resampling) locationIterator = new FixedSizeLocationIterator(1, 90); - expect(contentProviderUtils.getTrackPointLocationIterator( - eq(TRACK_ID), eq(0L), eq(false), isA(LocationFactory.class))).andReturn(locationIterator); - expect(contentProviderUtils.getLastTrackPointId(TRACK_ID)).andReturn(90L); + when(contentProviderUtils.getTrackPointLocationIterator( + eq(TRACK_ID), eq(0L), eq(false), isA(LocationFactory.class))).thenReturn(locationIterator); + when(contentProviderUtils.getLastTrackPointId(TRACK_ID)).thenReturn(90L); trackDataListener1.clearTrackPoints(); locationIterator.expectSampledLocationsDelivered(trackDataListener1, 2, false); trackDataListener1.onNewTrackPointsDone(); @@ -527,66 +502,50 @@ public class TrackDataHubTest { /** * Tests preferences change. */ + @Test public void testPreferencesChange() throws Exception { - // Register two listeners - PreferencesUtils.setString( - context, R.string.stats_rate_key, PreferencesUtils.STATS_RATE_DEFAULT); - PreferencesUtils.setString( - context, R.string.stats_units_key, PreferencesUtils.STATS_UNITS_DEFAULT); - PreferencesUtils.setInt(context, R.string.recording_gps_accuracy_key, - PreferencesUtils.RECORDING_GPS_ACCURACY_DEFAULT); - PreferencesUtils.setInt(context, R.string.recording_distance_interval_key, - PreferencesUtils.RECORDING_DISTANCE_INTERVAL_DEFAULT); + PreferencesUtils.setString(context, R.string.stats_rate_key, PreferencesUtils.STATS_RATE_DEFAULT); + PreferencesUtils.setString(context, R.string.stats_units_key, PreferencesUtils.STATS_UNITS_DEFAULT); + PreferencesUtils.setInt(context, R.string.recording_gps_accuracy_key, PreferencesUtils.RECORDING_GPS_ACCURACY_DEFAULT); + PreferencesUtils.setInt(context, R.string.recording_distance_interval_key, PreferencesUtils.RECORDING_DISTANCE_INTERVAL_DEFAULT); - dataSource.registerOnSharedPreferenceChangeListener(capture(preferenceChangeListenerCapture)); - expect(trackDataListener1.onMetricUnitsChanged(true)).andReturn(false); - expect(trackDataListener1.onReportSpeedChanged(true)).andReturn(false); - expect( - trackDataListener1.onRecordingGpsAccuracy(PreferencesUtils.RECORDING_GPS_ACCURACY_DEFAULT)) - .andReturn(false); - expect(trackDataListener1.onRecordingDistanceIntervalChanged( - PreferencesUtils.RECORDING_DISTANCE_INTERVAL_DEFAULT)).andReturn(false); - expect(trackDataListener1.onMapTypeChanged(PreferencesUtils.MAP_TYPE_DEFAULT)).andReturn(false); + dataSource.registerOnSharedPreferenceChangeListener(preferenceChangeListenerCapture.capture()); + when(trackDataListener1.onMetricUnitsChanged(true)).thenReturn(false); + when(trackDataListener1.onReportSpeedChanged(true)).thenReturn(false); + when(trackDataListener1.onRecordingGpsAccuracy(PreferencesUtils.RECORDING_GPS_ACCURACY_DEFAULT)).thenReturn(false); + when(trackDataListener1.onRecordingDistanceIntervalChanged(PreferencesUtils.RECORDING_DISTANCE_INTERVAL_DEFAULT)).thenReturn(false); - expect(trackDataListener2.onMetricUnitsChanged(true)).andReturn(false); - expect(trackDataListener2.onReportSpeedChanged(true)).andReturn(false); - expect( - trackDataListener2.onRecordingGpsAccuracy(PreferencesUtils.RECORDING_GPS_ACCURACY_DEFAULT)) - .andReturn(false); - expect(trackDataListener2.onRecordingDistanceIntervalChanged( - PreferencesUtils.RECORDING_DISTANCE_INTERVAL_DEFAULT)).andReturn(false); - expect(trackDataListener2.onMapTypeChanged(PreferencesUtils.MAP_TYPE_DEFAULT)).andReturn(false); + when(trackDataListener2.onMetricUnitsChanged(true)).thenReturn(false); + when(trackDataListener2.onReportSpeedChanged(true)).thenReturn(false); + when(trackDataListener2.onRecordingGpsAccuracy(PreferencesUtils.RECORDING_GPS_ACCURACY_DEFAULT)).thenReturn(false); + when(trackDataListener2.onRecordingDistanceIntervalChanged(PreferencesUtils.RECORDING_DISTANCE_INTERVAL_DEFAULT)).thenReturn(false); replay(); trackDataHub.start(); - trackDataHub.registerTrackDataListener( - trackDataListener1, EnumSet.of(TrackDataType.PREFERENCE)); - trackDataHub.registerTrackDataListener( - trackDataListener2, EnumSet.of(TrackDataType.PREFERENCE)); + trackDataHub.registerTrackDataListener(trackDataListener1, EnumSet.of(TrackDataType.PREFERENCE)); + trackDataHub.registerTrackDataListener(trackDataListener2, EnumSet.of(TrackDataType.PREFERENCE)); verifyAndReset(); // Change report speed to false - expect(trackDataListener1.onReportSpeedChanged(false)).andReturn(false); - expect(trackDataListener2.onReportSpeedChanged(false)).andReturn(false); + when(trackDataListener1.onReportSpeedChanged(false)).thenReturn(false); + when(trackDataListener2.onReportSpeedChanged(false)).thenReturn(false); replay(); PreferencesUtils.setString( context, R.string.stats_rate_key, context.getString(R.string.stats_rate_pace)); OnSharedPreferenceChangeListener listener = preferenceChangeListenerCapture.getValue(); - listener.onSharedPreferenceChanged( - sharedPreferences, PreferencesUtils.getKey(context, R.string.stats_rate_key)); + listener.onSharedPreferenceChanged(sharedPreferences, PreferencesUtils.getKey(context, R.string.stats_rate_key)); verifyAndReset(); // Change metric units to false - expect(trackDataListener1.onMetricUnitsChanged(false)).andReturn(false); - expect(trackDataListener2.onMetricUnitsChanged(false)).andReturn(false); + when(trackDataListener1.onMetricUnitsChanged(false)).thenReturn(false); + when(trackDataListener2.onMetricUnitsChanged(false)).thenReturn(false); replay(); String imperialUnits = context.getString(R.string.stats_units_imperial); PreferencesUtils.setString(context, R.string.stats_units_key, imperialUnits); - listener.onSharedPreferenceChanged( - sharedPreferences, PreferencesUtils.getKey(context, R.string.stats_units_key)); + listener.onSharedPreferenceChanged(sharedPreferences, PreferencesUtils.getKey(context, R.string.stats_units_key)); verifyAndReset(); } @@ -594,125 +553,128 @@ public class TrackDataHubTest { * Replays mocks. */ private void replay() { - AndroidMock.replay(contentProviderUtils, dataSource, trackDataListener1, trackDataListener2); +// AndroidMock.replay(contentProviderUtils, dataSource, trackDataListener1, trackDataListener2); } /** * Verifies and resets mocks. */ private void verifyAndReset() { - AndroidMock.verify(contentProviderUtils, dataSource, trackDataListener1, trackDataListener2); - AndroidMock.reset(contentProviderUtils, dataSource, trackDataListener1, trackDataListener2); + verify(contentProviderUtils); + verify(dataSource); + verify(trackDataListener1); + verify(trackDataListener2); + reset(contentProviderUtils, dataSource, trackDataListener1, trackDataListener2); } + //TODO /** * Tests the method {@link TrackDataHub#start()}. */ - public void testRegisterTracksTableListener() { - Capture observerCapture = new Capture(); - dataSource.registerContentObserver(eq(TracksColumns.CONTENT_URI), capture(observerCapture)); - Track track = TrackStubUtils.createTrack(1); - expect(contentProviderUtils.getTrack(capture(new Capture()))).andReturn(track); - // Make the track id is unique. - PreferencesUtils.setLong(context, R.string.recording_track_id_key, System.currentTimeMillis()); - trackDataListener1.onTrackUpdated(track); - replay(); - trackDataHub.start(); - trackDataHub.registerTrackDataListener( - trackDataListener1, EnumSet.of(TrackDataType.TRACKS_TABLE)); - verifyAndReset(); - } +// @Test +// public void testRegisterTracksTableListener() { +// ArgumentCaptor observerCapture = ArgumentCaptor.forClass(ContentObserver.class); +// dataSource.registerContentObserver(eq(TracksColumns.CONTENT_URI), observerCapture.capture()); +// Track track = TrackStubUtils.createTrack(1); +// +// when(contentProviderUtils.getTrack(capture(new Capture())).thenReturn(track); +// // Make the track id is unique. +// PreferencesUtils.setLong(context, R.string.recording_track_id_key, System.currentTimeMillis()); +// trackDataListener1.onTrackUpdated(track); +// replay(); +// trackDataHub.start(); +// trackDataHub.registerTrackDataListener(trackDataListener1, EnumSet.of(TrackDataType.TRACKS_TABLE)); +// verifyAndReset(); +// } + //TODO /** * Tests the method {@link TrackDataHub#start()}. */ - public void testRegisterWaypointsTableListener() { - Capture observerCapture = new Capture(); - dataSource.registerContentObserver(eq(WaypointsColumns.CONTENT_URI), capture(observerCapture)); - expect(contentProviderUtils.getWaypointCursor( - capture(new Capture()), capture(new Capture()), - capture(new Capture()))).andReturn(null); - trackDataListener1.clearWaypoints(); - trackDataListener1.onNewWaypointsDone(); - replay(); - trackDataHub.start(); - trackDataHub.registerTrackDataListener( - trackDataListener1, EnumSet.of(TrackDataType.WAYPOINTS_TABLE)); - verifyAndReset(); - } +// @Test +// public void testRegisterWaypointsTableListener() { +// ArgumentCaptor observerCapture = ArgumentCaptor.forClass(ContentObserver.class); +// dataSource.registerContentObserver(eq(WaypointsColumns.CONTENT_URI), observerCapture.capture()); +// when(contentProviderUtils.getWaypointCursor( +// capture(new Capture()), capture(new Capture()), +// capture(new Capture()))).thenReturn(null); +// trackDataListener1.clearWaypoints(); +// trackDataListener1.onNewWaypointsDone(); +// replay(); +// trackDataHub.start(); +// trackDataHub.registerTrackDataListener(trackDataListener1, EnumSet.of(TrackDataType.WAYPOINTS_TABLE)); +// verifyAndReset(); +// } /** * Tests the method {@link TrackDataHub#notifyPreferenceChanged(String)} when * the key is R.string.min_required_accuracy_key. */ + @Test public void testNotifyPreferenceChanged_minRequiredAccuracy() { int value = 1; PreferencesUtils.setInt(context, R.string.recording_gps_accuracy_key, value); - trackDataHub.notifyPreferenceChanged(PreferencesUtils - .getKey(context, R.string.recording_gps_accuracy_key)); - assertEquals(value, trackDataHub.getRecordingGpsAccuracy()); + trackDataHub.notifyPreferenceChanged(PreferencesUtils.getKey(context, R.string.recording_gps_accuracy_key)); + Assert.assertEquals(value, trackDataHub.getRecordingGpsAccuracy()); PreferencesUtils.setInt(context, R.string.recording_gps_accuracy_key, value + 1); - trackDataHub.notifyPreferenceChanged(PreferencesUtils - .getKey(context, R.string.recording_gps_accuracy_key)); - assertEquals(value + 1, trackDataHub.getRecordingGpsAccuracy()); + trackDataHub.notifyPreferenceChanged(PreferencesUtils.getKey(context, R.string.recording_gps_accuracy_key)); + Assert.assertEquals(value + 1, trackDataHub.getRecordingGpsAccuracy()); } /** * Tests the method {@link TrackDataHub#notifyPreferenceChanged(String)} when * the key is R.string.metric_units_key. */ + @Test public void testNotifyPreferenceChanged_metricUnitsNoNotify() { String imperialUnits = context.getString(R.string.stats_units_imperial); PreferencesUtils.setString(context, R.string.stats_units_key, imperialUnits); - trackDataHub.notifyPreferenceChanged( - PreferencesUtils.getKey(context, R.string.stats_units_key)); - assertEquals(false, trackDataHub.isMetricUnits()); - PreferencesUtils.setString( - context, R.string.stats_units_key, PreferencesUtils.STATS_UNITS_DEFAULT); - trackDataHub.notifyPreferenceChanged( - PreferencesUtils.getKey(context, R.string.stats_units_key)); - assertEquals(true, trackDataHub.isMetricUnits()); + trackDataHub.notifyPreferenceChanged(PreferencesUtils.getKey(context, R.string.stats_units_key)); + Assert.assertFalse(trackDataHub.isMetricUnits()); + PreferencesUtils.setString(context, R.string.stats_units_key, PreferencesUtils.STATS_UNITS_DEFAULT); + trackDataHub.notifyPreferenceChanged(PreferencesUtils.getKey(context, R.string.stats_units_key)); + Assert.assertTrue(trackDataHub.isMetricUnits()); } /** * Tests the method {@link TrackDataHub#notifyPreferenceChanged(String)} when * the key is R.string.metric_units_key. */ + @Test public void testNotifyPreferenceChanged_reportSpeedNoNotify() { String value = context.getString(R.string.stats_rate_pace); PreferencesUtils.setString(context, R.string.stats_rate_key, value); - trackDataHub.notifyPreferenceChanged(PreferencesUtils - .getKey(context, R.string.stats_rate_key)); - assertEquals(false, trackDataHub.isReportSpeed()); + trackDataHub.notifyPreferenceChanged(PreferencesUtils.getKey(context, R.string.stats_rate_key)); + Assert.assertFalse(trackDataHub.isReportSpeed()); value = context.getString(R.string.stats_rate_speed); PreferencesUtils.setString(context, R.string.stats_rate_key, value); - trackDataHub.notifyPreferenceChanged(PreferencesUtils - .getKey(context, R.string.stats_rate_key)); - assertEquals(true, trackDataHub.isReportSpeed()); + trackDataHub.notifyPreferenceChanged(PreferencesUtils.getKey(context, R.string.stats_rate_key)); + Assert.assertTrue(trackDataHub.isReportSpeed()); } + //TODO /** * Fixed size cursor answer. * * @author Jimmy Shih */ - private static class FixedSizeCursorAnswer implements IAnswer { + private static class FixedSizeCursorAnswer { private final int size; public FixedSizeCursorAnswer(int size) { this.size = size; } - - @Override - public Cursor answer() throws Throwable { - MatrixCursor cursor = new MatrixCursor(new String[]{BaseColumns._ID}); - for (long i = 0; i < size; i++) { - cursor.addRow(new Object[]{i}); - } - return cursor; - } +// +// @Override +// public Cursor answer() throws Throwable { +// MatrixCursor cursor = new MatrixCursor(new String[]{BaseColumns._ID}); +// for (long i = 0; i < size; i++) { +// cursor.addRow(new Object[]{i}); +// } +// return cursor; +// } } /** diff --git a/src/main/java/de/dennisguse/opentracks/util/PreferencesUtils.java b/src/main/java/de/dennisguse/opentracks/util/PreferencesUtils.java index ca96f1403..70b8d5701 100644 --- a/src/main/java/de/dennisguse/opentracks/util/PreferencesUtils.java +++ b/src/main/java/de/dennisguse/opentracks/util/PreferencesUtils.java @@ -55,7 +55,6 @@ public class PreferencesUtils { // Value for split_frequency_key and voice_frequency_key public static final int FREQUENCY_OFF = 0; - public static final int MAP_TYPE_DEFAULT = 1; public static final int MAX_RECORDING_DISTANCE_DEFAULT = 200; // Values for min_recording_interval_key