diff --git a/MyTracksTest_E2E/src/com/google/android/apps/mytracks/endtoendtest/EndToEndTestUtils.java b/MyTracksTest_E2E/src/com/google/android/apps/mytracks/endtoendtest/EndToEndTestUtils.java index 1edae4292..c374edc41 100644 --- a/MyTracksTest_E2E/src/com/google/android/apps/mytracks/endtoendtest/EndToEndTestUtils.java +++ b/MyTracksTest_E2E/src/com/google/android/apps/mytracks/endtoendtest/EndToEndTestUtils.java @@ -18,7 +18,6 @@ package com.google.android.apps.mytracks.endtoendtest; import com.google.android.apps.mytracks.ChartView; import com.google.android.apps.mytracks.TrackListActivity; -import com.google.android.apps.mytracks.util.StringUtils; import com.google.android.maps.mytracks.R; import com.robotium.solo.Solo; @@ -807,15 +806,15 @@ public class EndToEndTestUtils { */ public static void checkNotRecording() { instrumentation.waitForIdleSync(); - Assert.assertEquals(trackListActivity.getString(R.string.image_record), (String) SOLO - .getCurrentActivity().findViewById(R.id.track_controller_record).getContentDescription()); - Assert.assertFalse(SOLO.getCurrentActivity().findViewById(R.id.track_controller_stop) - .isEnabled()); + Assert.assertEquals(trackListActivity.getString(R.string.image_record), + (String) SOLO.getCurrentActivity() + .findViewById(R.id.track_controller_record).getContentDescription()); + Assert.assertFalse( + SOLO.getCurrentActivity().findViewById(R.id.track_controller_stop).isEnabled()); Assert.assertNull(findTextView(trackListActivity.getString(R.string.generic_recording))); Assert.assertNull(findTextView(trackListActivity.getString(R.string.generic_paused))); - TextView totalTime = (TextView) SOLO.getCurrentActivity().findViewById( - R.id.track_controller_total_time); - Assert.assertEquals(StringUtils.formatElapsedTimeWithHour(0), totalTime.getText().toString()); + Assert.assertFalse( + SOLO.getCurrentActivity().findViewById(R.id.track_controller_total_time).isShown()); } /** diff --git a/MyTracksTest_E2E/src/com/google/android/apps/mytracks/endtoendtest/common/PauseRecordingTest.java b/MyTracksTest_E2E/src/com/google/android/apps/mytracks/endtoendtest/common/PauseRecordingTest.java deleted file mode 100644 index 3237b2c92..000000000 --- a/MyTracksTest_E2E/src/com/google/android/apps/mytracks/endtoendtest/common/PauseRecordingTest.java +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Copyright 2012 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ -package com.google.android.apps.mytracks.endtoendtest.common; - -import com.google.android.apps.mytracks.TrackListActivity; -import com.google.android.apps.mytracks.content.MyTracksProviderUtils; -import com.google.android.apps.mytracks.content.MyTracksProviderUtils.LocationIterator; -import com.google.android.apps.mytracks.endtoendtest.EndToEndTestUtils; -import com.google.android.apps.mytracks.services.TrackRecordingService; - -import android.app.Instrumentation; -import android.location.Location; -import android.test.ActivityInstrumentationTestCase2; - - -/** - * Tests the pause and resume of recording. - * - * @author Youtao Liu - */ -public class PauseRecordingTest extends ActivityInstrumentationTestCase2 { - - private Instrumentation instrumentation; - private TrackListActivity activityMyTracks; - - public PauseRecordingTest() { - super(TrackListActivity.class); - } - - @Override - protected void setUp() throws Exception { - super.setUp(); - instrumentation = getInstrumentation(); - activityMyTracks = getActivity(); - EndToEndTestUtils.setupForAllTest(instrumentation, activityMyTracks); - } - - /** - * Tests the pause recording feature. Stops the recording after pause. - */ - public void testPauseRecording_stopAfterPause() { - int gpsSignalNumber = 3; - - EndToEndTestUtils.checkNotRecording(); - // Start recording - EndToEndTestUtils.startRecording(); - EndToEndTestUtils.checkUnderRecording(); - EndToEndTestUtils.sendGps(gpsSignalNumber); - - // Pause - EndToEndTestUtils.pauseRecording(); - EndToEndTestUtils.checkUnderPaused(); - EndToEndTestUtils.sendGps(gpsSignalNumber, gpsSignalNumber); - - // Stop - EndToEndTestUtils.stopRecording(true); - checkPointsInPausedTrack(gpsSignalNumber, 1, 0); - EndToEndTestUtils.SOLO.goBack(); - EndToEndTestUtils.checkNotRecording(); - } - - /** - * Tests the pause recording feature. Stops the recording after resume. - */ - public void testPauseRecording_stopAfterResume() { - int gpsSignalNumber = 0; - - EndToEndTestUtils.checkNotRecording(); - // Start recording - EndToEndTestUtils.startRecording(); - EndToEndTestUtils.checkUnderRecording(); - EndToEndTestUtils.sendGps(gpsSignalNumber); - - // Pause - EndToEndTestUtils.pauseRecording(); - EndToEndTestUtils.checkUnderPaused(); - - // Send Gps signal after pause. - // Add 10 to make these signals are apparently different. - EndToEndTestUtils.sendGps(gpsSignalNumber, gpsSignalNumber + 10, 10); - - // Resume - EndToEndTestUtils.resumeRecording(); - EndToEndTestUtils.checkUnderRecording(); - EndToEndTestUtils.sendGps(gpsSignalNumber, gpsSignalNumber); - - // Stop - EndToEndTestUtils.stopRecording(true); - checkPointsInPausedTrack(gpsSignalNumber * 2, 1, 1); - EndToEndTestUtils.SOLO.goBack(); - EndToEndTestUtils.checkNotRecording(); - } - - /** - * Check the points in the last track. - * - * @param expectPointNumber the number of location points - * @param expectPauseNumber the number of pause points - * @param expectResumeNumber the number of resume points - */ - private void checkPointsInPausedTrack(int expectPointNumber, int expectPauseNumber, - int expectResumeNumber) { - if (EndToEndTestUtils.isEmulator) { - int numberOfPoints = 0; - int numberOfPausePoint = 0; - int numberOfResumePoint = 0; - - MyTracksProviderUtils providerUtils = MyTracksProviderUtils.Factory.get(activityMyTracks - .getApplicationContext()); - long trackId = providerUtils.getLastTrack().getId(); - LocationIterator points = providerUtils.getTrackPointLocationIterator(trackId, 0, false, - MyTracksProviderUtils.DEFAULT_LOCATION_FACTORY); - while (points.hasNext()) { - Location onePoint = points.next(); - double latitude = onePoint.getLatitude(); - double longitude = onePoint.getLongitude(); - if (latitude == TrackRecordingService.PAUSE_LATITUDE) { - numberOfPausePoint++; - } else if (latitude == TrackRecordingService.RESUME_LATITUDE) { - numberOfResumePoint++; - } else { - assertEquals(numberOfPoints, (int) ((latitude - EndToEndTestUtils.START_LATITUDE) - / EndToEndTestUtils.DELTA_LADITUDE + 0.5)); - assertEquals(numberOfPoints, (int) ((longitude - EndToEndTestUtils.START_LONGITUDE) - / EndToEndTestUtils.DELTA_LONGITUDE + 0.5)); - numberOfPoints++; - } - } - - assertEquals(expectPointNumber, numberOfPoints); - assertEquals(expectPauseNumber, numberOfPausePoint); - assertEquals(expectResumeNumber, numberOfResumePoint); - } - } - - @Override - protected void tearDown() throws Exception { - EndToEndTestUtils.SOLO.finishOpenedActivities(); - super.tearDown(); - } - -} diff --git a/MyTracksTest_E2E/src/com/google/android/apps/mytracks/endtoendtest/common/PauseResumeTest.java b/MyTracksTest_E2E/src/com/google/android/apps/mytracks/endtoendtest/common/PauseResumeTest.java new file mode 100644 index 000000000..a14999ef2 --- /dev/null +++ b/MyTracksTest_E2E/src/com/google/android/apps/mytracks/endtoendtest/common/PauseResumeTest.java @@ -0,0 +1,152 @@ +/* + * Copyright 2012 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package com.google.android.apps.mytracks.endtoendtest.common; + +import com.google.android.apps.mytracks.TrackListActivity; +import com.google.android.apps.mytracks.content.MyTracksProviderUtils; +import com.google.android.apps.mytracks.content.MyTracksProviderUtils.LocationIterator; +import com.google.android.apps.mytracks.endtoendtest.EndToEndTestUtils; +import com.google.android.apps.mytracks.services.TrackRecordingService; + +import android.app.Instrumentation; +import android.location.Location; +import android.test.ActivityInstrumentationTestCase2; + +/** + * Tests pause and resume during a recording. + * + * @author Youtao Liu + */ +public class PauseResumeTest extends ActivityInstrumentationTestCase2 { + + private static final int SEND_INTERVAL = 100; // ms + + private Instrumentation instrumentation; + private TrackListActivity trackListActivity; + + public PauseResumeTest() { + super(TrackListActivity.class); + } + + @Override + protected void setUp() throws Exception { + super.setUp(); + instrumentation = getInstrumentation(); + trackListActivity = getActivity(); + EndToEndTestUtils.setupForAllTest(instrumentation, trackListActivity); + } + + @Override + protected void tearDown() throws Exception { + EndToEndTestUtils.SOLO.finishOpenedActivities(); + super.tearDown(); + } + + /** + * Tests stop after a pause. + */ + public void testStopAfterPause() { + int firstBatch = 3; + int secondBatch = 10; + + EndToEndTestUtils.checkNotRecording(); + + // Start a recording + EndToEndTestUtils.startRecording(); + EndToEndTestUtils.checkUnderRecording(); + EndToEndTestUtils.sendGps(firstBatch); + + // Pause the recording + EndToEndTestUtils.pauseRecording(); + EndToEndTestUtils.checkUnderPaused(); + EndToEndTestUtils.sendGps(secondBatch, firstBatch); + + // Stop the recording + EndToEndTestUtils.stopRecording(true); + checkTrackLocation(firstBatch, 1, 0); + EndToEndTestUtils.SOLO.goBack(); + EndToEndTestUtils.checkNotRecording(); + } + + /** + * Tests stop after a resume. + */ + public void testStopAfterResume() { + int firstBatch = 3; + int secondBatch = 5; + int thirdBatch = 7; + + EndToEndTestUtils.checkNotRecording(); + + // Start a recording + EndToEndTestUtils.startRecording(); + EndToEndTestUtils.checkUnderRecording(); + EndToEndTestUtils.sendGps(firstBatch); + + // Pause the recording + EndToEndTestUtils.pauseRecording(); + EndToEndTestUtils.checkUnderPaused(); + + // Send gps signal after pause + EndToEndTestUtils.sendGps(secondBatch, firstBatch, SEND_INTERVAL); + + // Resume the recording + EndToEndTestUtils.resumeRecording(); + EndToEndTestUtils.checkUnderRecording(); + EndToEndTestUtils.sendGps(thirdBatch, firstBatch + secondBatch); + + // Stop the recordinga + EndToEndTestUtils.stopRecording(true); + checkTrackLocation(firstBatch + secondBatch, 1, 1); + EndToEndTestUtils.SOLO.goBack(); + EndToEndTestUtils.checkNotRecording(); + } + + /** + * Check the last track's location. + * + * @param expectedPoint the number of expected points + * @param expectedPause the number of expected pauses + * @param expectedResume the number of expected resumes + */ + private void checkTrackLocation(int expectedPoint, int expectedPause, int expectedResume) { + if (EndToEndTestUtils.isEmulator) { + int point = 0; + int pause = 0; + int resume = 0; + + MyTracksProviderUtils myTracksProviderUtils = MyTracksProviderUtils.Factory.get( + trackListActivity.getApplicationContext()); + long trackId = myTracksProviderUtils.getLastTrack().getId(); + LocationIterator locationIterator = myTracksProviderUtils.getTrackPointLocationIterator( + trackId, 0, false, MyTracksProviderUtils.DEFAULT_LOCATION_FACTORY); + while (locationIterator.hasNext()) { + Location location = locationIterator.next(); + double latitude = location.getLatitude(); + if (latitude == TrackRecordingService.PAUSE_LATITUDE) { + pause++; + } else if (latitude == TrackRecordingService.RESUME_LATITUDE) { + resume++; + } else { + point++; + } + } + assertEquals(expectedPoint, point); + assertEquals(expectedPause, pause); + assertEquals(expectedResume, resume); + } + } +}