diff --git a/MyTracksTest_E2E/src/com/google/android/apps/mytracks/endtoendtest/common/ExportAllAndImportAllTest.java b/MyTracksTest_E2E/src/com/google/android/apps/mytracks/endtoendtest/common/ExportAllAndImportAllTest.java index 1f425273c..a05e65cfe 100644 --- a/MyTracksTest_E2E/src/com/google/android/apps/mytracks/endtoendtest/common/ExportAllAndImportAllTest.java +++ b/MyTracksTest_E2E/src/com/google/android/apps/mytracks/endtoendtest/common/ExportAllAndImportAllTest.java @@ -15,16 +15,20 @@ */ package com.google.android.apps.mytracks.endtoendtest.common; +import com.google.android.apps.mytracks.TrackDetailActivity; import com.google.android.apps.mytracks.TrackListActivity; import com.google.android.apps.mytracks.endtoendtest.EndToEndTestUtils; import com.google.android.apps.mytracks.util.FileUtils; import com.google.android.apps.mytracks.util.PreferencesUtils; import com.google.android.maps.mytracks.R; +import android.app.Activity; import android.app.Instrumentation; +import android.location.Location; import android.test.ActivityInstrumentationTestCase2; import android.util.Log; import android.widget.ListView; +import android.widget.TextView; import java.io.File; import java.io.FileOutputStream; @@ -40,7 +44,7 @@ public class ExportAllAndImportAllTest extends ActivityInstrumentationTestCase2< private Instrumentation instrumentation; private TrackListActivity activityMyTracks; private int trackNumber = 0; - + private final static String tracksName = "testTrackName1373523959524"; private final static String maxAltitude = "33.3"; private final static String minAltitude = "22.2"; @@ -169,7 +173,7 @@ public class ExportAllAndImportAllTest extends ActivityInstrumentationTestCase2< instrumentation.waitForIdleSync(); EndToEndTestUtils.SOLO.goBack(); - // Create a empty track. + // Create an empty track. EndToEndTestUtils.createTrackWithPause(0); instrumentation.waitForIdleSync(); EndToEndTestUtils.SOLO.goBack(); @@ -245,6 +249,7 @@ public class ExportAllAndImportAllTest extends ActivityInstrumentationTestCase2< importTracks(EndToEndTestUtils.KML); checkImport(); + EndToEndTestUtils.SOLO.waitForActivity(TrackListActivity.class); assertEquals(trackNumber + KMLFilesNumber, EndToEndTestUtils.SOLO.getCurrentViews(ListView.class).get(0).getCount()); @@ -306,7 +311,7 @@ public class ExportAllAndImportAllTest extends ActivityInstrumentationTestCase2< /** * Test export/import one track and checks the detail of this track. */ - public void testExportImportCheckTrackDetails() { + public void testExportImport_checkTrackDetails() { EndToEndTestUtils.deleteAllTracks(); EndToEndTestUtils.deleteExportedFiles(EndToEndTestUtils.GPX); EndToEndTestUtils.deleteExportedFiles(EndToEndTestUtils.KML); @@ -316,7 +321,7 @@ public class ExportAllAndImportAllTest extends ActivityInstrumentationTestCase2< importTracks(EndToEndTestUtils.GPX); checkImport(); - checkSingleTrack(true); + checkSingleTrack(); EndToEndTestUtils.deleteExportedFiles(EndToEndTestUtils.GPX); exportTracks(EndToEndTestUtils.KML); @@ -327,11 +332,11 @@ public class ExportAllAndImportAllTest extends ActivityInstrumentationTestCase2< EndToEndTestUtils.deleteAllTracks(); importTracks(EndToEndTestUtils.GPX); checkImport(); - checkSingleTrack(false); + checkSingleTrack(); EndToEndTestUtils.deleteAllTracks(); importTracks(EndToEndTestUtils.KML); checkImport(); - checkSingleTrack(false); + checkSingleTrack(); } /** @@ -359,13 +364,8 @@ public class ExportAllAndImportAllTest extends ActivityInstrumentationTestCase2< /** * Checks the detail of one track. */ - private void checkSingleTrack(boolean isSettingStat) { - ListView listTracks = EndToEndTestUtils.SOLO.getCurrentViews(ListView.class).get(0); - assertEquals(1, listTracks.getCount()); - EndToEndTestUtils.SOLO.clickOnText(tracksName); - EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.track_detail_stats_tab)); - - if (isSettingStat) { + private void checkSingleTrack() { + if (!PreferencesUtils.isMetricUnits(activityMyTracks)) { EndToEndTestUtils.findMenuItem(activityMyTracks.getString(R.string.menu_settings), true); EndToEndTestUtils.SOLO.clickOnText(activityMyTracks .getString(R.string.track_detail_stats_tab)); @@ -376,14 +376,54 @@ public class ExportAllAndImportAllTest extends ActivityInstrumentationTestCase2< EndToEndTestUtils.SOLO.clickOnText(activityMyTracks .getString(R.string.settings_stats_units_title)); EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.unit_kilometer)); - PreferencesUtils.setBoolean(activityMyTracks, R.string.stats_show_grade_elevation_key, true); EndToEndTestUtils.SOLO.goBack(); EndToEndTestUtils.SOLO.goBack(); } + PreferencesUtils.setBoolean(activityMyTracks, R.string.stats_show_grade_elevation_key, true); - assertTrue(EndToEndTestUtils.SOLO.searchText(maxAltitude)); - assertTrue(EndToEndTestUtils.SOLO.searchText(minAltitude)); + EndToEndTestUtils.SOLO.clickOnText(tracksName); + instrumentation.waitForIdleSync(); + EndToEndTestUtils.SOLO.waitForActivity(TrackDetailActivity.class, + EndToEndTestUtils.LONG_WAIT_TIME); + EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.track_detail_stats_tab)); + instrumentation.waitForIdleSync(); + float acceptDeviation = 0.1f; + Activity detailActivity = EndToEndTestUtils.SOLO.getCurrentActivity(); + float minAltitudeActual = Float.parseFloat(((TextView) detailActivity.findViewById( + R.id.stats_elevation_min).findViewById(R.id.stats_value)).getText().toString()); + float maxAltitudeActual = Float.parseFloat(((TextView) detailActivity.findViewById( + R.id.stats_elevation_max).findViewById(R.id.stats_value)).getText().toString()); + float distanceActual = Float.parseFloat(((TextView) detailActivity.findViewById( + R.id.stats_distance).findViewById(R.id.stats_value)).getText().toString()); + float averageSpeedActual = Float.parseFloat(((TextView) detailActivity.findViewById( + R.id.stats_average_speed).findViewById(R.id.stats_value)).getText().toString()); + // Seconds. + int timeSpan = 9; + + float distance = 0; + double initialLat = 39.30; + double initialLng = 116; + Location start = new Location("gps"); + start.setLatitude(initialLat); + start.setLongitude(initialLng); + for (int i = 1; i < 10; i++) { + Location end = new Location("gps"); + end.setLatitude(initialLat - 0.0005 * i); + end.setLongitude(initialLng + 0.0005 * i); + distance = distance + end.distanceTo(start) / 1000; + start = end; + } + + // KM/H + float averageSpeed = distance * 3600 / timeSpan; + assertEquals(Float.parseFloat(minAltitude), minAltitudeActual); + assertEquals(Float.parseFloat(maxAltitude), maxAltitudeActual); + Log.i(EndToEndTestUtils.LOG_TAG, distance + ":" + distanceActual); + assertTrue((distance - distanceActual) / distance < acceptDeviation); + assertTrue((averageSpeed - averageSpeedActual) / averageSpeed < acceptDeviation); + + EndToEndTestUtils.SOLO.goBack(); } /** @@ -405,35 +445,35 @@ public class ExportAllAndImportAllTest extends ActivityInstrumentationTestCase2< + " " + " " + "c0c0c0 " + " " - + " " + " " + + " " + " " + minAltitude + "" + " " - + " " + + " " + " " + " " - + " " + + " " + " " + " " - + " " + + " " + " " + " " - + " " + + " " + " " + " " - + " " + + " " + " " + " " - + " " + + " " + " " + " " - + " " + + " " + " " + " " - + " " + + " " + " " + " " - + " " + + " " + " " + maxAltitude + "" @@ -457,7 +497,5 @@ public class ExportAllAndImportAllTest extends ActivityInstrumentationTestCase2< } catch (IOException e) { fail(); } - } - -} +} \ No newline at end of file