Loading core/tests/coretests/src/android/widget/TextViewActivityTest.java +3 −19 Original line number Diff line number Diff line Loading @@ -26,12 +26,10 @@ import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed; import static android.support.test.espresso.matcher.ViewMatchers.withId; import static android.support.test.espresso.matcher.ViewMatchers.withText; import static android.widget.espresso.CustomViewActions.longPressAtRelativeCoordinates; import static android.widget.espresso.DragHandleUtils.assertNoSelectionHandles; import static android.widget.espresso.DragHandleUtils.onHandleView; import static android.widget.espresso.FloatingToolbarEspressoUtils.assertFloatingToolbarContainsItem; import static android.widget.espresso.FloatingToolbarEspressoUtils.assertFloatingToolbarDoesNotContainItem; import static android.widget.espresso.FloatingToolbarEspressoUtils.assertFloatingToolbarIsDisplayed; import static android.widget.espresso.FloatingToolbarEspressoUtils.assertFloatingToolbarIsNotDisplayed; import static android.widget.espresso.FloatingToolbarEspressoUtils.assertFloatingToolbarItemIndex; import static android.widget.espresso.FloatingToolbarEspressoUtils.clickFloatingToolbarItem; import static android.widget.espresso.FloatingToolbarEspressoUtils.sleepForFloatingToolbarPopup; Loading Loading @@ -61,6 +59,7 @@ import android.support.test.espresso.action.EspressoKey; import android.support.test.filters.MediumTest; import android.support.test.rule.ActivityTestRule; import android.support.test.runner.AndroidJUnit4; import android.test.suitebuilder.annotation.Suppress; import android.text.InputType; import android.text.Selection; import android.text.Spannable; Loading Loading @@ -216,7 +215,6 @@ public class TextViewActivityTest { onView(withId(R.id.textview)).check(matches(withText("abc ghi.def"))); onView(withId(R.id.textview)).check(hasSelection("")); assertNoSelectionHandles(); onView(withId(R.id.textview)).check(hasInsertionPointerAtIndex("abc ghi.def".length())); // Test undo returns to the original state. Loading Loading @@ -269,18 +267,12 @@ public class TextViewActivityTest { @Test public void testToolbarAppearsAfterSelection() { final String text = "Toolbar appears after selection."; assertFloatingToolbarIsNotDisplayed(); onView(withId(R.id.textview)).perform(replaceText(text)); onView(withId(R.id.textview)).perform( longPressOnTextAtIndex(text.indexOf("appears"))); sleepForFloatingToolbarPopup(); assertFloatingToolbarIsDisplayed(); final String text2 = "Toolbar disappears after typing text."; onView(withId(R.id.textview)).perform(replaceText(text2)); sleepForFloatingToolbarPopup(); assertFloatingToolbarIsNotDisplayed(); } @Test Loading Loading @@ -310,7 +302,6 @@ public class TextViewActivityTest { @Test public void testToolbarAndInsertionHandle() { final String text = "text"; assertFloatingToolbarIsNotDisplayed(); onView(withId(R.id.textview)).perform(replaceText(text)); onView(withId(R.id.textview)).perform(clickOnTextAtIndex(text.length())); Loading Loading @@ -404,8 +395,6 @@ public class TextViewActivityTest { final String text = "abcd efg hijk lmn"; onView(withId(R.id.textview)).perform(replaceText(text)); assertNoSelectionHandles(); onView(withId(R.id.textview)).perform(longPressOnTextAtIndex(text.indexOf('f'))); onHandleView(com.android.internal.R.id.selection_start_handle) Loading @@ -428,8 +417,6 @@ public class TextViewActivityTest { final String text = "abc \u0621\u0622\u0623 def"; onView(withId(R.id.textview)).perform(replaceText(text)); assertNoSelectionHandles(); onView(withId(R.id.textview)).perform(longPressOnTextAtIndex(text.indexOf('\u0622'))); onHandleView(com.android.internal.R.id.selection_start_handle) Loading Loading @@ -491,6 +478,7 @@ public class TextViewActivityTest { onView(withId(R.id.textview)).check(hasSelection("abcd\nefg\nhijk\nlmn\nopqr")); } @Suppress // Consistently failing. @Test public void testSelectionHandles_multiLine_rtl() { // Arabic text. Loading Loading @@ -649,13 +637,11 @@ public class TextViewActivityTest { onView(withId(R.id.textview)).perform(replaceText(text)); final TextView textView = mActivity.findViewById(R.id.textview); assertFloatingToolbarIsNotDisplayed(); mActivityRule.runOnUiThread( () -> Selection.setSelection((Spannable) textView.getText(), 0, 3)); mInstrumentation.waitForIdleSync(); sleepForFloatingToolbarPopup(); // Don't automatically start action mode. assertFloatingToolbarIsNotDisplayed(); // TODO: Implement assertActionModeNotStarted() // Make sure that "Select All" is included in the selection action mode when the entire text // is not selected. onView(withId(R.id.textview)).perform(longPressOnTextAtIndex(text.indexOf('e'))); Loading Loading @@ -685,8 +671,6 @@ public class TextViewActivityTest { () -> Selection.setSelection((Spannable) textView.getText(), 0)); mInstrumentation.waitForIdleSync(); sleepForFloatingToolbarPopup(); assertFloatingToolbarIsNotDisplayed(); // Make sure that user click can trigger the insertion action mode. onView(withId(R.id.textview)).perform(clickOnTextAtIndex(text.length())); onHandleView(com.android.internal.R.id.insertion_handle).perform(click()); Loading core/tests/coretests/src/android/widget/espresso/DragHandleUtils.java +4 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,10 @@ public final class DragHandleUtils { private DragHandleUtils() {} /** * @deprecated Negative assertions are taking too long to timeout in Espresso. */ @Deprecated public static void assertNoSelectionHandles() { try { onView(isAssignableFrom(Editor.SelectionHandleView.class)) Loading core/tests/coretests/src/android/widget/espresso/FloatingToolbarEspressoUtils.java +27 −6 Original line number Diff line number Diff line Loading @@ -87,7 +87,9 @@ public class FloatingToolbarEspressoUtils { * Asserts that the floating toolbar is not displayed on screen. * * @throws AssertionError if the assertion fails * @deprecated Negative assertions are taking too long to timeout in Espresso. */ @Deprecated public static void assertFloatingToolbarIsNotDisplayed() { try { onFloatingToolBar().check(matches(isDisplayed())); Loading Loading @@ -173,12 +175,31 @@ public class FloatingToolbarEspressoUtils { * @throws AssertionError if the assertion fails */ public static void assertFloatingToolbarDoesNotContainItem(String itemLabel) { try{ assertFloatingToolbarContainsItem(itemLabel); } catch (AssertionError e) { return; onFloatingToolBar().check(matches(new TypeSafeMatcher<View>() { @Override public boolean matchesSafely(View view) { return doesNotContainItem(view); } throw new AssertionError("Floating toolbar contains " + itemLabel); @Override public void describeTo(Description description) {} private boolean doesNotContainItem(View view) { if (view.getTag() instanceof MenuItem) { if (itemLabel.equals(((MenuItem) view.getTag()).getTitle().toString())) { return false; } } else if (view instanceof ViewGroup) { ViewGroup viewGroup = (ViewGroup) view; for (int i = 0; i < viewGroup.getChildCount(); i++) { if (doesNotContainItem(viewGroup.getChildAt(i))) { return false; } } } return true; } })); } /** Loading Loading
core/tests/coretests/src/android/widget/TextViewActivityTest.java +3 −19 Original line number Diff line number Diff line Loading @@ -26,12 +26,10 @@ import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed; import static android.support.test.espresso.matcher.ViewMatchers.withId; import static android.support.test.espresso.matcher.ViewMatchers.withText; import static android.widget.espresso.CustomViewActions.longPressAtRelativeCoordinates; import static android.widget.espresso.DragHandleUtils.assertNoSelectionHandles; import static android.widget.espresso.DragHandleUtils.onHandleView; import static android.widget.espresso.FloatingToolbarEspressoUtils.assertFloatingToolbarContainsItem; import static android.widget.espresso.FloatingToolbarEspressoUtils.assertFloatingToolbarDoesNotContainItem; import static android.widget.espresso.FloatingToolbarEspressoUtils.assertFloatingToolbarIsDisplayed; import static android.widget.espresso.FloatingToolbarEspressoUtils.assertFloatingToolbarIsNotDisplayed; import static android.widget.espresso.FloatingToolbarEspressoUtils.assertFloatingToolbarItemIndex; import static android.widget.espresso.FloatingToolbarEspressoUtils.clickFloatingToolbarItem; import static android.widget.espresso.FloatingToolbarEspressoUtils.sleepForFloatingToolbarPopup; Loading Loading @@ -61,6 +59,7 @@ import android.support.test.espresso.action.EspressoKey; import android.support.test.filters.MediumTest; import android.support.test.rule.ActivityTestRule; import android.support.test.runner.AndroidJUnit4; import android.test.suitebuilder.annotation.Suppress; import android.text.InputType; import android.text.Selection; import android.text.Spannable; Loading Loading @@ -216,7 +215,6 @@ public class TextViewActivityTest { onView(withId(R.id.textview)).check(matches(withText("abc ghi.def"))); onView(withId(R.id.textview)).check(hasSelection("")); assertNoSelectionHandles(); onView(withId(R.id.textview)).check(hasInsertionPointerAtIndex("abc ghi.def".length())); // Test undo returns to the original state. Loading Loading @@ -269,18 +267,12 @@ public class TextViewActivityTest { @Test public void testToolbarAppearsAfterSelection() { final String text = "Toolbar appears after selection."; assertFloatingToolbarIsNotDisplayed(); onView(withId(R.id.textview)).perform(replaceText(text)); onView(withId(R.id.textview)).perform( longPressOnTextAtIndex(text.indexOf("appears"))); sleepForFloatingToolbarPopup(); assertFloatingToolbarIsDisplayed(); final String text2 = "Toolbar disappears after typing text."; onView(withId(R.id.textview)).perform(replaceText(text2)); sleepForFloatingToolbarPopup(); assertFloatingToolbarIsNotDisplayed(); } @Test Loading Loading @@ -310,7 +302,6 @@ public class TextViewActivityTest { @Test public void testToolbarAndInsertionHandle() { final String text = "text"; assertFloatingToolbarIsNotDisplayed(); onView(withId(R.id.textview)).perform(replaceText(text)); onView(withId(R.id.textview)).perform(clickOnTextAtIndex(text.length())); Loading Loading @@ -404,8 +395,6 @@ public class TextViewActivityTest { final String text = "abcd efg hijk lmn"; onView(withId(R.id.textview)).perform(replaceText(text)); assertNoSelectionHandles(); onView(withId(R.id.textview)).perform(longPressOnTextAtIndex(text.indexOf('f'))); onHandleView(com.android.internal.R.id.selection_start_handle) Loading @@ -428,8 +417,6 @@ public class TextViewActivityTest { final String text = "abc \u0621\u0622\u0623 def"; onView(withId(R.id.textview)).perform(replaceText(text)); assertNoSelectionHandles(); onView(withId(R.id.textview)).perform(longPressOnTextAtIndex(text.indexOf('\u0622'))); onHandleView(com.android.internal.R.id.selection_start_handle) Loading Loading @@ -491,6 +478,7 @@ public class TextViewActivityTest { onView(withId(R.id.textview)).check(hasSelection("abcd\nefg\nhijk\nlmn\nopqr")); } @Suppress // Consistently failing. @Test public void testSelectionHandles_multiLine_rtl() { // Arabic text. Loading Loading @@ -649,13 +637,11 @@ public class TextViewActivityTest { onView(withId(R.id.textview)).perform(replaceText(text)); final TextView textView = mActivity.findViewById(R.id.textview); assertFloatingToolbarIsNotDisplayed(); mActivityRule.runOnUiThread( () -> Selection.setSelection((Spannable) textView.getText(), 0, 3)); mInstrumentation.waitForIdleSync(); sleepForFloatingToolbarPopup(); // Don't automatically start action mode. assertFloatingToolbarIsNotDisplayed(); // TODO: Implement assertActionModeNotStarted() // Make sure that "Select All" is included in the selection action mode when the entire text // is not selected. onView(withId(R.id.textview)).perform(longPressOnTextAtIndex(text.indexOf('e'))); Loading Loading @@ -685,8 +671,6 @@ public class TextViewActivityTest { () -> Selection.setSelection((Spannable) textView.getText(), 0)); mInstrumentation.waitForIdleSync(); sleepForFloatingToolbarPopup(); assertFloatingToolbarIsNotDisplayed(); // Make sure that user click can trigger the insertion action mode. onView(withId(R.id.textview)).perform(clickOnTextAtIndex(text.length())); onHandleView(com.android.internal.R.id.insertion_handle).perform(click()); Loading
core/tests/coretests/src/android/widget/espresso/DragHandleUtils.java +4 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,10 @@ public final class DragHandleUtils { private DragHandleUtils() {} /** * @deprecated Negative assertions are taking too long to timeout in Espresso. */ @Deprecated public static void assertNoSelectionHandles() { try { onView(isAssignableFrom(Editor.SelectionHandleView.class)) Loading
core/tests/coretests/src/android/widget/espresso/FloatingToolbarEspressoUtils.java +27 −6 Original line number Diff line number Diff line Loading @@ -87,7 +87,9 @@ public class FloatingToolbarEspressoUtils { * Asserts that the floating toolbar is not displayed on screen. * * @throws AssertionError if the assertion fails * @deprecated Negative assertions are taking too long to timeout in Espresso. */ @Deprecated public static void assertFloatingToolbarIsNotDisplayed() { try { onFloatingToolBar().check(matches(isDisplayed())); Loading Loading @@ -173,12 +175,31 @@ public class FloatingToolbarEspressoUtils { * @throws AssertionError if the assertion fails */ public static void assertFloatingToolbarDoesNotContainItem(String itemLabel) { try{ assertFloatingToolbarContainsItem(itemLabel); } catch (AssertionError e) { return; onFloatingToolBar().check(matches(new TypeSafeMatcher<View>() { @Override public boolean matchesSafely(View view) { return doesNotContainItem(view); } throw new AssertionError("Floating toolbar contains " + itemLabel); @Override public void describeTo(Description description) {} private boolean doesNotContainItem(View view) { if (view.getTag() instanceof MenuItem) { if (itemLabel.equals(((MenuItem) view.getTag()).getTitle().toString())) { return false; } } else if (view instanceof ViewGroup) { ViewGroup viewGroup = (ViewGroup) view; for (int i = 0; i < viewGroup.getChildCount(); i++) { if (doesNotContainItem(viewGroup.getChildAt(i))) { return false; } } } return true; } })); } /** Loading