LocationIndicatorLayer tests

This commit is contained in:
Łukasz Paczos
2020-04-14 16:32:53 +02:00
parent dbaad6312b
commit 7364dd0282
11 changed files with 484 additions and 35 deletions

View File

@@ -1,6 +1,7 @@
package com.mapbox.mapboxsdk.location;
import android.graphics.Bitmap;
import androidx.annotation.NonNull;
import com.google.gson.JsonElement;
@@ -15,6 +16,8 @@ import com.mapbox.mapboxsdk.style.sources.GeoJsonSource;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
import java.util.HashSet;
import java.util.Set;
@@ -43,6 +46,8 @@ import static com.mapbox.mapboxsdk.location.MapboxAnimator.ANIMATOR_LAYER_LATLNG
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertNull;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
@@ -53,6 +58,7 @@ public class LocationLayerControllerTest {
private MapboxMap mapboxMap = mock(MapboxMap.class);
private Style style = mock(Style.class);
private LocationLayerRenderer indicatorRenderer = mock(LocationLayerRenderer.class);
@Before
public void before() {
@@ -316,6 +322,20 @@ public class LocationLayerControllerTest {
verify(style).addImage(BEARING_ICON, bitmap);
}
@Test
public void applyStyle_specializedLayer_ignoreBitmapNames() {
OnRenderModeChangedListener internalRenderModeChangedListener = mock(OnRenderModeChangedListener.class);
LayerSourceProvider sourceProvider = buildLayerProvider();
LocationComponentOptions options = mock(LocationComponentOptions.class);
when(options.foregroundName()).thenReturn("new_name");
LayerBitmapProvider bitmapProvider = mock(LayerBitmapProvider.class);
new LocationLayerController(mapboxMap, mapboxMap.getStyle(), sourceProvider, buildFeatureProvider(options),
bitmapProvider, options, internalRenderModeChangedListener, true);
verify(indicatorRenderer).updateIconIds(eq(FOREGROUND_ICON), anyString(), anyString(), anyString(), anyString());
}
@Test
public void applyStyle_layerBelowChanged() {
OnRenderModeChangedListener internalRenderModeChangedListener = mock(OnRenderModeChangedListener.class);
@@ -599,7 +619,7 @@ public class LocationLayerControllerTest {
LocationLayerController controller =
new LocationLayerController(mapboxMap, mapboxMap.getStyle(), sourceProvider, buildFeatureProvider(options),
bitmapProvider, options, internalRenderModeChangedListener, false);
bitmapProvider, options, internalRenderModeChangedListener, false);
controller.setRenderMode(RenderMode.NORMAL);
controller.setRenderMode(RenderMode.NORMAL);
@@ -618,7 +638,7 @@ public class LocationLayerControllerTest {
LocationLayerController controller =
new LocationLayerController(mapboxMap, mapboxMap.getStyle(), sourceProvider, buildFeatureProvider(options),
bitmapProvider, options, internalRenderModeChangedListener, false);
bitmapProvider, options, internalRenderModeChangedListener, false);
controller.setRenderMode(RenderMode.GPS);
controller.setRenderMode(RenderMode.GPS);
@@ -642,7 +662,7 @@ public class LocationLayerControllerTest {
LocationLayerController controller =
new LocationLayerController(mapboxMap, mapboxMap.getStyle(), sourceProvider, buildFeatureProvider(options),
bitmapProvider, options, internalRenderModeChangedListener, false);
bitmapProvider, options, internalRenderModeChangedListener, false);
verify(style).addImage(FOREGROUND_ICON, bitmap);
@@ -674,7 +694,18 @@ public class LocationLayerControllerTest {
}
private LayerSourceProvider buildLayerProvider() {
LayerSourceProvider layerSourceProvider = mock(LayerSourceProvider.class);
final LayerSourceProvider layerSourceProvider = mock(LayerSourceProvider.class);
when(layerSourceProvider.getIndicatorLocationLayerRenderer()).thenReturn(indicatorRenderer);
when(layerSourceProvider.getSymbolLocationLayerRenderer(any(LayerFeatureProvider.class), anyBoolean())).thenAnswer(
new Answer<LocationLayerRenderer>() {
@Override
public LocationLayerRenderer answer(InvocationOnMock invocation) {
LayerFeatureProvider featureProvider = invocation.getArgument(0);
boolean isStale = invocation.getArgument(1);
return new SymbolLocationLayerRenderer(layerSourceProvider, featureProvider, isStale);
}
}
);
Layer shadowLayer = mock(Layer.class);
when(shadowLayer.getId()).thenReturn(SHADOW_LAYER);