diff --git a/MyTracksTest/src/com/google/android/apps/mytracks/endtoendtest/EndToEndTestUtils.java b/MyTracksTest/src/com/google/android/apps/mytracks/endtoendtest/EndToEndTestUtils.java index 4efe388f7..3c082afc2 100644 --- a/MyTracksTest/src/com/google/android/apps/mytracks/endtoendtest/EndToEndTestUtils.java +++ b/MyTracksTest/src/com/google/android/apps/mytracks/endtoendtest/EndToEndTestUtils.java @@ -94,6 +94,11 @@ public class EndToEndTestUtils { public static int LONG_WAIT_TIME = 15000; public static int SUPER_LONG_WAIT_TIME = 100000; + /** + * During debug, sets it to false to make debug is more efficient. + */ + public static boolean clearEnvironment = true; + public static String deviceLanguage = ""; static { @@ -256,21 +261,23 @@ public class EndToEndTestUtils { hasActionBar = setHasActionBar(); checkLanguage(); isCheckedFirstLaunch = true; - deleteAllTracks(); - resetAllSettings(activityMyTracks, false); + if (clearEnvironment) { + deleteAllTracks(); + resetAllSettings(activityMyTracks, false); - instrumentation.waitForIdleSync(); - // Check the status of real phone. For emulator, we would fix GPS signal. - if(!isEmulator) { - GoToMyLocationTest.findAndClickMyLocation(activityMyTracks); - hasGpsSingal = !SOLO.waitForText(NO_GPS_MESSAGE_PREFIX, 1, - EndToEndTestUtils.SHORT_WAIT_TIME); - SOLO.goBack(); + instrumentation.waitForIdleSync(); + // Check the status of real phone. For emulator, we would fix GPS signal. + if(!isEmulator) { + GoToMyLocationTest.findAndClickMyLocation(activityMyTracks); + hasGpsSingal = !SOLO.waitForText(NO_GPS_MESSAGE_PREFIX, 1, + EndToEndTestUtils.SHORT_WAIT_TIME); + SOLO.goBack(); + } + } else if (SOLO.waitForText( + // After reset setting, welcome page will show again. + activityMytracks.getString(R.string.welcome_title), 0, SHORT_WAIT_TIME)) { + resetPreferredUnits(); } - } else if (SOLO.waitForText( - // After reset setting, welcome page will show again. - activityMytracks.getString(R.string.welcome_title), 0, SHORT_WAIT_TIME)) { - resetPreferredUnits(); } // Check whether is under recording. If previous test failed, the recording diff --git a/MyTracksTest/src/com/google/android/apps/mytracks/endtoendtest/SensorTest.java b/MyTracksTest/src/com/google/android/apps/mytracks/endtoendtest/SensorTest.java new file mode 100644 index 000000000..fcc3eb156 --- /dev/null +++ b/MyTracksTest/src/com/google/android/apps/mytracks/endtoendtest/SensorTest.java @@ -0,0 +1,123 @@ +/* + * 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; + +import com.google.android.apps.mytracks.TrackListActivity; +import com.google.android.maps.mytracks.R; + +import android.app.Instrumentation; +import android.test.ActivityInstrumentationTestCase2; +import android.widget.ListView; + +import java.util.ArrayList; + +/** + * Tests Connect to Sensors. + * + * @author Youtao Liu + */ +public class SensorTest extends ActivityInstrumentationTestCase2 { + + /** + * Set to false as default. + */ + public static boolean testSensor = false; + + public SensorTest() { + super(TrackListActivity.class); + } + + private Instrumentation instrumentation; + private TrackListActivity activityMyTracks; + + @Override + protected void setUp() throws Exception { + super.setUp(); + instrumentation = getInstrumentation(); + activityMyTracks = getActivity(); + EndToEndTestUtils.clearEnvironment = false; + EndToEndTestUtils.setupForAllTest(instrumentation, activityMyTracks); + } + + /** + * Tests connecting to a Zephyr Bluetooth sensor. Before this test, a Zephyr + * sensor must has been paired with the device. + */ + public void testConnectZephyrBluetoothSensor() { + if (!testSensor) { + return; + } + EndToEndTestUtils.findMenuItem(activityMyTracks.getString(R.string.menu_settings), true); + EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.settings_sensor)); + EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.settings_sensor_type)); + EndToEndTestUtils.SOLO.clickOnText(activityMyTracks + .getString(R.string.settings_sensor_type_zephyr)); + EndToEndTestUtils.SOLO.clickOnText(activityMyTracks + .getString(R.string.settings_sensor_bluetooth_sensor)); + assertTrue(getPairedSensorsNumber() > 0); + EndToEndTestUtils.SOLO.goBack(); + EndToEndTestUtils.SOLO.goBack(); + EndToEndTestUtils.SOLO.goBack(); + assertTrue(checkSensorsStatus()); + } + + /** + * Tests connecting to a Polar Bluetooth sensor. Before this test, a Polar + * sensor must has been paired with the device. + */ + public void testConnectPolarBluetoothSensor() { + if (!testSensor) { + return; + } + EndToEndTestUtils.findMenuItem(activityMyTracks.getString(R.string.menu_settings), true); + EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.settings_sensor)); + EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.settings_sensor_type)); + EndToEndTestUtils.SOLO.clickOnText(activityMyTracks + .getString(R.string.settings_sensor_type_polar)); + EndToEndTestUtils.SOLO.clickOnText(activityMyTracks + .getString(R.string.settings_sensor_bluetooth_sensor)); + assertTrue(getPairedSensorsNumber() > 0); + EndToEndTestUtils.SOLO.goBack(); + EndToEndTestUtils.SOLO.goBack(); + EndToEndTestUtils.SOLO.goBack(); + assertTrue(checkSensorsStatus()); + } + + /** + * Get the number of paired sensors. + * + * @return the number of paired sensors + */ + private int getPairedSensorsNumber() { + ArrayList allListViews = EndToEndTestUtils.SOLO.getCurrentListViews(); + int number = allListViews.get(0).getCount(); + return number; + } + + /** + * Checks whether the sensor is connected with MyTracks. + * + * @return true means the sensor is connected with MyTracks + */ + private boolean checkSensorsStatus() { + EndToEndTestUtils.createTrackIfEmpty(0, false); + EndToEndTestUtils.findMenuItem(activityMyTracks.getString(R.string.menu_sensor_state), true); + return EndToEndTestUtils.SOLO.waitForText( + activityMyTracks.getString(R.string.sensor_state_connected), 1, + EndToEndTestUtils.NORMAL_WAIT_TIME); + } + +} \ No newline at end of file