package edu.illinois.geoalarm.test; import com.jayway.android.robotium.solo.Solo; import android.app.Activity; import android.content.Context; import android.location.Location; import android.location.LocationManager; import android.location.LocationProvider; import android.test.ActivityInstrumentationTestCase2; import android.test.suitebuilder.annotation.Smoke; import edu.illinois.geoalarm.RouteMap; /** * Tests clicking on a nearby bus stop icon, and ensuring that it displays the correct information * @author GeoAlarm * */ public class AdvanceRouteMapInfoTest extends ActivityInstrumentationTestCase2<RouteMap> { Activity mActivity; Activity mCurrentActivity; Solo solo; LocationManager manager; public AdvanceRouteMapInfoTest() { super("edu.illinois.geoalarm", RouteMap.class); } @Override protected void tearDown() throws Exception { mActivity.finish(); super.tearDown(); } @Override protected void setUp() throws Exception { super.setUp(); mActivity = this.getActivity(); manager = (LocationManager)mActivity.getSystemService(Context.LOCATION_SERVICE); solo = new Solo(getInstrumentation(), getActivity()); } /** * Sends a fake location to the app, simulates a click on the first overlay item, * and verifies display information */ @Smoke public void testAdvancedInfoOne() { double latitude = 40.11282333; double longitude = -88.22055; Location fakeLocation = new Location(LocationManager.GPS_PROVIDER); try { manager.addTestProvider(LocationManager.GPS_PROVIDER, true, true, true, true, true, true, true, 0, 5); manager.setTestProviderEnabled(LocationManager.GPS_PROVIDER, true); manager.setTestProviderStatus(LocationManager.GPS_PROVIDER, LocationProvider.AVAILABLE, null,System.currentTimeMillis()); } catch (Exception ex) {} fakeLocation.setLatitude(latitude); fakeLocation.setLongitude(longitude); manager.setTestProviderLocation(LocationManager.GPS_PROVIDER, fakeLocation); ((RouteMap)mActivity).setMapCenter((int)(latitude * 1E6), (int)(longitude * 1E6)); thisWait(2000); ((RouteMap)mActivity).clickOnOverlay(); // springfield and gregory ne corner assertTrue(solo.searchText("Routes Servicing")); assertTrue(solo.searchText("Gold")); assertTrue(solo.searchText("Goldhopper")); assertTrue(solo.searchText("Silver")); assertTrue(solo.searchText("Silver Evening")); assertTrue(solo.searchText("Silver Late Night")); assertTrue(solo.searchText("Silver Weekend")); } /** * Sleeps the thread for milliseconds * @param millis milliseconds to sleep */ private void thisWait(long millis) { try { Thread.sleep(millis); } catch (InterruptedException e) { e.printStackTrace(); } } }