package ca.psiphon.ploggy.test; import android.app.ActionBar; import android.app.Instrumentation; import android.content.pm.ActivityInfo; import android.graphics.Point; import android.test.ActivityInstrumentationTestCase2; import android.test.UiThreadTest; import ca.psiphon.ploggy.ActivityMain; import com.jayway.android.robotium.solo.Solo; public class ActivityMainTest extends ActivityInstrumentationTestCase2<ActivityMain> { private Instrumentation mInstr; private ActivityMain mActivity; private ActionBar mActionBar; private Solo solo; public ActivityMainTest() { super(ActivityMain.class); } @Override protected void setUp() throws Exception { super.setUp(); solo = new Solo(getInstrumentation(), getActivity()); setActivityInitialTouchMode(false); mInstr = this.getInstrumentation(); mActivity = getActivity(); mActionBar = mActivity.getActionBar(); } @Override protected void tearDown() throws Exception { solo.finishOpenedActivities(); } @UiThreadTest public void testStateSaveRestore() { // // Destroy/Create // // Check that we're starting on the first tab assertEquals(mActionBar.getSelectedNavigationIndex(), 0); // Select the second tab mActionBar.setSelectedNavigationItem(1); // Destroy the activity, which should save the state mActivity.finish(); // Recreate the activity... mActivity = this.getActivity(); // ...which should cause it to restore state assertEquals(mActionBar.getSelectedNavigationIndex(), 1); } @UiThreadTest public void testRotation() { // Rotate back and forth. Was crashing at one point. mActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); mActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); mActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); } protected void swipe(boolean left) { Point size = new Point(); mActivity.getWindowManager().getDefaultDisplay().getSize(size); int width = size.x; float xStart = (left ? (width - 10) : 10); float xEnd = (left ? 10 : (width - 10)); // The value for y doesn't change, as we want to swipe straight across solo.drag(xStart, xEnd, size.y / 2, size.y / 2, 1); } public void testSwipeTabChange() { // Select the first tab mActionBar.setSelectedNavigationItem(0); // Swipe to the next tab swipe(true); assertEquals(mActionBar.getSelectedNavigationIndex(), 1); } }