Skip to content
This repository has been archived by the owner on Aug 8, 2023. It is now read-only.

Run MapboxMap on ui thread for instrumentation tests #9198

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ task checkstyle(type: Checkstyle) {
include '**/*.java'
exclude '**/gen/**'
exclude '**/style/*LayerTest.java'
exclude '**/style/LightTest.java'
classpath = files()
ignoreFailures = false
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package com.mapbox.mapboxsdk.testapp.action;

import android.support.test.espresso.UiController;
import android.support.test.espresso.ViewAction;
import android.view.View;

import com.mapbox.mapboxsdk.maps.MapboxMap;

import org.hamcrest.Matcher;

import static android.support.test.espresso.Espresso.onView;
import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
import static android.support.test.espresso.matcher.ViewMatchers.withId;

public class MapboxMapAction implements ViewAction {

private OnInvokeActionListener invokeViewAction;
private MapboxMap mapboxMap;

private MapboxMapAction(OnInvokeActionListener invokeViewAction, MapboxMap mapboxMap) {
this.invokeViewAction = invokeViewAction;
this.mapboxMap = mapboxMap;
}

@Override
public Matcher<View> getConstraints() {
return isDisplayed();
}

@Override
public String getDescription() {
return getClass().getSimpleName();
}

@Override
public void perform(UiController uiController, View view) {
invokeViewAction.onInvokeAction(uiController, mapboxMap);
}

public static void invoke(MapboxMap mapboxMap, OnInvokeActionListener invokeViewAction) {
onView(withId(android.R.id.content)).perform(new MapboxMapAction(invokeViewAction, mapboxMap));
}

public interface OnInvokeActionListener {
void onInvokeAction(UiController uiController, MapboxMap mapboxMap);
}
}


Original file line number Diff line number Diff line change
@@ -1,27 +1,24 @@
package com.mapbox.mapboxsdk.testapp.annotations;

import android.support.test.espresso.UiController;
import android.support.test.espresso.ViewAction;
import android.view.View;

import com.mapbox.mapboxsdk.annotations.Marker;
import com.mapbox.mapboxsdk.annotations.MarkerOptions;
import com.mapbox.mapboxsdk.geometry.LatLng;
import com.mapbox.mapboxsdk.maps.MapboxMap;
import com.mapbox.mapboxsdk.testapp.R;
import com.mapbox.mapboxsdk.testapp.action.MapboxMapAction;
import com.mapbox.mapboxsdk.testapp.activity.BaseActivityTest;
import com.mapbox.mapboxsdk.testapp.activity.espresso.EspressoTestActivity;
import com.mapbox.mapboxsdk.testapp.utils.TestConstants;

import org.hamcrest.Matcher;
import org.junit.Ignore;
import org.junit.Test;

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 static android.support.test.espresso.matcher.ViewMatchers.withText;
import static com.mapbox.mapboxsdk.testapp.action.MapboxMapAction.invoke;
import static org.junit.Assert.assertEquals;

public class MarkerTest extends BaseActivityTest {
Expand All @@ -37,87 +34,45 @@ protected Class getActivityClass() {
@Ignore
public void addMarkerTest() {
validateTestSetup();
assertEquals("Markers should be empty", 0, mapboxMap.getMarkers().size());

MarkerOptions options = new MarkerOptions();
options.setPosition(new LatLng());
options.setSnippet(TestConstants.TEXT_MARKER_SNIPPET);
options.setTitle(TestConstants.TEXT_MARKER_TITLE);

onView(withId(R.id.mapView)).perform(new AddMarkerAction(mapboxMap, options));
assertEquals("Markers sze should be 1, ", 1, mapboxMap.getMarkers().size());
assertEquals("Marker id should be 0", 0, marker.getId());
assertEquals("Marker target should match", new LatLng(), marker.getPosition());
assertEquals("Marker snippet should match", TestConstants.TEXT_MARKER_SNIPPET, marker.getSnippet());
assertEquals("Marker target should match", TestConstants.TEXT_MARKER_TITLE, marker.getTitle());
mapboxMap.clear();
assertEquals("Markers should be empty", 0, mapboxMap.getMarkers().size());
MapboxMapAction.invoke(mapboxMap, new MapboxMapAction.OnInvokeActionListener() {
@Override
public void onInvokeAction(UiController uiController, MapboxMap mapboxMap) {
assertEquals("Markers should be empty", 0, mapboxMap.getMarkers().size());

MarkerOptions options = new MarkerOptions();
options.setPosition(new LatLng());
options.setSnippet(TestConstants.TEXT_MARKER_SNIPPET);
options.setTitle(TestConstants.TEXT_MARKER_TITLE);
marker = mapboxMap.addMarker(options);

assertEquals("Markers size should be 1, ", 1, mapboxMap.getMarkers().size());
assertEquals("Marker id should be 0", 0, marker.getId());
assertEquals("Marker target should match", new LatLng(), marker.getPosition());
assertEquals("Marker snippet should match", TestConstants.TEXT_MARKER_SNIPPET, marker.getSnippet());
assertEquals("Marker target should match", TestConstants.TEXT_MARKER_TITLE, marker.getTitle());
mapboxMap.clear();
assertEquals("Markers should be empty", 0, mapboxMap.getMarkers().size());
}
});
}

@Test
@Ignore
public void showInfoWindowTest() {
validateTestSetup();

final MarkerOptions options = new MarkerOptions();
options.setPosition(new LatLng());
options.setSnippet(TestConstants.TEXT_MARKER_SNIPPET);
options.setTitle(TestConstants.TEXT_MARKER_TITLE);

onView(withId(R.id.mapView)).perform(new AddMarkerAction(mapboxMap, options));
onView(withId(R.id.mapView)).perform(new ShowInfoWindowAction(mapboxMap));
invoke(mapboxMap, new MapboxMapAction.OnInvokeActionListener() {
@Override
public void onInvokeAction(UiController uiController, MapboxMap mapboxMap) {
final MarkerOptions options = new MarkerOptions();
options.setPosition(new LatLng());
options.setSnippet(TestConstants.TEXT_MARKER_SNIPPET);
options.setTitle(TestConstants.TEXT_MARKER_TITLE);
marker = mapboxMap.addMarker(options);
mapboxMap.selectMarker(marker);
}
});
onView(withText(TestConstants.TEXT_MARKER_TITLE)).check(matches(isDisplayed()));
onView(withText(TestConstants.TEXT_MARKER_SNIPPET)).check(matches(isDisplayed()));
}

private class AddMarkerAction implements ViewAction {

private MapboxMap mapboxMap;
private MarkerOptions options;

AddMarkerAction(MapboxMap map, MarkerOptions markerOptions) {
mapboxMap = map;
options = markerOptions;
}

@Override
public Matcher<View> getConstraints() {
return isDisplayed();
}

@Override
public String getDescription() {
return getClass().getSimpleName();
}

@Override
public void perform(UiController uiController, View view) {
marker = mapboxMap.addMarker(options);
}
}

private class ShowInfoWindowAction implements ViewAction {

private MapboxMap mapboxMap;

ShowInfoWindowAction(MapboxMap map) {
mapboxMap = map;
}

@Override
public Matcher<View> getConstraints() {
return isDisplayed();
}

@Override
public String getDescription() {
return getClass().getSimpleName();
}

@Override
public void perform(UiController uiController, View view) {
mapboxMap.selectMarker(marker);

}
}
}
Original file line number Diff line number Diff line change
@@ -1,28 +1,25 @@
package com.mapbox.mapboxsdk.testapp.annotations;

import android.support.test.espresso.UiController;
import android.support.test.espresso.ViewAction;
import android.view.View;

import com.mapbox.mapboxsdk.annotations.Marker;
import com.mapbox.mapboxsdk.geometry.LatLng;
import com.mapbox.mapboxsdk.maps.MapboxMap;
import com.mapbox.mapboxsdk.testapp.R;
import com.mapbox.mapboxsdk.testapp.action.MapboxMapAction;
import com.mapbox.mapboxsdk.testapp.activity.BaseActivityTest;
import com.mapbox.mapboxsdk.testapp.activity.annotation.MarkerViewActivity;
import com.mapbox.mapboxsdk.testapp.activity.espresso.EspressoTestActivity;
import com.mapbox.mapboxsdk.testapp.model.annotations.TextMarkerViewOptions;
import com.mapbox.mapboxsdk.testapp.utils.TestConstants;

import org.hamcrest.Matcher;
import org.junit.Ignore;
import org.junit.Test;

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 static android.support.test.espresso.matcher.ViewMatchers.withText;
import static com.mapbox.mapboxsdk.testapp.action.MapboxMapAction.invoke;
import static org.junit.Assert.assertEquals;

public class MarkerViewTest extends BaseActivityTest {
Expand All @@ -38,92 +35,60 @@ protected Class getActivityClass() {
@Ignore
public void addMarkerViewTest() {
validateTestSetup();
assertEquals("Markers should be empty", 0, mapboxMap.getMarkers().size());

TextMarkerViewOptions options = new TextMarkerViewOptions();
options.text(TestConstants.TEXT_MARKER_TEXT);
options.position(new LatLng());
options.snippet(TestConstants.TEXT_MARKER_SNIPPET);
options.title(TestConstants.TEXT_MARKER_TITLE);

onView(withId(R.id.mapView)).perform(new AddTextMarkerViewAction(mapboxMap, options));
assertEquals("Markers sze should be 1, ", 1, mapboxMap.getMarkers().size());
assertEquals("Marker id should be 0", 0, marker.getId());
assertEquals("Marker target should match", new LatLng(), marker.getPosition());
assertEquals("Marker snippet should match", TestConstants.TEXT_MARKER_SNIPPET, marker.getSnippet());
assertEquals("Marker target should match", TestConstants.TEXT_MARKER_TITLE, marker.getTitle());
addAdapter();
invoke(mapboxMap, new MapboxMapAction.OnInvokeActionListener() {
@Override
public void onInvokeAction(UiController uiController, MapboxMap mapboxMap) {
assertEquals("Markers should be empty", 0, mapboxMap.getMarkers().size());

TextMarkerViewOptions options = new TextMarkerViewOptions();
options.text(TestConstants.TEXT_MARKER_TEXT);
options.position(new LatLng());
options.snippet(TestConstants.TEXT_MARKER_SNIPPET);
options.title(TestConstants.TEXT_MARKER_TITLE);
marker = mapboxMap.addMarker(options);
assertEquals("Markers size should be 1, ", 1, mapboxMap.getMarkers().size());
assertEquals("Marker id should be 0", 0, marker.getId());
assertEquals("Marker target should match", new LatLng(), marker.getPosition());
assertEquals("Marker snippet should match", TestConstants.TEXT_MARKER_SNIPPET, marker.getSnippet());
assertEquals("Marker target should match", TestConstants.TEXT_MARKER_TITLE, marker.getTitle());
uiController.loopMainThreadForAtLeast(500);
}
});
onView(withText(TestConstants.TEXT_MARKER_TEXT)).check(matches(isDisplayed()));
}

@Test
@Ignore
public void showInfoWindowTest() {
validateTestSetup();

final TextMarkerViewOptions options = new TextMarkerViewOptions();
options.position(new LatLng());
options.text(TestConstants.TEXT_MARKER_TEXT);
options.snippet(TestConstants.TEXT_MARKER_SNIPPET);
options.title(TestConstants.TEXT_MARKER_TITLE);

onView(withId(R.id.mapView)).perform(new AddTextMarkerViewAction(mapboxMap, options));
addAdapter();
invoke(mapboxMap, new MapboxMapAction.OnInvokeActionListener() {
@Override
public void onInvokeAction(UiController uiController, MapboxMap mapboxMap) {
final TextMarkerViewOptions options = new TextMarkerViewOptions();
options.position(new LatLng());
options.text(TestConstants.TEXT_MARKER_TEXT);
options.snippet(TestConstants.TEXT_MARKER_SNIPPET);
options.title(TestConstants.TEXT_MARKER_TITLE);
marker = mapboxMap.addMarker(options);
uiController.loopMainThreadForAtLeast(500);
mapboxMap.selectMarker(marker);
}
});
onView(withText(TestConstants.TEXT_MARKER_TEXT)).check(matches(isDisplayed()));
onView(withId(R.id.mapView)).perform(new ShowInfoWindowAction(mapboxMap));
onView(withText(TestConstants.TEXT_MARKER_TITLE)).check(matches(isDisplayed()));
onView(withText(TestConstants.TEXT_MARKER_SNIPPET)).check(matches(isDisplayed()));
}

private class AddTextMarkerViewAction implements ViewAction {

private MapboxMap mapboxMap;
private TextMarkerViewOptions options;

AddTextMarkerViewAction(MapboxMap map, TextMarkerViewOptions markerOptions) {
mapboxMap = map;
options = markerOptions;
}

@Override
public Matcher<View> getConstraints() {
return isDisplayed();
}

@Override
public String getDescription() {
return getClass().getSimpleName();
}

@Override
public void perform(UiController uiController, View view) {
mapboxMap.getMarkerViewManager().addMarkerViewAdapter(
new MarkerViewActivity.TextAdapter(view.getContext(), mapboxMap));
marker = mapboxMap.addMarker(options);
uiController.loopMainThreadForAtLeast(250);
}
private void addAdapter() {
invoke(mapboxMap, new MapboxMapAction.OnInvokeActionListener() {
@Override
public void onInvokeAction(UiController uiController, MapboxMap mapboxMap) {
mapboxMap.getMarkerViewManager().addMarkerViewAdapter(
new MarkerViewActivity.TextAdapter(rule.getActivity(), mapboxMap));
}
});
}

private class ShowInfoWindowAction implements ViewAction {

private MapboxMap mapboxMap;

ShowInfoWindowAction(MapboxMap map) {
mapboxMap = map;
}

@Override
public Matcher<View> getConstraints() {
return isDisplayed();
}

@Override
public String getDescription() {
return getClass().getSimpleName();
}

@Override
public void perform(UiController uiController, View view) {
mapboxMap.selectMarker(marker);
uiController.loopMainThreadForAtLeast(250);
}
}
}
Loading