From faa34d6383c0448455d775deea0831d4fcba1875 Mon Sep 17 00:00:00 2001 From: tobrun Date: Tue, 2 Jan 2018 12:15:18 +0100 Subject: [android] - add orientation change regression test --- .../com/mapbox/mapboxsdk/maps/OrientationTest.java | 36 ++++++++++++ .../testapp/action/OrientationChangeAction.java | 66 ++++++++++++++++++++++ .../testapp/activity/BaseActivityTest.java | 6 +- 3 files changed, 107 insertions(+), 1 deletion(-) create mode 100644 platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/maps/OrientationTest.java create mode 100644 platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/action/OrientationChangeAction.java diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/maps/OrientationTest.java b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/maps/OrientationTest.java new file mode 100644 index 0000000000..d4279b4908 --- /dev/null +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/maps/OrientationTest.java @@ -0,0 +1,36 @@ +package com.mapbox.mapboxsdk.maps; + +import com.mapbox.mapboxsdk.testapp.activity.BaseActivityTest; +import com.mapbox.mapboxsdk.testapp.activity.camera.CameraAnimationTypeActivity; +import org.junit.Test; + +import static android.support.test.espresso.Espresso.onView; +import static android.support.test.espresso.matcher.ViewMatchers.isRoot; +import static com.mapbox.mapboxsdk.testapp.action.OrientationChangeAction.orientationLandscape; +import static com.mapbox.mapboxsdk.testapp.action.OrientationChangeAction.orientationPortrait; + +public class OrientationTest extends BaseActivityTest { + + @Test + public void testChangeDeviceOrientation() { + onView(isRoot()).perform(orientationLandscape()); + waitLoop(2200); + onView(isRoot()).perform(orientationPortrait()); + waitLoop(2200); + onView(isRoot()).perform(orientationLandscape()); + onView(isRoot()).perform(orientationPortrait()); + onView(isRoot()).perform(orientationLandscape()); + onView(isRoot()).perform(orientationPortrait()); + onView(isRoot()).perform(orientationLandscape()); + onView(isRoot()).perform(orientationPortrait()); + onView(isRoot()).perform(orientationLandscape()); + onView(isRoot()).perform(orientationPortrait()); + onView(isRoot()).perform(orientationLandscape()); + } + + @Override + protected Class getActivityClass() { + return CameraAnimationTypeActivity.class; + } + +} diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/action/OrientationChangeAction.java b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/action/OrientationChangeAction.java new file mode 100644 index 0000000000..5a53fdf1c2 --- /dev/null +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/action/OrientationChangeAction.java @@ -0,0 +1,66 @@ +package com.mapbox.mapboxsdk.testapp.action; + + +import android.app.Activity; +import android.content.Context; +import android.content.ContextWrapper; +import android.content.pm.ActivityInfo; +import android.support.test.espresso.UiController; +import android.support.test.espresso.ViewAction; +import android.view.View; +import android.view.ViewGroup; +import org.hamcrest.Matcher; + +import static android.support.test.espresso.matcher.ViewMatchers.isRoot; + +public class OrientationChangeAction implements ViewAction { + + private final int orientation; + + private OrientationChangeAction(int orientation) { + this.orientation = orientation; + } + + public static ViewAction orientationLandscape() { + return new OrientationChangeAction(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); + } + + public static ViewAction orientationPortrait() { + return new OrientationChangeAction(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); + } + + @Override + public Matcher getConstraints() { + return isRoot(); + } + + @Override + public String getDescription() { + return "change orientation to " + orientation; + } + + @Override + public void perform(UiController uiController, View view) { + uiController.loopMainThreadUntilIdle(); + Activity activity = getActivity(view.getContext()); + if (activity == null && view instanceof ViewGroup) { + ViewGroup v = (ViewGroup) view; + int c = v.getChildCount(); + for (int i = 0; i < c && activity == null; ++i) { + activity = getActivity(v.getChildAt(i).getContext()); + } + } + activity.setRequestedOrientation(orientation); + } + + private Activity getActivity(Context context) { + while (context instanceof ContextWrapper) { + if (context instanceof Activity) { + return (Activity) context; + } + context = ((ContextWrapper) context).getBaseContext(); + } + return null; + } + +} diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/activity/BaseActivityTest.java b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/activity/BaseActivityTest.java index 61bff1f113..36dffbfb3a 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/activity/BaseActivityTest.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/activity/BaseActivityTest.java @@ -72,7 +72,11 @@ public abstract class BaseActivityTest { } protected void waitLoop() { - onView(withId(R.id.mapView)).perform(new LoopAction(500)); + waitLoop(500); + } + + protected void waitLoop(long waitTime){ + onView(withId(R.id.mapView)).perform(new LoopAction(waitTime)); } static boolean isConnected(Context context) { -- cgit v1.2.1