| /* |
| * Copyright (C) 2015 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License |
| */ |
| |
| package android.widget; |
| |
| import static android.widget.espresso.DragHandleUtils.assertNoSelectionHandles; |
| import static android.widget.espresso.DragHandleUtils.onHandleView; |
| import static android.widget.espresso.TextViewActions.clickOnTextAtIndex; |
| import static android.widget.espresso.TextViewActions.doubleTapAndDragOnText; |
| import static android.widget.espresso.TextViewActions.doubleClickOnTextAtIndex; |
| import static android.widget.espresso.TextViewActions.dragHandle; |
| import static android.widget.espresso.TextViewActions.Handle; |
| import static android.widget.espresso.TextViewActions.longPressAndDragOnText; |
| import static android.widget.espresso.TextViewActions.longPressOnTextAtIndex; |
| import static android.widget.espresso.TextViewAssertions.hasInsertionPointerAtIndex; |
| import static android.widget.espresso.TextViewAssertions.hasSelection; |
| import static android.widget.espresso.FloatingToolbarEspressoUtils.assertFloatingToolbarIsDisplayed; |
| import static android.widget.espresso.FloatingToolbarEspressoUtils.assertFloatingToolbarIsNotDisplayed; |
| import static android.widget.espresso.FloatingToolbarEspressoUtils.sleepForFloatingToolbarPopup; |
| import static android.widget.espresso.FloatingToolbarEspressoUtils.assertFloatingToolbarContainsItem; |
| import static android.widget.espresso.FloatingToolbarEspressoUtils.assertFloatingToolbarDoesNotContainItem; |
| import static android.support.test.espresso.Espresso.onView; |
| import static android.support.test.espresso.action.ViewActions.click; |
| import static android.support.test.espresso.action.ViewActions.pressKey; |
| import static android.support.test.espresso.action.ViewActions.replaceText; |
| import static android.support.test.espresso.action.ViewActions.typeTextIntoFocusedView; |
| import static android.support.test.espresso.assertion.ViewAssertions.matches; |
| 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 com.android.frameworks.coretests.R; |
| |
| import android.test.ActivityInstrumentationTestCase2; |
| import android.test.suitebuilder.annotation.SmallTest; |
| import android.view.KeyEvent; |
| |
| /** |
| * Tests the TextView widget from an Activity |
| */ |
| public class TextViewActivityTest extends ActivityInstrumentationTestCase2<TextViewActivity>{ |
| |
| public TextViewActivityTest() { |
| super(TextViewActivity.class); |
| } |
| |
| @Override |
| public void setUp() { |
| getActivity(); |
| } |
| |
| @SmallTest |
| public void testTypedTextIsOnScreen() throws Exception { |
| final String helloWorld = "Hello world!"; |
| onView(withId(R.id.textview)).perform(click()); |
| onView(withId(R.id.textview)).perform(typeTextIntoFocusedView(helloWorld)); |
| |
| onView(withId(R.id.textview)).check(matches(withText(helloWorld))); |
| } |
| |
| @SmallTest |
| public void testPositionCursorAtTextAtIndex() throws Exception { |
| final String helloWorld = "Hello world!"; |
| onView(withId(R.id.textview)).perform(click()); |
| onView(withId(R.id.textview)).perform(typeTextIntoFocusedView(helloWorld)); |
| onView(withId(R.id.textview)).perform(clickOnTextAtIndex(helloWorld.indexOf("world"))); |
| |
| // Delete text at specified index and see if we got the right one. |
| onView(withId(R.id.textview)).perform(pressKey(KeyEvent.KEYCODE_FORWARD_DEL)); |
| onView(withId(R.id.textview)).check(matches(withText("Hello orld!"))); |
| } |
| |
| @SmallTest |
| public void testLongPressToSelect() throws Exception { |
| final String helloWorld = "Hello Kirk!"; |
| onView(withId(R.id.textview)).perform(click()); |
| onView(withId(R.id.textview)).perform(typeTextIntoFocusedView(helloWorld)); |
| onView(withId(R.id.textview)).perform( |
| longPressOnTextAtIndex(helloWorld.indexOf("Kirk"))); |
| |
| onView(withId(R.id.textview)).check(hasSelection("Kirk")); |
| } |
| |
| @SmallTest |
| public void testLongPressEmptySpace() throws Exception { |
| final String helloWorld = "Hello big round sun!"; |
| onView(withId(R.id.textview)).perform(click()); |
| onView(withId(R.id.textview)).perform(typeTextIntoFocusedView(helloWorld)); |
| // Move cursor somewhere else |
| onView(withId(R.id.textview)).perform(clickOnTextAtIndex(helloWorld.indexOf("big"))); |
| // Long-press at end of line. |
| onView(withId(R.id.textview)).perform(longPressOnTextAtIndex(helloWorld.length())); |
| |
| onView(withId(R.id.textview)).check(hasInsertionPointerAtIndex(helloWorld.length())); |
| } |
| |
| @SmallTest |
| public void testLongPressAndDragToSelect() throws Exception { |
| final String helloWorld = "Hello little handsome boy!"; |
| onView(withId(R.id.textview)).perform(click()); |
| onView(withId(R.id.textview)).perform(typeTextIntoFocusedView(helloWorld)); |
| onView(withId(R.id.textview)).perform( |
| longPressAndDragOnText(helloWorld.indexOf("little"), helloWorld.indexOf(" boy!"))); |
| |
| onView(withId(R.id.textview)).check(hasSelection("little handsome")); |
| } |
| |
| @SmallTest |
| public void testDoubleTapToSelect() throws Exception { |
| final String helloWorld = "Hello SuetYi!"; |
| onView(withId(R.id.textview)).perform(click()); |
| onView(withId(R.id.textview)).perform(typeTextIntoFocusedView(helloWorld)); |
| onView(withId(R.id.textview)).perform( |
| doubleClickOnTextAtIndex(helloWorld.indexOf("SuetYi"))); |
| |
| onView(withId(R.id.textview)).check(hasSelection("SuetYi")); |
| } |
| |
| @SmallTest |
| public void testDoubleTapAndDragToSelect() throws Exception { |
| final String helloWorld = "Hello young beautiful girl!"; |
| onView(withId(R.id.textview)).perform(click()); |
| onView(withId(R.id.textview)).perform(typeTextIntoFocusedView(helloWorld)); |
| onView(withId(R.id.textview)).perform( |
| doubleTapAndDragOnText(helloWorld.indexOf("young"), helloWorld.indexOf(" girl!"))); |
| |
| onView(withId(R.id.textview)).check(hasSelection("young beautiful")); |
| } |
| |
| @SmallTest |
| public void testSelectBackwordsByTouch() throws Exception { |
| final String helloWorld = "Hello king of the Jungle!"; |
| onView(withId(R.id.textview)).perform(click()); |
| onView(withId(R.id.textview)).perform(typeTextIntoFocusedView(helloWorld)); |
| onView(withId(R.id.textview)).perform( |
| doubleTapAndDragOnText(helloWorld.indexOf(" Jungle!"), helloWorld.indexOf("king"))); |
| |
| onView(withId(R.id.textview)).check(hasSelection("king of the")); |
| } |
| |
| @SmallTest |
| public void testToolbarAppearsAfterSelection() throws Exception { |
| final String text = "Toolbar appears after selection."; |
| onView(withId(R.id.textview)).perform(click()); |
| assertFloatingToolbarIsNotDisplayed(); |
| onView(withId(R.id.textview)).perform(typeTextIntoFocusedView(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(typeTextIntoFocusedView(text2)); |
| assertFloatingToolbarIsNotDisplayed(); |
| } |
| |
| @SmallTest |
| public void testToolbarAndInsertionHandle() throws Exception { |
| final String text = "text"; |
| onView(withId(R.id.textview)).perform(click()); |
| onView(withId(R.id.textview)).perform(typeTextIntoFocusedView(text)); |
| onView(withId(R.id.textview)).perform(clickOnTextAtIndex(text.length())); |
| assertFloatingToolbarIsNotDisplayed(); |
| |
| onHandleView(com.android.internal.R.id.insertion_handle).perform(click()); |
| sleepForFloatingToolbarPopup(); |
| assertFloatingToolbarIsDisplayed(); |
| |
| assertFloatingToolbarContainsItem( |
| getActivity().getString(com.android.internal.R.string.selectAll)); |
| assertFloatingToolbarDoesNotContainItem( |
| getActivity().getString(com.android.internal.R.string.copy)); |
| assertFloatingToolbarDoesNotContainItem( |
| getActivity().getString(com.android.internal.R.string.cut)); |
| } |
| |
| @SmallTest |
| public void testToolbarAndSelectionHandle() throws Exception { |
| final String text = "abcd efg hijk"; |
| onView(withId(R.id.textview)).perform(click()); |
| onView(withId(R.id.textview)).perform(typeTextIntoFocusedView(text)); |
| |
| onView(withId(R.id.textview)).perform(longPressOnTextAtIndex(text.indexOf("f"))); |
| sleepForFloatingToolbarPopup(); |
| assertFloatingToolbarIsDisplayed(); |
| |
| assertFloatingToolbarContainsItem( |
| getActivity().getString(com.android.internal.R.string.selectAll)); |
| assertFloatingToolbarContainsItem( |
| getActivity().getString(com.android.internal.R.string.copy)); |
| assertFloatingToolbarContainsItem( |
| getActivity().getString(com.android.internal.R.string.cut)); |
| |
| final TextView textView = (TextView) getActivity().findViewById(R.id.textview); |
| onHandleView(com.android.internal.R.id.selection_start_handle) |
| .perform(dragHandle(textView, Handle.SELECTION_START, text.indexOf('a'))); |
| sleepForFloatingToolbarPopup(); |
| assertFloatingToolbarIsDisplayed(); |
| |
| onHandleView(com.android.internal.R.id.selection_end_handle) |
| .perform(dragHandle(textView, Handle.SELECTION_END, text.length())); |
| sleepForFloatingToolbarPopup(); |
| assertFloatingToolbarIsDisplayed(); |
| |
| assertFloatingToolbarDoesNotContainItem( |
| getActivity().getString(com.android.internal.R.string.selectAll)); |
| assertFloatingToolbarContainsItem( |
| getActivity().getString(com.android.internal.R.string.copy)); |
| assertFloatingToolbarContainsItem( |
| getActivity().getString(com.android.internal.R.string.cut)); |
| } |
| |
| @SmallTest |
| public void testInsertionHandle() throws Exception { |
| final String text = "abcd efg hijk "; |
| onView(withId(R.id.textview)).perform(click()); |
| onView(withId(R.id.textview)).perform(typeTextIntoFocusedView(text)); |
| |
| onView(withId(R.id.textview)).perform(clickOnTextAtIndex(text.length())); |
| onView(withId(R.id.textview)).check(hasInsertionPointerAtIndex(text.length())); |
| |
| final TextView textView = (TextView) getActivity().findViewById(R.id.textview); |
| |
| onHandleView(com.android.internal.R.id.insertion_handle) |
| .perform(dragHandle(textView, Handle.INSERTION, text.indexOf('a'))); |
| onView(withId(R.id.textview)).check(hasInsertionPointerAtIndex(text.indexOf("a"))); |
| |
| onHandleView(com.android.internal.R.id.insertion_handle) |
| .perform(dragHandle(textView, Handle.INSERTION, text.indexOf('f'))); |
| onView(withId(R.id.textview)).check(hasInsertionPointerAtIndex(text.indexOf("f"))); |
| } |
| |
| @SmallTest |
| public void testInsertionHandle_multiLine() throws Exception { |
| final String text = "abcd\n" + "efg\n" + "hijk\n"; |
| onView(withId(R.id.textview)).perform(click()); |
| onView(withId(R.id.textview)).perform(typeTextIntoFocusedView(text)); |
| |
| onView(withId(R.id.textview)).perform(clickOnTextAtIndex(text.length())); |
| onView(withId(R.id.textview)).check(hasInsertionPointerAtIndex(text.length())); |
| |
| final TextView textView = (TextView) getActivity().findViewById(R.id.textview); |
| |
| onHandleView(com.android.internal.R.id.insertion_handle) |
| .perform(dragHandle(textView, Handle.INSERTION, text.indexOf('a'))); |
| onView(withId(R.id.textview)).check(hasInsertionPointerAtIndex(text.indexOf("a"))); |
| |
| onHandleView(com.android.internal.R.id.insertion_handle) |
| .perform(dragHandle(textView, Handle.INSERTION, text.indexOf('f'))); |
| onView(withId(R.id.textview)).check(hasInsertionPointerAtIndex(text.indexOf("f"))); |
| } |
| |
| @SmallTest |
| public void testSelectionHandles() throws Exception { |
| final String text = "abcd efg hijk lmn"; |
| onView(withId(R.id.textview)).perform(click()); |
| onView(withId(R.id.textview)).perform(typeTextIntoFocusedView(text)); |
| |
| assertNoSelectionHandles(); |
| |
| onView(withId(R.id.textview)).perform(doubleClickOnTextAtIndex(text.indexOf('f'))); |
| |
| onHandleView(com.android.internal.R.id.selection_start_handle) |
| .check(matches(isDisplayed())); |
| onHandleView(com.android.internal.R.id.selection_end_handle) |
| .check(matches(isDisplayed())); |
| |
| final TextView textView = (TextView) getActivity().findViewById(R.id.textview); |
| onHandleView(com.android.internal.R.id.selection_start_handle) |
| .perform(dragHandle(textView, Handle.SELECTION_START, text.indexOf('a'))); |
| onView(withId(R.id.textview)).check(hasSelection("abcd efg")); |
| |
| onHandleView(com.android.internal.R.id.selection_end_handle) |
| .perform(dragHandle(textView, Handle.SELECTION_END, text.indexOf('k') + 1)); |
| onView(withId(R.id.textview)).check(hasSelection("abcd efg hijk")); |
| } |
| |
| @SmallTest |
| public void testSelectionHandles_multiLine() throws Exception { |
| final String text = "abcd\n" + "efg\n" + "hijk\n" + "lmn\n" + "opqr"; |
| onView(withId(R.id.textview)).perform(click()); |
| onView(withId(R.id.textview)).perform(typeTextIntoFocusedView(text)); |
| onView(withId(R.id.textview)).perform(doubleClickOnTextAtIndex(text.indexOf('i'))); |
| |
| final TextView textView = (TextView) getActivity().findViewById(R.id.textview); |
| onHandleView(com.android.internal.R.id.selection_start_handle) |
| .perform(dragHandle(textView, Handle.SELECTION_START, text.indexOf('e'))); |
| onView(withId(R.id.textview)).check(hasSelection("efg\nhijk")); |
| |
| onHandleView(com.android.internal.R.id.selection_start_handle) |
| .perform(dragHandle(textView, Handle.SELECTION_START, text.indexOf('a'))); |
| onView(withId(R.id.textview)).check(hasSelection("abcd\nefg\nhijk")); |
| |
| onHandleView(com.android.internal.R.id.selection_end_handle) |
| .perform(dragHandle(textView, Handle.SELECTION_END, text.indexOf('n') + 1)); |
| onView(withId(R.id.textview)).check(hasSelection("abcd\nefg\nhijk\nlmn")); |
| |
| onHandleView(com.android.internal.R.id.selection_end_handle) |
| .perform(dragHandle(textView, Handle.SELECTION_END, text.indexOf('r') + 1)); |
| onView(withId(R.id.textview)).check(hasSelection("abcd\nefg\nhijk\nlmn\nopqr")); |
| } |
| |
| @SmallTest |
| public void testSelectionHandles_multiLine_rtl() throws Exception { |
| // Arabic text. |
| final String text = "\u062A\u062B\u062C\n" + "\u062D\u062E\u062F\n" |
| + "\u0630\u0631\u0632\n" + "\u0633\u0634\u0635\n" + "\u0636\u0637\u0638\n" |
| + "\u0639\u063A\u063B"; |
| onView(withId(R.id.textview)).perform(click()); |
| onView(withId(R.id.textview)).perform(replaceText(text)); |
| onView(withId(R.id.textview)).perform(clickOnTextAtIndex(text.length())); |
| onView(withId(R.id.textview)).perform(doubleClickOnTextAtIndex(text.indexOf('\u0634'))); |
| |
| final TextView textView = (TextView)getActivity().findViewById(R.id.textview); |
| onHandleView(com.android.internal.R.id.selection_start_handle) |
| .perform(dragHandle(textView, Handle.SELECTION_START, text.indexOf('\u062E'))); |
| onView(withId(R.id.textview)).check(hasSelection( |
| text.substring(text.indexOf('\u062D'), text.indexOf('\u0635') + 1))); |
| |
| onHandleView(com.android.internal.R.id.selection_start_handle) |
| .perform(dragHandle(textView, Handle.SELECTION_START, text.indexOf('\u062A'))); |
| onView(withId(R.id.textview)).check(hasSelection( |
| text.substring(text.indexOf('\u062A'), text.indexOf('\u0635') + 1))); |
| |
| onHandleView(com.android.internal.R.id.selection_end_handle) |
| .perform(dragHandle(textView, Handle.SELECTION_END, text.indexOf('\u0638'))); |
| onView(withId(R.id.textview)).check(hasSelection( |
| text.substring(text.indexOf('\u062A'), text.indexOf('\u0638') + 1))); |
| |
| onHandleView(com.android.internal.R.id.selection_end_handle) |
| .perform(dragHandle(textView, Handle.SELECTION_END, text.indexOf('\u063B'))); |
| onView(withId(R.id.textview)).check(hasSelection(text)); |
| } |
| |
| |
| @SmallTest |
| public void testSelectionHandles_doesNotPassAnotherHandle() throws Exception { |
| final String text = "abcd efg hijk lmn"; |
| onView(withId(R.id.textview)).perform(click()); |
| onView(withId(R.id.textview)).perform(typeTextIntoFocusedView(text)); |
| onView(withId(R.id.textview)).perform(doubleClickOnTextAtIndex(text.indexOf('f'))); |
| |
| final TextView textView = (TextView) getActivity().findViewById(R.id.textview); |
| onHandleView(com.android.internal.R.id.selection_start_handle) |
| .perform(dragHandle(textView, Handle.SELECTION_START, text.indexOf('l'))); |
| onView(withId(R.id.textview)).check(hasSelection("g")); |
| |
| onView(withId(R.id.textview)).perform(doubleClickOnTextAtIndex(text.indexOf('f'))); |
| onHandleView(com.android.internal.R.id.selection_end_handle) |
| .perform(dragHandle(textView, Handle.SELECTION_END, text.indexOf('a'))); |
| onView(withId(R.id.textview)).check(hasSelection("e")); |
| } |
| |
| @SmallTest |
| public void testSelectionHandles_doesNotPassAnotherHandle_multiLine() throws Exception { |
| final String text = "abcd\n" + "efg\n" + "hijk\n" + "lmn\n" + "opqr"; |
| onView(withId(R.id.textview)).perform(click()); |
| onView(withId(R.id.textview)).perform(typeTextIntoFocusedView(text)); |
| onView(withId(R.id.textview)).perform(doubleClickOnTextAtIndex(text.indexOf('i'))); |
| |
| final TextView textView = (TextView) getActivity().findViewById(R.id.textview); |
| onHandleView(com.android.internal.R.id.selection_start_handle) |
| .perform(dragHandle(textView, Handle.SELECTION_START, text.indexOf('r') + 1)); |
| onView(withId(R.id.textview)).check(hasSelection("k")); |
| |
| onView(withId(R.id.textview)).perform(doubleClickOnTextAtIndex(text.indexOf('i'))); |
| onHandleView(com.android.internal.R.id.selection_end_handle) |
| .perform(dragHandle(textView, Handle.SELECTION_END, text.indexOf('a'))); |
| onView(withId(R.id.textview)).check(hasSelection("h")); |
| } |
| |
| @SmallTest |
| public void testSelectionHandles_snapToWordBoundary() throws Exception { |
| final String text = "abcd efg hijk lmn opqr"; |
| onView(withId(R.id.textview)).perform(click()); |
| onView(withId(R.id.textview)).perform(typeTextIntoFocusedView(text)); |
| onView(withId(R.id.textview)).perform(doubleClickOnTextAtIndex(text.indexOf('i'))); |
| |
| final TextView textView = (TextView) getActivity().findViewById(R.id.textview); |
| |
| onHandleView(com.android.internal.R.id.selection_start_handle) |
| .perform(dragHandle(textView, Handle.SELECTION_START, text.indexOf('f'))); |
| onView(withId(R.id.textview)).check(hasSelection("efg hijk")); |
| |
| onHandleView(com.android.internal.R.id.selection_start_handle) |
| .perform(dragHandle(textView, Handle.SELECTION_START, text.indexOf('d') + 1)); |
| onView(withId(R.id.textview)).check(hasSelection("efg hijk")); |
| |
| |
| onHandleView(com.android.internal.R.id.selection_start_handle) |
| .perform(dragHandle(textView, Handle.SELECTION_START, text.indexOf('c'))); |
| onView(withId(R.id.textview)).check(hasSelection("abcd efg hijk")); |
| |
| onHandleView(com.android.internal.R.id.selection_start_handle) |
| .perform(dragHandle(textView, Handle.SELECTION_START, text.indexOf('d'))); |
| onView(withId(R.id.textview)).check(hasSelection("d efg hijk")); |
| |
| onHandleView(com.android.internal.R.id.selection_start_handle) |
| .perform(dragHandle(textView, Handle.SELECTION_START, text.indexOf('b'))); |
| onView(withId(R.id.textview)).check(hasSelection("bcd efg hijk")); |
| |
| onView(withId(R.id.textview)).perform(doubleClickOnTextAtIndex(text.indexOf('i'))); |
| |
| onHandleView(com.android.internal.R.id.selection_end_handle) |
| .perform(dragHandle(textView, Handle.SELECTION_END, text.indexOf('n'))); |
| onView(withId(R.id.textview)).check(hasSelection("hijk lmn")); |
| |
| onHandleView(com.android.internal.R.id.selection_end_handle) |
| .perform(dragHandle(textView, Handle.SELECTION_END, text.indexOf('o'))); |
| onView(withId(R.id.textview)).check(hasSelection("hijk lmn")); |
| |
| onHandleView(com.android.internal.R.id.selection_end_handle) |
| .perform(dragHandle(textView, Handle.SELECTION_END, text.indexOf('q'))); |
| onView(withId(R.id.textview)).check(hasSelection("hijk lmn opqr")); |
| |
| onHandleView(com.android.internal.R.id.selection_end_handle) |
| .perform(dragHandle(textView, Handle.SELECTION_END, text.indexOf('p'))); |
| onView(withId(R.id.textview)).check(hasSelection("hijk lmn o")); |
| |
| onHandleView(com.android.internal.R.id.selection_end_handle) |
| .perform(dragHandle(textView, Handle.SELECTION_END, text.indexOf('r'))); |
| onView(withId(R.id.textview)).check(hasSelection("hijk lmn opq")); |
| } |
| |
| @SmallTest |
| public void testSelectionHandles_snapToWordBoundary_multiLine() throws Exception { |
| final String text = "abcd efg\n" + "hijk lmn\n" + "opqr stu"; |
| onView(withId(R.id.textview)).perform(click()); |
| onView(withId(R.id.textview)).perform(typeTextIntoFocusedView(text)); |
| onView(withId(R.id.textview)).perform(doubleClickOnTextAtIndex(text.indexOf('m'))); |
| |
| final TextView textView = (TextView) getActivity().findViewById(R.id.textview); |
| |
| onHandleView(com.android.internal.R.id.selection_start_handle) |
| .perform(dragHandle(textView, Handle.SELECTION_START, text.indexOf('c'))); |
| onView(withId(R.id.textview)).check(hasSelection("abcd efg\nhijk lmn")); |
| |
| onHandleView(com.android.internal.R.id.selection_start_handle) |
| .perform(dragHandle(textView, Handle.SELECTION_START, text.indexOf('g'))); |
| onView(withId(R.id.textview)).check(hasSelection("g\nhijk lmn")); |
| |
| onHandleView(com.android.internal.R.id.selection_start_handle) |
| .perform(dragHandle(textView, Handle.SELECTION_START, text.indexOf('m'))); |
| onView(withId(R.id.textview)).check(hasSelection("lmn")); |
| |
| onView(withId(R.id.textview)).perform(doubleClickOnTextAtIndex(text.indexOf('i'))); |
| |
| onHandleView(com.android.internal.R.id.selection_end_handle) |
| .perform(dragHandle(textView, Handle.SELECTION_END, text.indexOf('u'))); |
| onView(withId(R.id.textview)).check(hasSelection("hijk lmn\nopqr stu")); |
| |
| onHandleView(com.android.internal.R.id.selection_end_handle) |
| .perform(dragHandle(textView, Handle.SELECTION_END, text.indexOf('p'))); |
| onView(withId(R.id.textview)).check(hasSelection("hijk lmn\no")); |
| |
| onHandleView(com.android.internal.R.id.selection_end_handle) |
| .perform(dragHandle(textView, Handle.SELECTION_END, text.indexOf('i'))); |
| onView(withId(R.id.textview)).check(hasSelection("hijk")); |
| } |
| } |