From 88cabede9bc74ade7d0124cde3d40fadb6c97a85 Mon Sep 17 00:00:00 2001 From: Keisuke Kuroyanagi Date: Thu, 8 Oct 2015 19:12:56 +0900 Subject: [PATCH] Add mouse interaction UI test for TextView. Bug: 19544351 Bug: 24475013 Change-Id: If8109ad30a13d5cef4c7aff212b2a8389db0e57d --- .../android/widget/TextViewActivityMouseTest.java | 52 ++++++++++++++++++ .../widget/espresso/DragOnTextViewActions.java | 55 ++++++++++++++++--- .../android/widget/espresso/MouseUiController.java | 63 ++++++++++++++++++++++ .../android/widget/espresso/TextViewActions.java | 21 ++++++++ 4 files changed, 184 insertions(+), 7 deletions(-) create mode 100644 core/tests/coretests/src/android/widget/TextViewActivityMouseTest.java create mode 100644 core/tests/coretests/src/android/widget/espresso/MouseUiController.java diff --git a/core/tests/coretests/src/android/widget/TextViewActivityMouseTest.java b/core/tests/coretests/src/android/widget/TextViewActivityMouseTest.java new file mode 100644 index 000000000000..2c2d39375f8a --- /dev/null +++ b/core/tests/coretests/src/android/widget/TextViewActivityMouseTest.java @@ -0,0 +1,52 @@ +/* + * 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.TextViewActions.mouseDragOnText; +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.matcher.ViewMatchers.withId; + +import com.android.frameworks.coretests.R; + +import android.test.ActivityInstrumentationTestCase2; +import android.test.suitebuilder.annotation.SmallTest; + +/** + * Tests mouse interaction of the TextView widget from an Activity + */ +public class TextViewActivityMouseTest extends ActivityInstrumentationTestCase2{ + + public TextViewActivityMouseTest() { + super(TextViewActivity.class); + } + + @SmallTest + public void testSelectTextByDrag() throws Exception { + getActivity(); + + 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( + mouseDragOnText(helloWorld.indexOf("llo"), helloWorld.indexOf("ld!"))); + + onView(withId(R.id.textview)).check(hasSelection("llo wor")); + } +} diff --git a/core/tests/coretests/src/android/widget/espresso/DragOnTextViewActions.java b/core/tests/coretests/src/android/widget/espresso/DragOnTextViewActions.java index a0cd848a53f5..9ff8e8219f16 100644 --- a/core/tests/coretests/src/android/widget/espresso/DragOnTextViewActions.java +++ b/core/tests/coretests/src/android/widget/espresso/DragOnTextViewActions.java @@ -20,25 +20,22 @@ import static android.support.test.espresso.matcher.ViewMatchers.isAssignableFro import static android.support.test.espresso.matcher.ViewMatchers.isCompletelyDisplayed; import static com.android.internal.util.Preconditions.checkNotNull; import static org.hamcrest.Matchers.allOf; - import android.annotation.Nullable; import android.os.SystemClock; import android.support.test.espresso.UiController; import android.support.test.espresso.PerformException; import android.support.test.espresso.ViewAction; import android.support.test.espresso.action.CoordinatesProvider; -import android.support.test.espresso.action.GeneralClickAction; import android.support.test.espresso.action.MotionEvents; import android.support.test.espresso.action.PrecisionDescriber; -import android.support.test.espresso.action.Press; import android.support.test.espresso.action.Swiper; -import android.support.test.espresso.action.Tap; import android.support.test.espresso.util.HumanReadables; import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.view.ViewConfiguration; import android.widget.TextView; + import org.hamcrest.Matcher; @@ -51,11 +48,48 @@ import org.hamcrest.Matcher; *