diff options
author | Łukasz Paczos <lukas.paczos@gmail.com> | 2019-02-12 16:00:20 +0100 |
---|---|---|
committer | Łukasz Paczos <lukasz.paczos@mapbox.com> | 2019-02-12 16:38:55 +0100 |
commit | ca7d9422b6703a4da54ab2fd9da489496b5c4037 (patch) | |
tree | 0027bb2c904c165a46c02294b5cafa0d130a8353 /platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp | |
parent | fbbc83aa0e369cd8adfeec1a4dc1591d5dba2a08 (diff) | |
download | qtlocation-mapboxgl-ca7d9422b6703a4da54ab2fd9da489496b5c4037.tar.gz |
[android] use #onDidBecomeIdle event instead of layer querying during instrumentation tests
Diffstat (limited to 'platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp')
5 files changed, 45 insertions, 45 deletions
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/geometry/GeoJsonConversionTest.java b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/geometry/GeoJsonConversionTest.java index 05e1ce8a99..c34e76a6e5 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/geometry/GeoJsonConversionTest.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/geometry/GeoJsonConversionTest.java @@ -14,7 +14,7 @@ import com.mapbox.mapboxsdk.style.sources.CustomGeometrySource; import com.mapbox.mapboxsdk.style.sources.GeoJsonSource; import com.mapbox.mapboxsdk.style.sources.GeometryTileProvider; import com.mapbox.mapboxsdk.testapp.activity.EspressoTest; -import com.mapbox.mapboxsdk.testapp.utils.Utils; +import com.mapbox.mapboxsdk.testapp.utils.TestingAsyncUtils; import org.junit.Test; @@ -148,7 +148,7 @@ public class GeoJsonConversionTest extends EspressoTest { ); mapboxMap.getStyle().addLayer(layer); - Utils.waitForLayer(uiController, mapboxMap, latLng, "layer"); + TestingAsyncUtils.INSTANCE.waitForLayer(uiController, idlingResource.getMapView()); assertFalse(mapboxMap.queryRenderedFeatures(mapboxMap.getProjection().toScreenLocation(latLng)).isEmpty()); })); diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/ExpressionTest.java b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/ExpressionTest.java index cf6e9357f3..d08eaf3732 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/ExpressionTest.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/ExpressionTest.java @@ -17,6 +17,7 @@ import com.mapbox.mapboxsdk.style.types.Formatted; import com.mapbox.mapboxsdk.style.types.FormattedSection; import com.mapbox.mapboxsdk.testapp.R; import com.mapbox.mapboxsdk.testapp.activity.EspressoTest; +import com.mapbox.mapboxsdk.testapp.utils.TestingAsyncUtils; import com.mapbox.mapboxsdk.testapp.utils.ResourceUtils; import com.mapbox.mapboxsdk.utils.ColorUtils; @@ -53,7 +54,6 @@ import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.fillColor; import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.fillOutlineColor; import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.textField; import static com.mapbox.mapboxsdk.testapp.action.MapboxMapAction.invoke; -import static com.mapbox.mapboxsdk.testapp.utils.Utils.waitForLayer; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNull; @@ -290,10 +290,10 @@ public class ExpressionTest extends EspressoTest { formatEntry("test") ); layer.setProperties(textField(expression)); - waitForLayer(uiController, mapboxMap, latLng, "layer"); + TestingAsyncUtils.INSTANCE.waitForLayer(uiController, idlingResource.getMapView()); + assertFalse(mapboxMap.queryRenderedFeatures(mapboxMap.getProjection().toScreenLocation(latLng), "layer") .isEmpty()); - assertNull(layer.getTextField().getExpression()); assertEquals(new Formatted(new FormattedSection("test")), layer.getTextField().getValue()); }); @@ -313,10 +313,10 @@ public class ExpressionTest extends EspressoTest { formatEntry("test", formatFontScale(1.75)) ); layer.setProperties(textField(expression)); - waitForLayer(uiController, mapboxMap, latLng, "layer"); + TestingAsyncUtils.INSTANCE.waitForLayer(uiController, idlingResource.getMapView()); + assertFalse(mapboxMap.queryRenderedFeatures(mapboxMap.getProjection().toScreenLocation(latLng), "layer") .isEmpty()); - assertNull(layer.getTextField().getExpression()); assertEquals(new Formatted(new FormattedSection("test", 1.75)), layer.getTextField().getValue()); }); @@ -339,11 +339,11 @@ public class ExpressionTest extends EspressoTest { ) ); layer.setProperties(textField(expression)); - waitForLayer(uiController, mapboxMap, latLng, "layer"); + TestingAsyncUtils.INSTANCE.waitForLayer(uiController, idlingResource.getMapView()); + assertFalse( mapboxMap.queryRenderedFeatures(mapboxMap.getProjection().toScreenLocation(latLng), "layer").isEmpty() ); - assertNull(layer.getTextField().getExpression()); assertEquals(new Formatted( new FormattedSection("test", @@ -370,11 +370,11 @@ public class ExpressionTest extends EspressoTest { ) ); layer.setProperties(textField(expression)); - waitForLayer(uiController, mapboxMap, latLng, "layer"); + TestingAsyncUtils.INSTANCE.waitForLayer(uiController, idlingResource.getMapView()); + assertFalse( mapboxMap.queryRenderedFeatures(mapboxMap.getProjection().toScreenLocation(latLng), "layer").isEmpty() ); - assertNull(layer.getTextField().getExpression()); assertEquals(new Formatted( new FormattedSection("test", @@ -403,11 +403,11 @@ public class ExpressionTest extends EspressoTest { formatEntry("\ntest2", formatFontScale(2)) ); layer.setProperties(textField(expression)); - waitForLayer(uiController, mapboxMap, latLng, "layer"); + TestingAsyncUtils.INSTANCE.waitForLayer(uiController, idlingResource.getMapView()); + assertFalse( mapboxMap.queryRenderedFeatures(mapboxMap.getProjection().toScreenLocation(latLng), "layer").isEmpty() ); - assertNull(layer.getTextField().getExpression()); assertEquals(new Formatted( new FormattedSection("test", 1.5, @@ -437,10 +437,10 @@ public class ExpressionTest extends EspressoTest { ) ); layer.setProperties(textField(expression)); - waitForLayer(uiController, mapboxMap, latLng, "layer"); + TestingAsyncUtils.INSTANCE.waitForLayer(uiController, idlingResource.getMapView()); + assertFalse(mapboxMap.queryRenderedFeatures(mapboxMap.getProjection().toScreenLocation(latLng), "layer") .isEmpty()); - assertEquals(expression, layer.getTextField().getExpression()); assertNull(layer.getTextField().getValue()); }); @@ -467,10 +467,10 @@ public class ExpressionTest extends EspressoTest { formatEntry("\ntest2", formatFontScale(2)) ); layer.setProperties(textField(expression)); - waitForLayer(uiController, mapboxMap, latLng, "layer"); + TestingAsyncUtils.INSTANCE.waitForLayer(uiController, idlingResource.getMapView()); + assertFalse(mapboxMap.queryRenderedFeatures(mapboxMap.getProjection().toScreenLocation(latLng), "layer") .isEmpty()); - assertEquals(expression, layer.getTextField().getExpression()); assertNull(layer.getTextField().getValue()); }); @@ -487,10 +487,10 @@ public class ExpressionTest extends EspressoTest { mapboxMap.getStyle().addLayer(layer); layer.setProperties(textField("test")); - waitForLayer(uiController, mapboxMap, latLng, "layer"); + TestingAsyncUtils.INSTANCE.waitForLayer(uiController, idlingResource.getMapView()); + assertFalse(mapboxMap.queryRenderedFeatures(mapboxMap.getProjection().toScreenLocation(latLng), "layer") .isEmpty()); - assertNull(layer.getTextField().getExpression()); assertEquals(new Formatted( new FormattedSection("test")), layer.getTextField().getValue()); @@ -512,10 +512,10 @@ public class ExpressionTest extends EspressoTest { new FormattedSection("\ntest", 0.5, new String[] {"Arial Unicode MS Regular", "DIN Offc Pro Regular"}) ); layer.setProperties(textField(formatted)); - waitForLayer(uiController, mapboxMap, latLng, "layer"); + TestingAsyncUtils.INSTANCE.waitForLayer(uiController, idlingResource.getMapView()); + assertFalse(mapboxMap.queryRenderedFeatures(mapboxMap.getProjection().toScreenLocation(latLng), "layer") .isEmpty()); - assertNull(layer.getTextField().getExpression()); assertEquals(formatted, layer.getTextField().getValue()); }); diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/utils/MapboxIdlingResource.java b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/utils/MapboxIdlingResource.java index 2a4cfee01a..a05221d618 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/utils/MapboxIdlingResource.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/utils/MapboxIdlingResource.java @@ -9,12 +9,13 @@ import com.mapbox.mapboxsdk.testapp.R; public abstract class MapboxIdlingResource implements IdlingResource { + private MapView mapView; private MapboxMap mapboxMap; IdlingResource.ResourceCallback resourceCallback; @UiThread void inflateMap(Activity activity) { - MapView mapView = activity.findViewById(R.id.mapView); + mapView = activity.findViewById(R.id.mapView); if (mapView != null) { mapView.getMapAsync(this::initMap); } @@ -38,4 +39,8 @@ public abstract class MapboxIdlingResource implements IdlingResource { public MapboxMap getMapboxMap() { return mapboxMap; } + + public MapView getMapView() { + return mapView; + } }
\ No newline at end of file diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/utils/TestingAsyncUtils.kt b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/utils/TestingAsyncUtils.kt new file mode 100644 index 0000000000..7c23d8d63c --- /dev/null +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/utils/TestingAsyncUtils.kt @@ -0,0 +1,18 @@ +package com.mapbox.mapboxsdk.testapp.utils + +import android.support.test.espresso.UiController +import com.mapbox.mapboxsdk.maps.MapView + +object TestingAsyncUtils { + private const val DEFAULT_TIMEOUT = 15_000L + + fun waitForLayer(uiController: UiController, mapView: MapView) { + val start = System.nanoTime() / 1E6 + var isIdle = false + mapView.addOnDidBecomeIdleListener { isIdle = true } + + while (!isIdle && System.nanoTime() / 1E6 - start < DEFAULT_TIMEOUT) { + uiController.loopMainThreadForAtLeast(100) + } + } +}
\ No newline at end of file diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/utils/Utils.java b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/utils/Utils.java deleted file mode 100644 index c1aedc5823..0000000000 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/utils/Utils.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.mapbox.mapboxsdk.testapp.utils; - -import android.support.test.espresso.UiController; - -import com.mapbox.mapboxsdk.geometry.LatLng; -import com.mapbox.mapboxsdk.maps.MapboxMap; - -import static org.junit.Assert.assertFalse; - -public class Utils { - - private static final long WAIT_TIMEOUT = 5000; - private static final long WAIT_DELAY = 150; - - public static void waitForLayer(UiController uiController, MapboxMap mapboxMap, LatLng latLng, String... layerIds) { - int i = 0; - while (mapboxMap.queryRenderedFeatures(mapboxMap.getProjection().toScreenLocation(latLng), layerIds).isEmpty()) { - i++; - assertFalse("Waiting for layer timed out", i * WAIT_DELAY > WAIT_TIMEOUT); - uiController.loopMainThreadForAtLeast(WAIT_DELAY); - } - } -}
\ No newline at end of file |