summaryrefslogtreecommitdiff
path: root/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/activity/BaseTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/activity/BaseTest.java')
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/activity/BaseTest.java126
1 files changed, 53 insertions, 73 deletions
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/activity/BaseTest.java b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/activity/BaseTest.java
index ea69f8adae..c91afe9b60 100644
--- a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/activity/BaseTest.java
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/activity/BaseTest.java
@@ -1,116 +1,96 @@
package com.mapbox.mapboxsdk.testapp.activity;
-import android.app.Activity;
-import android.support.test.espresso.Espresso;
-import android.support.test.espresso.IdlingRegistry;
-import android.support.test.espresso.IdlingResource;
-import android.support.test.espresso.IdlingResourceTimeoutException;
-import android.support.test.espresso.ViewInteraction;
+import android.support.annotation.CallSuper;
+import android.support.annotation.UiThread;
import android.support.test.rule.ActivityTestRule;
-
import com.mapbox.mapboxsdk.Mapbox;
+import com.mapbox.mapboxsdk.maps.MapView;
import com.mapbox.mapboxsdk.maps.MapboxMap;
import com.mapbox.mapboxsdk.testapp.R;
-import com.mapbox.mapboxsdk.testapp.action.MapboxMapAction;
-import com.mapbox.mapboxsdk.testapp.action.WaitAction;
-import com.mapbox.mapboxsdk.testapp.utils.FinishLoadingStyleIdlingResource;
-
-import com.mapbox.mapboxsdk.testapp.utils.MapboxIdlingResource;
-import junit.framework.Assert;
-
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.rules.TestName;
-
import timber.log.Timber;
-import static android.support.test.espresso.Espresso.onView;
-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 java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+import static junit.framework.TestCase.assertNotNull;
+import static junit.framework.TestCase.assertTrue;
/**
* Base class for all Activity test hooking into an existing Activity that will load style.
*/
public abstract class BaseTest {
+ private static final int WAIT_TIMEOUT = 30; //seconds
+
@Rule
- public ActivityTestRule<Activity> rule = new ActivityTestRule<>(getActivityClass());
+ public ActivityTestRule rule = new ActivityTestRule<>(getActivityClass());
@Rule
- public TestName testNameRule = new TestName();
+ public TestName testName = new TestName();
protected MapboxMap mapboxMap;
- protected MapboxIdlingResource idlingResource;
+ protected MapView mapView;
+ private final CountDownLatch latch = new CountDownLatch(1);
@Before
+ @CallSuper
public void beforeTest() {
- try {
- Timber.e(String.format(
- "%s - %s - %s",
- getClass().getSimpleName(),
- testNameRule.getMethodName(),
- "@Before test: register idle resource"
- ));
- idlingResource = (MapboxIdlingResource) generateIdlingResource();
- IdlingRegistry.getInstance().register(idlingResource);
- Espresso.onIdle();
- mapboxMap = idlingResource.getMapboxMap();
- } catch (IdlingResourceTimeoutException idlingResourceTimeoutException) {
- throw new RuntimeException(
- String.format(
- "Could not start %s test for %s.",
- testNameRule.getMethodName(),
- getActivityClass().getSimpleName()
- )
- );
- }
+ initialiseMap();
+ holdTestRunnerForStyleLoad();
}
- protected IdlingResource generateIdlingResource() {
- return new FinishLoadingStyleIdlingResource(rule.getActivity());
+ @After
+ @CallSuper
+ public void afterTest() {
+ // override to add logic
+ }
+
+ @UiThread
+ @CallSuper
+ protected void initMap(MapboxMap mapboxMap) {
+ this.mapboxMap = mapboxMap;
+ mapboxMap.getStyle(style -> latch.countDown());
}
protected void validateTestSetup() {
if (!Mapbox.isConnected()) {
Timber.e("Not connected to the internet while running test");
}
-
- checkViewIsDisplayed(R.id.mapView);
- Assert.assertNotNull(mapboxMap);
- }
-
- protected MapboxMap getMapboxMap() {
- return mapboxMap;
+ assertNotNull("MapView isn't initialised", mapView);
+ assertNotNull("MapboxMap isn't initialised", mapboxMap);
+ assertNotNull("Style isn't initialised", mapboxMap.getStyle());
+ assertTrue("Style isn't fully loaded", mapboxMap.getStyle().isFullyLoaded());
}
protected abstract Class getActivityClass();
- protected void checkViewIsDisplayed(int id) {
- onView(withId(id)).check(matches(isDisplayed()));
- }
-
- protected void waitAction() {
- waitAction(500);
- }
-
- protected void waitAction(long waitTime) {
- onView(withId(R.id.mapView)).perform(new WaitAction(waitTime));
- }
-
- protected ViewInteraction onMapView() {
- return onView(withId(R.id.mapView));
+ private void initialiseMap() {
+ try {
+ rule.runOnUiThread(() -> {
+ mapView = rule.getActivity().findViewById(R.id.mapView);
+ mapView.getMapAsync(this::initMap);
+ });
+ } catch (Throwable throwable) {
+ throwable.printStackTrace();
+ }
}
- protected MapboxMapAction getMapboxMapAction(MapboxMapAction.OnInvokeActionListener onInvokeActionListener) {
- return new MapboxMapAction(onInvokeActionListener, mapboxMap);
- }
+ private void holdTestRunnerForStyleLoad() {
+ boolean interrupted;
+ try {
+ interrupted = latch.await(WAIT_TIMEOUT, TimeUnit.SECONDS);
+ } catch (InterruptedException ignore) {
+ interrupted = true;
+ }
- @After
- public void afterTest() {
- Timber.e(String.format("%s - %s", testNameRule.getMethodName(), "@After test: unregister idle resource"));
- IdlingRegistry.getInstance().unregister(idlingResource);
+ if (!interrupted) {
+ Timber.e("Timeout occurred for %s", testName.getMethodName());
+ validateTestSetup();
+ }
}
-}
+} \ No newline at end of file