From 09102ab6db7f56cf52b1b68fba792e62690231ac Mon Sep 17 00:00:00 2001 From: Jimmy Shih Date: Fri, 31 Jan 2014 14:12:33 -0800 Subject: [PATCH] Code cleanup: SettingsTest.java --- .../endtoendtest/EndToEndTestUtils.java | 16 - .../endtoendtest/common/SettingTest.java | 415 ------------------ .../endtoendtest/common/SettingsTest.java | 296 +++++++++++++ 3 files changed, 296 insertions(+), 431 deletions(-) delete mode 100644 MyTracksTest_E2E/src/com/google/android/apps/mytracks/endtoendtest/common/SettingTest.java create mode 100644 MyTracksTest_E2E/src/com/google/android/apps/mytracks/endtoendtest/common/SettingsTest.java 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 c374edc41..d2efaa637 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 @@ -16,7 +16,6 @@ package com.google.android.apps.mytracks.endtoendtest; * the License. */ -import com.google.android.apps.mytracks.ChartView; import com.google.android.apps.mytracks.TrackListActivity; import com.google.android.maps.mytracks.R; import com.robotium.solo.Solo; @@ -733,21 +732,6 @@ public class EndToEndTestUtils { return null; } - /** - * Gets the ChartView. - * - * @return the ChartView or null if not find - */ - public static ChartView getChartView() { - ArrayList views = SOLO.getViews(); - for (View view : views) { - if (view instanceof ChartView) { - return (ChartView) view; - } - } - return null; - } - /** * Resets all settings of MyTracks. * diff --git a/MyTracksTest_E2E/src/com/google/android/apps/mytracks/endtoendtest/common/SettingTest.java b/MyTracksTest_E2E/src/com/google/android/apps/mytracks/endtoendtest/common/SettingTest.java deleted file mode 100644 index cae69ea67..000000000 --- a/MyTracksTest_E2E/src/com/google/android/apps/mytracks/endtoendtest/common/SettingTest.java +++ /dev/null @@ -1,415 +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.ChartView; -import com.google.android.apps.mytracks.TrackListActivity; -import com.google.android.apps.mytracks.endtoendtest.EndToEndTestUtils; -import com.google.android.apps.mytracks.util.PreferencesUtils; -import com.google.android.maps.mytracks.R; - -import android.app.Instrumentation; -import android.content.Context; -import android.test.ActivityInstrumentationTestCase2; -import android.util.Log; -import android.widget.CheckBox; -import android.widget.ListView; - -import java.util.ArrayList; - -/** - * Tests the setting of MyTracks. - * - * @author Youtao Liu - */ -public class SettingTest extends ActivityInstrumentationTestCase2 { - - private static final String TAG = SettingTest.class.getSimpleName(); - - private Instrumentation instrumentation; - private TrackListActivity activityMyTracks; - - public SettingTest() { - super(TrackListActivity.class); - } - - @Override - protected void setUp() throws Exception { - super.setUp(); - instrumentation = getInstrumentation(); - activityMyTracks = getActivity(); - EndToEndTestUtils.setupForAllTest(instrumentation, activityMyTracks); - } - - /** - * Changes some settings and then reset them. This test case tests three - * points: - *
    - *
  • Resets all settings.
  • - *
  • Changes the setting of Display.
  • - *
  • Changes the setting of Sharing.
  • - *
- */ - public void testChangeAndReset() { - // Reset all settings. - EndToEndTestUtils.resetAllSettings(activityMyTracks, true); - // Change a setting of Map. - EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.track_detail_stats_tab)); - instrumentation.waitForIdleSync(); - - // Rotate on a sub setting page. - EndToEndTestUtils.rotateCurrentActivity(); - EndToEndTestUtils.SOLO.waitForText(activityMyTracks - .getString(R.string.settings_stats_units_title)); - ArrayList displayCheckBoxs = EndToEndTestUtils.SOLO.getCurrentViews(CheckBox.class); - boolean useMetric = displayCheckBoxs.get(0).isChecked(); - EndToEndTestUtils.SOLO.clickOnCheckBox(0); - instrumentation.waitForIdleSync(); - EndToEndTestUtils.SOLO.goBack(); - - // Change a setting of sharing. - EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.settings_advanced)); - assertTrue(EndToEndTestUtils.SOLO.waitForText( - activityMyTracks.getString(R.string.settings_sharing_allow_access), 1, - EndToEndTestUtils.NORMAL_WAIT_TIME)); - ArrayList sharingCheckBoxs = EndToEndTestUtils.SOLO.getCurrentViews(CheckBox.class); - boolean newMapsPublic = sharingCheckBoxs.get(0).isChecked(); - EndToEndTestUtils.SOLO.clickOnCheckBox(0); - instrumentation.waitForIdleSync(); - assertTrue(EndToEndTestUtils.SOLO.waitForText( - activityMyTracks.getString(R.string.settings_sharing_allow_access_confirm_message), 1, - EndToEndTestUtils.NORMAL_WAIT_TIME)); - EndToEndTestUtils.SOLO.clickOnButton(activityMyTracks.getString(R.string.generic_yes)); - instrumentation.waitForIdleSync(); - assertEquals(!newMapsPublic, EndToEndTestUtils.SOLO.getCurrentViews(CheckBox.class).get(0) - .isChecked()); - EndToEndTestUtils.SOLO.goBack(); - - // Reset all settings. - EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.settings_advanced)); - EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.settings_reset)); - EndToEndTestUtils.getButtonOnScreen(activityMyTracks.getString(R.string.generic_yes), true, - true); - EndToEndTestUtils.SOLO.waitForText(activityMyTracks.getString(R.string.settings_reset_done), 1, - EndToEndTestUtils.SHORT_WAIT_TIME); - instrumentation.waitForIdleSync(); - EndToEndTestUtils.SOLO.goBack(); - - // Check settings. - // Add following scroll up for a bug of Robotium. - EndToEndTestUtils.SOLO.waitForText(activityMyTracks.getString(R.string.track_detail_stats_tab), - 1, EndToEndTestUtils.NORMAL_WAIT_TIME); - EndToEndTestUtils.SOLO.scrollUp(); - EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.track_detail_stats_tab)); - assertTrue(EndToEndTestUtils.SOLO.waitForText( - activityMyTracks.getString(R.string.settings_stats_units_title), 1, - EndToEndTestUtils.LONG_WAIT_TIME)); - displayCheckBoxs = EndToEndTestUtils.SOLO.getCurrentViews(CheckBox.class); - Log.d(TAG, "useMetric:" + useMetric); - assertEquals(useMetric, displayCheckBoxs.get(0).isChecked()); - - EndToEndTestUtils.SOLO.goBack(); - EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.settings_advanced)); - EndToEndTestUtils.SOLO.waitForText(activityMyTracks - .getString(R.string.settings_sharing_allow_access)); - sharingCheckBoxs = EndToEndTestUtils.SOLO.getCurrentViews(CheckBox.class); - assertEquals(newMapsPublic, sharingCheckBoxs.get(0).isChecked()); - } - - /** - * Tests the change of preferred units. - */ - public void testChangePreferredUnits() { - EndToEndTestUtils.createTrackIfEmpty(5, false); - - // Change it and verify it. - ChangePreferredUnits(); - - // Change it back and verify it. - ChangePreferredUnits(); - } - - /** - * Tests the change of stats settings during recording on chart view. - */ - public void testChangeStatsSettings_underRecording_chart() { - EndToEndTestUtils.startRecording(); - - // Test just change preferred units when display CHART tab. - EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.track_detail_chart_tab)); - EndToEndTestUtils.sendGps(3); - ChangeStatsSettings(true, false, false, false); - EndToEndTestUtils.sendGps(3, 3); - EndToEndTestUtils.stopRecording(true); - - } - - /** - * Tests the change of stats settings during recording on stats tab. - */ - public void testChangeStatsSettings_underRecording_stats() { - EndToEndTestUtils.startRecording(); - // Test change preferred units and preferred rate when display STATS tab. - EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.track_detail_stats_tab)); - EndToEndTestUtils.sendGps(3); - ChangeStatsSettings(true, true, false, false); - EndToEndTestUtils.sendGps(3, 3); - EndToEndTestUtils.stopRecording(true); - - } - - /** - * Tests displaying elevation, grade and latitude and longitude information in - * Stats tab. - */ - public void testChangeStatsSettings_showExtraInfos() { - EndToEndTestUtils.resetAllSettings(activityMyTracks, false); - ChangeStatsSettings(false, false, true, true); - EndToEndTestUtils.startRecording(); - instrumentation.waitForIdleSync(); - EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.track_detail_stats_tab)); - assertTrue(EndToEndTestUtils.SOLO.waitForText( - activityMyTracks.getString(R.string.stats_elevation), 1, - EndToEndTestUtils.NORMAL_WAIT_TIME, true)); - assertTrue(EndToEndTestUtils.SOLO.waitForText(activityMyTracks.getString(R.string.stats_grade))); - assertTrue(EndToEndTestUtils.SOLO.waitForText(activityMyTracks - .getString(R.string.stats_latitude))); - - EndToEndTestUtils.stopRecording(true); - assertTrue(EndToEndTestUtils.SOLO.waitForText( - activityMyTracks.getString(R.string.stats_elevation), 1, - EndToEndTestUtils.NORMAL_WAIT_TIME, true)); - assertTrue(EndToEndTestUtils.SOLO.waitForText(activityMyTracks.getString(R.string.stats_grade))); - assertTrue(EndToEndTestUtils.findTextView(activityMyTracks.getString(R.string.stats_latitude)) == null); - } - - /** - * Changes settings of preferred units and preferred rate. - * - * @param changeUnits is change the preferred unit - * @param changeRate is change the preferred rate - * @param changeGradeElevation is change the grade and elevation - * @param changeLatLong is change the latitude and longitude - */ - private void ChangeStatsSettings(boolean changeUnits, boolean changeRate, - boolean changeGradeElevation, boolean changeLatLong) { - EndToEndTestUtils.findMenuItem(activityMyTracks.getString(R.string.menu_settings), true); - EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.track_detail_stats_tab)); - assertTrue(EndToEndTestUtils.SOLO.waitForText(activityMyTracks - .getString(R.string.settings_stats_units_title))); - - // Change preferred units. - if (changeUnits) { - boolean isImperial = EndToEndTestUtils.findTextViewInView( - activityMyTracks.getString(R.string.settings_stats_units_imperial), - EndToEndTestUtils.SOLO.getCurrentViews(ListView.class).get(0)) != null; - - // Change preferred units. - EndToEndTestUtils.SOLO.clickOnText(activityMyTracks - .getString(R.string.settings_stats_units_title)); - if (isImperial) { - EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.unit_kilometer)); - } else { - EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.unit_feet)); - } - } - if (changeRate) { - EndToEndTestUtils.SOLO.clickOnText(activityMyTracks - .getString(R.string.settings_stats_rate_title)); - } - if (changeGradeElevation) { - EndToEndTestUtils.SOLO.clickOnText(activityMyTracks - .getString(R.string.settings_stats_grade_elevation)); - } - if (changeLatLong) { - EndToEndTestUtils.SOLO.clickOnText(activityMyTracks - .getString(R.string.settings_stats_coordinate)); - } - EndToEndTestUtils.SOLO.goBack(); - EndToEndTestUtils.SOLO.goBack(); - } - - /** - * Changes PreferredUnits and verifies the change. - */ - private void ChangePreferredUnits() { - EndToEndTestUtils.findMenuItem(activityMyTracks.getString(R.string.menu_settings), true); - EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.track_detail_stats_tab)); - assertTrue(EndToEndTestUtils.SOLO.waitForText(activityMyTracks - .getString(R.string.settings_stats_units_title))); - - boolean isImperial = EndToEndTestUtils.findTextViewInView(activityMyTracks - .getString(R.string.settings_stats_units_imperial), - EndToEndTestUtils.SOLO.getCurrentViews(ListView.class).get(0)) != null; - - // Change preferred units. - EndToEndTestUtils.SOLO.clickOnText(activityMyTracks - .getString(R.string.settings_stats_units_title)); - if (isImperial) { - EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.unit_kilometer)); - } else { - EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.unit_feet)); - } - isImperial = !isImperial; - EndToEndTestUtils.SOLO.goBack(); - EndToEndTestUtils.SOLO.goBack(); - EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.track_detail_chart_tab)); - instrumentation.waitForIdleSync(); - ChartView chartView = EndToEndTestUtils.getChartView(); - assertEquals(!isImperial, chartView.isMetricUnits()); - } - - /** - * Tests the setting of recording. This test changes the default name and - * activity of tracks, and the creates a new track to check it. - */ - public void testRecording() { - EndToEndTestUtils.findMenuItem(activityMyTracks.getString(R.string.menu_settings), true); - EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.settings_recording)); - - // Changes the setting of recording name. - EndToEndTestUtils.SOLO.clickOnText(activityMyTracks - .getString(R.string.settings_recording_track_name_title)); - EndToEndTestUtils.SOLO.clickOnText(activityMyTracks - .getString(R.string.settings_recording_track_name_number_option)); - - // Changes the setting of default activity. - EndToEndTestUtils.SOLO.clickOnText(activityMyTracks - .getString(R.string.settings_recording_default_activity_title)); - EndToEndTestUtils.enterTextAvoidSoftKeyBoard(0, EndToEndTestUtils.activityType); - EndToEndTestUtils - .getButtonOnScreen(activityMyTracks.getString(R.string.generic_ok), true, true); - EndToEndTestUtils.SOLO.goBack(); - EndToEndTestUtils.SOLO.goBack(); - - EndToEndTestUtils.startRecording(); - instrumentation.waitForIdleSync(); - EndToEndTestUtils.stopRecording(false); - assertTrue(EndToEndTestUtils.SOLO.searchText(activityMyTracks.getString( - R.string.track_name_format).split(" ")[0])); - assertTrue(EndToEndTestUtils.SOLO.searchText(EndToEndTestUtils.activityType)); - EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.generic_save)); - } - - /** - * Tests the setting of fixed track color settings. - */ - public void testTrackColorSettings_fixed() { - Context context = activityMyTracks.getApplicationContext(); - EndToEndTestUtils.findMenuItem(activityMyTracks.getString(R.string.menu_settings), true); - EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.menu_map)); - String errorString = "error"; - - EndToEndTestUtils.SOLO.clickOnText(activityMyTracks - .getString(R.string.settings_map_track_color_mode)); - instrumentation.waitForIdleSync(); - EndToEndTestUtils.SOLO.clickOnText(activityMyTracks - .getString(R.string.settings_map_track_color_mode_fixed)); - EndToEndTestUtils.waitTextToDisappear(activityMyTracks - .getString(R.string.settings_map_track_color_mode_dynamic_value)); - assertEquals(activityMyTracks.getString(R.string.settings_map_track_color_mode_fixed_value), - PreferencesUtils.getString(context, R.string.track_color_mode_key, errorString)); - } - - /** - * Tests the setting of dynamic track color settings. - */ - public void testTrackColorSettings_dynamic() { - Context context = activityMyTracks.getApplicationContext(); - EndToEndTestUtils.findMenuItem(activityMyTracks.getString(R.string.menu_settings), true); - EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.menu_map)); - String errorString = "error"; - - EndToEndTestUtils.SOLO.clickOnText(activityMyTracks - .getString(R.string.settings_map_track_color_mode)); - instrumentation.waitForIdleSync(); - EndToEndTestUtils.SOLO.clickOnText(activityMyTracks - .getString(R.string.settings_map_track_color_mode_dynamic)); - EndToEndTestUtils.waitTextToDisappear(activityMyTracks - .getString(R.string.settings_map_track_color_mode_dynamic_value)); - assertEquals(activityMyTracks.getString(R.string.settings_map_track_color_mode_dynamic_value), - PreferencesUtils.getString(context, R.string.track_color_mode_key, errorString)); - } - - /** - * Tests the setting of single track color settings. - */ - public void testTrackColorSettings_single() { - Context context = activityMyTracks.getApplicationContext(); - EndToEndTestUtils.findMenuItem(activityMyTracks.getString(R.string.menu_settings), true); - EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.menu_map)); - String errorString = "error"; - EndToEndTestUtils.SOLO.clickOnText(activityMyTracks - .getString(R.string.settings_map_track_color_mode)); - instrumentation.waitForIdleSync(); - EndToEndTestUtils.SOLO.clickOnText(activityMyTracks - .getString(R.string.settings_map_track_color_mode_single)); - EndToEndTestUtils.waitTextToDisappear(activityMyTracks - .getString(R.string.settings_map_track_color_mode_dynamic_value)); - assertEquals(activityMyTracks.getString(R.string.settings_map_track_color_mode_single_value), - PreferencesUtils.getString(context, R.string.track_color_mode_key, errorString)); - } - -// /** -// * Tests the setting and menu item of sync. -// */ -// public void testSyncNowMenu() { -// EndToEndTestUtils.findMenuItem(activityMyTracks.getString(R.string.menu_settings), true); -// EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.settings_google)); -// EndToEndTestUtils.SOLO.clickOnText(activityMyTracks -// .getString(R.string.settings_google_account_title)); -// -// // Whether test account is bound. -// if (EndToEndTestUtils.SOLO.waitForText(GoogleUtils.ACCOUNT_NAME_1, 1, -// EndToEndTestUtils.TINY_WAIT_TIME)) { -// EndToEndTestUtils.SOLO.clickOnText(GoogleUtils.ACCOUNT_NAME_1); -// instrumentation.waitForIdleSync(); -// EndToEndTestUtils.SOLO.waitForText(activityMyTracks.getString(R.string.menu_sync_drive)); -// assertTrue(EndToEndTestUtils.findTextView( -// activityMyTracks.getString(R.string.menu_sync_drive)).isEnabled()); -// } else { -// EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.value_none)); -// instrumentation.waitForIdleSync(); -// EndToEndTestUtils.SOLO.waitForText(activityMyTracks.getString(R.string.menu_sync_drive)); -// assertFalse(EndToEndTestUtils.findTextView( -// activityMyTracks.getString(R.string.menu_sync_drive)).isEnabled()); -// return; -// } -// -// EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.menu_sync_drive)); -// -// boolean isSyncChecked = false; -// if (EndToEndTestUtils.SOLO.waitForText( -// activityMyTracks.getString(R.string.sync_drive_confirm_message).split("%")[0], 1, -// EndToEndTestUtils.SHORT_WAIT_TIME)) { -// isSyncChecked = true; -// } else { -// isSyncChecked = false; -// } -// EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.generic_yes)); -// EndToEndTestUtils.SOLO.goBack(); -// EndToEndTestUtils.SOLO.goBack(); -// assertEquals(isSyncChecked, -// EndToEndTestUtils.findMenuItem(activityMyTracks.getString(R.string.menu_sync_now), false)); -// } - - @Override - protected void tearDown() throws Exception { - EndToEndTestUtils.SOLO.finishOpenedActivities(); - super.tearDown(); - } - -} diff --git a/MyTracksTest_E2E/src/com/google/android/apps/mytracks/endtoendtest/common/SettingsTest.java b/MyTracksTest_E2E/src/com/google/android/apps/mytracks/endtoendtest/common/SettingsTest.java new file mode 100644 index 000000000..556ef1c08 --- /dev/null +++ b/MyTracksTest_E2E/src/com/google/android/apps/mytracks/endtoendtest/common/SettingsTest.java @@ -0,0 +1,296 @@ +/* + * 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.endtoendtest.EndToEndTestUtils; +import com.google.android.maps.mytracks.R; + +import android.app.Instrumentation; +import android.test.ActivityInstrumentationTestCase2; +import android.widget.CheckBox; + +import junit.framework.Assert; + +/** + * Tests the settings. + * + * @author Youtao Liu + */ +public class SettingsTest extends ActivityInstrumentationTestCase2 { + + private static final String GMAIL_COM = "gmail.com"; + private static final String NEW_ACTIVITY_TYPE = "NewActivityType"; + + private Instrumentation instrumentation; + private TrackListActivity trackListActivity; + + public SettingsTest() { + 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 changing preferred units to imperial. + */ + public void testPreferredUnits_imperial() { + testPreferredUnits(R.string.unit_mile); + } + + /** + * Tests changing preferred units to metric. + */ + public void testPreferredUnits_metric() { + testPreferredUnits(R.string.unit_kilometer); + } + + /** + * Tests changing preferred units while recording and viewing the chart tab. + */ + public void testPreferredUnitsRecording_chart() { + testPreferredUnitsRecording(R.string.track_detail_chart_tab); + } + + /** + * Tests changing preferred units while recording and viewing the stats tab. + */ + public void testPreferredUnitsRecording_stats() { + testPreferredUnitsRecording(R.string.track_detail_stats_tab); + } + + /** + * Tests changing preferred units while recording and viewing the map tab. + */ + public void testPreferredUnitsRecording_map() { + testPreferredUnitsRecording(R.string.track_detail_map_tab); + } + + /** + * Tests grade/elevation and latitude/longitude.. + */ + public void testGradeElevationAndLatitudeLongitude() { + // Ennable grade/elevation and latitude/longitude + EndToEndTestUtils.findMenuItem(trackListActivity.getString(R.string.menu_settings), true); + EndToEndTestUtils.SOLO.clickOnText( + trackListActivity.getString(R.string.track_detail_stats_tab)); + assertTrue(EndToEndTestUtils.SOLO.waitForText( + trackListActivity.getString(R.string.settings_stats_units_title))); + EndToEndTestUtils.SOLO.clickOnText( + trackListActivity.getString(R.string.settings_stats_grade_elevation)); + EndToEndTestUtils.SOLO.clickOnText( + trackListActivity.getString(R.string.settings_stats_coordinate)); + EndToEndTestUtils.SOLO.goBack(); + EndToEndTestUtils.SOLO.goBack(); + + // Start recording and check stats tab + EndToEndTestUtils.startRecording(); + instrumentation.waitForIdleSync(); + EndToEndTestUtils.SOLO.clickOnText( + trackListActivity.getString(R.string.track_detail_stats_tab)); + assertTrue(EndToEndTestUtils.SOLO.waitForText( + trackListActivity.getString(R.string.stats_elevation), 1, + EndToEndTestUtils.NORMAL_WAIT_TIME, true)); + assertTrue( + EndToEndTestUtils.SOLO.waitForText(trackListActivity.getString(R.string.stats_grade))); + assertTrue( + EndToEndTestUtils.SOLO.waitForText(trackListActivity.getString(R.string.stats_latitude))); + assertTrue( + EndToEndTestUtils.SOLO.waitForText(trackListActivity.getString(R.string.stats_longitude))); + + // Stop recording and check stats tab + EndToEndTestUtils.stopRecording(true); + assertTrue(EndToEndTestUtils.SOLO.waitForText( + trackListActivity.getString(R.string.stats_elevation), 1, + EndToEndTestUtils.NORMAL_WAIT_TIME, true)); + assertTrue( + EndToEndTestUtils.SOLO.waitForText(trackListActivity.getString(R.string.stats_grade))); + assertNull( + EndToEndTestUtils.findTextView(trackListActivity.getString(R.string.stats_latitude))); + assertNull( + EndToEndTestUtils.findTextView(trackListActivity.getString(R.string.stats_longitude))); + } + + /** + * Tests default track name and default activity type. + */ + public void testDefaultTrackNameAndDefaultActivityType() { + EndToEndTestUtils.findMenuItem(trackListActivity.getString(R.string.menu_settings), true); + EndToEndTestUtils.SOLO.clickOnText(trackListActivity.getString(R.string.settings_recording)); + + // Change the default track name to number + EndToEndTestUtils.SOLO.clickOnText( + trackListActivity.getString(R.string.settings_recording_track_name_title)); + EndToEndTestUtils.SOLO.clickOnText( + trackListActivity.getString(R.string.settings_recording_track_name_number_option)); + + // Change the default activity type to NEW_ACTIVITY_TYPE + EndToEndTestUtils.SOLO.clickOnText( + trackListActivity.getString(R.string.settings_recording_default_activity_title)); + EndToEndTestUtils.enterTextAvoidSoftKeyBoard(0, NEW_ACTIVITY_TYPE); + EndToEndTestUtils.getButtonOnScreen( + trackListActivity.getString(R.string.generic_ok), true, true); + + EndToEndTestUtils.SOLO.goBack(); + EndToEndTestUtils.SOLO.goBack(); + + EndToEndTestUtils.startRecording(); + instrumentation.waitForIdleSync(); + EndToEndTestUtils.stopRecording(false); + assertTrue(EndToEndTestUtils.SOLO.searchText( + trackListActivity.getString(R.string.track_name_format).split(" ")[0])); + assertTrue(EndToEndTestUtils.SOLO.searchText(NEW_ACTIVITY_TYPE)); + EndToEndTestUtils.SOLO.clickOnText(trackListActivity.getString(R.string.generic_save)); + } + + /** + * Tests track color setting for fixed thresholds. + */ + public void testTrackColor_fixed() { + testTrackColor(R.string.settings_map_track_color_mode_fixed, + R.string.settings_map_track_color_mode_fixed_summary); + } + + /** + * Tests track color setting for dynamic thresholds. + */ + public void testTrackColorSettings_dynamic() { + testTrackColor(R.string.settings_map_track_color_mode_dynamic, + R.string.settings_map_track_color_mode_dynamic_summary); + } + + /** + * Tests track color setting for single color. + */ + public void testTrackColorSettings_single() { + testTrackColor(R.string.settings_map_track_color_mode_single, + R.string.settings_map_track_color_mode_single); + } + + /** + * Tests allow access. + */ + public void testAllowAccess() { + EndToEndTestUtils.findMenuItem(trackListActivity.getString(R.string.menu_settings), true); + EndToEndTestUtils.SOLO.clickOnText(trackListActivity.getString(R.string.settings_advanced)); + assertTrue(EndToEndTestUtils.SOLO.waitForText( + trackListActivity.getString(R.string.settings_sharing_allow_access), 1, + EndToEndTestUtils.NORMAL_WAIT_TIME)); + EndToEndTestUtils.SOLO.clickOnCheckBox(0); + assertTrue(EndToEndTestUtils.SOLO.waitForText( + trackListActivity.getString(R.string.settings_sharing_allow_access_confirm_message), 1, + EndToEndTestUtils.NORMAL_WAIT_TIME)); + EndToEndTestUtils.SOLO.clickOnButton(trackListActivity.getString(R.string.generic_yes)); + instrumentation.waitForIdleSync(); + assertEquals(true, EndToEndTestUtils.SOLO.getCurrentViews(CheckBox.class).get(0).isChecked()); + EndToEndTestUtils.SOLO.goBack(); + } + + /** + * Tests sync. + */ + public void testSync() { + EndToEndTestUtils.findMenuItem(trackListActivity.getString(R.string.menu_settings), true); + EndToEndTestUtils.SOLO.clickOnText(trackListActivity.getString(R.string.menu_sync_drive)); + + // Whether there is a gmail.com account + if (!EndToEndTestUtils.SOLO.waitForText(GMAIL_COM, 1, EndToEndTestUtils.TINY_WAIT_TIME)) { + return; + } + // Click the first gmail.com account + EndToEndTestUtils.SOLO.clickOnText(GMAIL_COM, 0); + instrumentation.waitForIdleSync(); + EndToEndTestUtils.getButtonOnScreen( + trackListActivity.getString(R.string.generic_ok), true, true); + + EndToEndTestUtils.SOLO.waitForText( + trackListActivity.getString(R.string.sync_drive_confirm_message).split("%")[0], 1, + EndToEndTestUtils.SHORT_WAIT_TIME); + EndToEndTestUtils.SOLO.clickOnText(trackListActivity.getString(R.string.generic_no)); + EndToEndTestUtils.SOLO.goBack(); + assertEquals(false, + EndToEndTestUtils.findMenuItem(trackListActivity.getString(R.string.menu_sync_now), false)); + } + + /** + * Tests preferred units. + * + * @param unitId the unit id + */ + private void testPreferredUnits(int unitId) { + EndToEndTestUtils.findMenuItem(trackListActivity.getString(R.string.menu_settings), true); + EndToEndTestUtils.SOLO.clickOnText( + trackListActivity.getString(R.string.track_detail_stats_tab)); + Assert.assertTrue(EndToEndTestUtils.SOLO.waitForText( + trackListActivity.getString(R.string.settings_stats_units_title))); + + EndToEndTestUtils.SOLO.clickOnText( + trackListActivity.getString(R.string.settings_stats_units_title)); + instrumentation.waitForIdleSync(); + String unit = trackListActivity.getString(unitId); + EndToEndTestUtils.SOLO.clickOnText(unit); + EndToEndTestUtils.SOLO.searchText(unit); + EndToEndTestUtils.SOLO.goBack(); + EndToEndTestUtils.SOLO.goBack(); + } + + /** + * Tests preferred units while recording. + * + * @param tabId the tab id + */ + private void testPreferredUnitsRecording(int tabId) { + testPreferredUnits(R.string.unit_kilometer); + + EndToEndTestUtils.startRecording(); + + EndToEndTestUtils.SOLO.clickOnText(trackListActivity.getString(tabId)); + EndToEndTestUtils.sendGps(3); + testPreferredUnits(R.string.unit_mile); + EndToEndTestUtils.sendGps(3, 3); + EndToEndTestUtils.stopRecording(true); + } + + /** + * Tests track color setting. + * + * @param modeId the mode id + * @param summaryId the summary id + */ + private void testTrackColor(int modeId, int summaryId) { + EndToEndTestUtils.findMenuItem(trackListActivity.getString(R.string.menu_settings), true); + EndToEndTestUtils.SOLO.clickOnText(trackListActivity.getString(R.string.menu_map)); + + EndToEndTestUtils.SOLO.clickOnText( + trackListActivity.getString(R.string.settings_map_track_color_mode)); + instrumentation.waitForIdleSync(); + EndToEndTestUtils.SOLO.clickOnText(trackListActivity.getString(modeId)); + instrumentation.waitForIdleSync(); + EndToEndTestUtils.SOLO.waitForText(trackListActivity.getString(summaryId)); + } +}