diff options
3 files changed, 84 insertions, 28 deletions
diff --git a/core/tests/coretests/src/android/widget/TextViewActivityMouseTest.java b/core/tests/coretests/src/android/widget/TextViewActivityMouseTest.java index ddbdc87a4972..7e84fb8d89af 100644 --- a/core/tests/coretests/src/android/widget/TextViewActivityMouseTest.java +++ b/core/tests/coretests/src/android/widget/TextViewActivityMouseTest.java @@ -16,6 +16,9 @@ package android.widget; +import static android.widget.espresso.DragHandleUtils.assertNoSelectionHandles; +import static android.widget.espresso.DragHandleUtils.onHandleView; +import static android.widget.espresso.TextViewActions.mouseClickOnTextAtIndex; import static android.widget.espresso.TextViewActions.mouseDoubleClickOnTextAtIndex; import static android.widget.espresso.TextViewActions.mouseLongClickOnTextAtIndex; import static android.widget.espresso.TextViewActions.mouseDoubleClickAndDragOnText; @@ -25,6 +28,8 @@ import static android.widget.espresso.TextViewAssertions.hasSelection; 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.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 com.android.frameworks.coretests.R; @@ -48,10 +53,23 @@ public class TextViewActivityMouseTest extends ActivityInstrumentationTestCase2< final String helloWorld = "Hello world!"; onView(withId(R.id.textview)).perform(click()); onView(withId(R.id.textview)).perform(typeTextIntoFocusedView(helloWorld)); + + assertNoSelectionHandles(); + onView(withId(R.id.textview)).perform( mouseDragOnText(helloWorld.indexOf("llo"), helloWorld.indexOf("ld!"))); onView(withId(R.id.textview)).check(hasSelection("llo wor")); + + onHandleView(com.android.internal.R.id.selection_start_handle) + .check(matches(isDisplayed())); + onHandleView(com.android.internal.R.id.selection_end_handle) + .check(matches(isDisplayed())); + + onView(withId(R.id.textview)).perform(mouseClickOnTextAtIndex(helloWorld.indexOf("w"))); + onView(withId(R.id.textview)).check(hasSelection("")); + + assertNoSelectionHandles(); } @SmallTest @@ -89,6 +107,9 @@ public class TextViewActivityMouseTest extends ActivityInstrumentationTestCase2< onView(withId(R.id.textview)).perform(mouseLongClickOnTextAtIndex( helloWorld.indexOf("rld"))); onView(withId(R.id.textview)).check(hasSelection("world")); + + onView(withId(R.id.textview)).perform(mouseLongClickOnTextAtIndex(helloWorld.length())); + onView(withId(R.id.textview)).check(hasSelection("!")); } @SmallTest @@ -113,6 +134,9 @@ public class TextViewActivityMouseTest extends ActivityInstrumentationTestCase2< onView(withId(R.id.textview)).perform(mouseDoubleClickOnTextAtIndex( helloWorld.indexOf("rld"))); onView(withId(R.id.textview)).check(hasSelection("world")); + + onView(withId(R.id.textview)).perform(mouseDoubleClickOnTextAtIndex(helloWorld.length())); + onView(withId(R.id.textview)).check(hasSelection("!")); } @SmallTest diff --git a/core/tests/coretests/src/android/widget/TextViewActivityTest.java b/core/tests/coretests/src/android/widget/TextViewActivityTest.java index 461450595b77..2c677438ca35 100644 --- a/core/tests/coretests/src/android/widget/TextViewActivityTest.java +++ b/core/tests/coretests/src/android/widget/TextViewActivityTest.java @@ -16,6 +16,8 @@ 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; @@ -31,19 +33,12 @@ 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.typeTextIntoFocusedView; import static android.support.test.espresso.assertion.ViewAssertions.matches; -import static android.support.test.espresso.matcher.RootMatchers.withDecorView; -import static android.support.test.espresso.matcher.ViewMatchers.hasDescendant; -import static android.support.test.espresso.matcher.ViewMatchers.isAssignableFrom; 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 org.hamcrest.Matchers.allOf; import com.android.frameworks.coretests.R; -import android.support.test.espresso.NoMatchingRootException; -import android.support.test.espresso.NoMatchingViewException; -import android.support.test.espresso.ViewInteraction; import android.test.ActivityInstrumentationTestCase2; import android.test.suitebuilder.annotation.SmallTest; import android.view.KeyEvent; @@ -342,25 +337,4 @@ public class TextViewActivityTest extends ActivityInstrumentationTestCase2<TextV .perform(dragHandle(textView, Handle.SELECTION_END, text.indexOf('i'))); onView(withId(R.id.textview)).check(hasSelection("hijk")); } - - private static void assertNoSelectionHandles() { - try { - onHandleView(com.android.internal.R.id.selection_start_handle) - .check(matches(isDisplayed())); - } catch (NoMatchingRootException | NoMatchingViewException | AssertionError e) { - try { - onHandleView(com.android.internal.R.id.selection_end_handle) - .check(matches(isDisplayed())); - } catch (NoMatchingRootException | NoMatchingViewException | AssertionError e1) { - return; - } - } - throw new AssertionError("Selection handle found"); - } - - private static ViewInteraction onHandleView(int id) - throws NoMatchingRootException, NoMatchingViewException, AssertionError { - return onView(allOf(withId(id), isAssignableFrom(Editor.HandleView.class))) - .inRoot(withDecorView(hasDescendant(withId(id)))); - } } diff --git a/core/tests/coretests/src/android/widget/espresso/DragHandleUtils.java b/core/tests/coretests/src/android/widget/espresso/DragHandleUtils.java new file mode 100644 index 000000000000..f744cae226b6 --- /dev/null +++ b/core/tests/coretests/src/android/widget/espresso/DragHandleUtils.java @@ -0,0 +1,58 @@ +/* + * 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.espresso; + +import static android.support.test.espresso.Espresso.onView; +import static android.support.test.espresso.assertion.ViewAssertions.matches; +import static android.support.test.espresso.matcher.RootMatchers.withDecorView; +import static android.support.test.espresso.matcher.ViewMatchers.hasDescendant; +import static android.support.test.espresso.matcher.ViewMatchers.isAssignableFrom; +import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed; +import static android.support.test.espresso.matcher.ViewMatchers.withId; +import static org.hamcrest.Matchers.allOf; + +import android.support.test.espresso.NoMatchingRootException; +import android.support.test.espresso.NoMatchingViewException; +import android.support.test.espresso.ViewInteraction; +import android.widget.Editor; + +public class DragHandleUtils { + private DragHandleUtils() { + + } + + public static void assertNoSelectionHandles() { + try { + onHandleView(com.android.internal.R.id.selection_start_handle) + .check(matches(isDisplayed())); + } catch (NoMatchingRootException | NoMatchingViewException | AssertionError e) { + try { + onHandleView(com.android.internal.R.id.selection_end_handle) + .check(matches(isDisplayed())); + } catch (NoMatchingRootException | NoMatchingViewException | AssertionError e1) { + return; + } + } + throw new AssertionError("Selection handle found"); + } + + public static ViewInteraction onHandleView(int id) + throws NoMatchingRootException, NoMatchingViewException, AssertionError { + return onView(allOf(withId(id), isAssignableFrom(Editor.HandleView.class))) + .inRoot(withDecorView(hasDescendant(withId(id)))); + } +} |