diff --git a/tests/app/Android.mk b/tests/app/Android.mk index bb31539d4ad..71bb587067a 100644 --- a/tests/app/Android.mk +++ b/tests/app/Android.mk @@ -7,6 +7,11 @@ LOCAL_CERTIFICATE := platform LOCAL_JAVA_LIBRARIES := android.test.runner bouncycastle +LOCAL_STATIC_JAVA_LIBRARIES := \ + android-support-test \ + mockito-target \ + espresso-core + # Include all test java files. LOCAL_SRC_FILES := $(call all-java-files-under, src) diff --git a/tests/app/AndroidManifest.xml b/tests/app/AndroidManifest.xml index 2ef96cfcc64..d7651269fbf 100644 --- a/tests/app/AndroidManifest.xml +++ b/tests/app/AndroidManifest.xml @@ -51,9 +51,9 @@ - + mActivityRule = + new ActivityTestRule<>(Settings.class, true, false); + + private final int FLAG_RESTART = Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK; + private final String ARG_SELECT_SUPPORT_TAB = "SUPPORT"; + private final String ARG_SELECT_FAKE_TAB = "NOT_SUPPORT"; + + @Test + /* cold start for settings app with correct flags and extra always selects support tab */ + public void test_ColdStartWithCorrectArgsCorrectFlags_SupportSelected() { + launchSettingsWithFlags(ARG_SELECT_SUPPORT_TAB, FLAG_RESTART); + verifySupportSelected(); + } + + @Test + /* cold start with correct flags and wrong extra defaults to all tab */ + public void test_ColdStartWithWrongExtra_DoesNotSelectSupport() { + launchSettingsWithFlags(ARG_SELECT_FAKE_TAB, FLAG_RESTART); + verifySupportNotSelected(); + } + + @Test + /* warm start from elsewhere in settings with wrong flags does not select support */ + public void test_WarmStartSummarySelectedCorrectExtraWrongFlags_DoesNotSelectSupport() { + InstrumentationRegistry.getContext(). + startActivity(new Intent(android.provider.Settings.ACTION_SETTINGS)); + launchSettingsNoFlags(ARG_SELECT_SUPPORT_TAB); + verifySupportNotSelected(); + } + + @Test + /* warm start from elsewhere in settings with with wrong flags & extra does not select support*/ + public void test_WarmStartSummarySelectedWrongExtraWrongFlags_DoesNotSelectSupport() { + InstrumentationRegistry.getContext(). + startActivity(new Intent(android.provider.Settings.ACTION_SETTINGS)); + launchSettingsNoFlags(ARG_SELECT_FAKE_TAB); + verifySupportNotSelected(); + } + + @Test + /* settings does not crash on null string */ + public void test_DoesNotCrashOnNullExtra_DoesNotSelectSupport() { + launchSettingsWithFlags(null, FLAG_RESTART); + verifySupportNotSelected(); + } + + private void verifySupportNotSelected() { + onView(withText(mActivityRule.getActivity().getApplicationContext(). + getString(com.android.settings.R.string.page_tab_title_support))). + check(matches(not(isSelected()))); + } + + private void verifySupportSelected() { + onView(withText(mActivityRule.getActivity().getApplicationContext(). + getString(com.android.settings.R.string.page_tab_title_support))). + check(matches(isSelected())); + } + + private void launchSettingsWithFlags(String extra, int flags) { + Intent intent = new Intent(android.provider.Settings.ACTION_SETTINGS); + intent.setFlags(flags); + intent.putExtra(DashboardContainerFragment.EXTRA_SELECT_SETTINGS_TAB, extra); + mActivityRule.launchActivity(intent); + } + + private void launchSettingsNoFlags(String extra) { + Intent intent = new Intent(android.provider.Settings.ACTION_SETTINGS); + intent.putExtra(DashboardContainerFragment.EXTRA_SELECT_SETTINGS_TAB, extra); + mActivityRule.launchActivity(intent); + } +} \ No newline at end of file diff --git a/tests/unit/Android.mk b/tests/unit/Android.mk index 3ba4606e6e3..7010bd111c0 100644 --- a/tests/unit/Android.mk +++ b/tests/unit/Android.mk @@ -7,7 +7,10 @@ LOCAL_CERTIFICATE := platform LOCAL_JAVA_LIBRARIES := android.test.runner -LOCAL_STATIC_JAVA_LIBRARIES := android-support-test mockito-target +LOCAL_STATIC_JAVA_LIBRARIES := \ + android-support-test \ + mockito-target \ + espresso-core # Include all test java files. LOCAL_SRC_FILES := $(call all-java-files-under, src)