diff options
4 files changed, 65 insertions, 3 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Style.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Style.java index 0390ee82ec..567f0fc768 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Style.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Style.java @@ -9,7 +9,6 @@ import android.support.annotation.Nullable; import android.support.annotation.StringDef; import android.util.DisplayMetrics; -import com.mapbox.geojson.Polygon; import com.mapbox.mapboxsdk.constants.MapboxConstants; import com.mapbox.mapboxsdk.style.layers.Layer; import com.mapbox.mapboxsdk.style.layers.TransitionOptions; diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/utils/BitmapUtils.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/utils/BitmapUtils.java index 5584a6eb58..f14e49cb6a 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/utils/BitmapUtils.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/utils/BitmapUtils.java @@ -8,9 +8,12 @@ import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import android.support.annotation.VisibleForTesting; import android.view.View; import java.io.ByteArrayOutputStream; +import java.nio.ByteBuffer; +import java.util.Arrays; /** * Utility class for creating bitmaps @@ -121,4 +124,23 @@ public class BitmapUtils { return new BitmapDrawable(context.getResources(), compass); } + + /** + * Validates if the bytes of a bitmap matches another + * + * @param bitmap the bitmap to be compared against + * @param other the bitmap to compare with + * @return true if equal + */ + @VisibleForTesting + public static boolean equals(Bitmap bitmap, Bitmap other) { + ByteBuffer buffer = ByteBuffer.allocate(bitmap.getHeight() * bitmap.getRowBytes()); + bitmap.copyPixelsToBuffer(buffer); + + ByteBuffer bufferOther = ByteBuffer.allocate(other.getHeight() * other.getRowBytes()); + other.copyPixelsToBuffer(bufferOther); + + return Arrays.equals(buffer.array(), bufferOther.array()); + } + } diff --git a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/maps/StyleBuilderTest.kt b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/maps/StyleBuilderTest.kt index cb42b0b33d..2dd6b55e28 100644 --- a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/maps/StyleBuilderTest.kt +++ b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/maps/StyleBuilderTest.kt @@ -1,11 +1,14 @@ package com.mapbox.mapboxsdk.maps import android.graphics.Bitmap +import android.graphics.drawable.ShapeDrawable import com.mapbox.mapboxsdk.style.layers.SymbolLayer import com.mapbox.mapboxsdk.style.layers.TransitionOptions import com.mapbox.mapboxsdk.style.sources.GeoJsonSource +import com.mapbox.mapboxsdk.utils.BitmapUtils import io.mockk.mockk import org.junit.Assert.assertEquals +import org.junit.Assert.assertTrue import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner @@ -96,6 +99,21 @@ class StyleBuilderTest { } @Test + fun testWithImageDrawable() { + val drawable = ShapeDrawable() + drawable.intrinsicWidth = 1 + drawable.intrinsicHeight = 1 + val builder = Style.Builder() + builder.withImage("id", drawable, true) + assertTrue(BitmapUtils.equals( + BitmapUtils.getBitmapFromDrawable(drawable)!!, + builder.images[0].bitmap) + ) + assertEquals("id", builder.images[0].id) + assertEquals(true, builder.images[0].sdf) + } + + @Test fun testWithTransitionOptions() { val transitionOptions = TransitionOptions(100, 200) val builder = Style.Builder() diff --git a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/maps/StyleTest.kt b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/maps/StyleTest.kt index 83769914ef..58aac9cc78 100644 --- a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/maps/StyleTest.kt +++ b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/maps/StyleTest.kt @@ -1,6 +1,7 @@ package com.mapbox.mapboxsdk.maps import android.graphics.Bitmap +import android.graphics.drawable.ShapeDrawable import com.mapbox.mapboxsdk.constants.MapboxConstants import com.mapbox.mapboxsdk.style.layers.SymbolLayer import com.mapbox.mapboxsdk.style.layers.TransitionOptions @@ -14,7 +15,6 @@ import org.junit.Before import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner -import java.lang.IllegalStateException @RunWith(RobolectricTestRunner::class) class StyleTest { @@ -277,4 +277,27 @@ class StyleTest { style!!.addLayer(mockk<SymbolLayer>()) } -}
\ No newline at end of file + @Test + fun testAddImage() { + val bitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888) + val builder = Style.Builder().fromUrl(Style.SATELLITE).withImage("id", bitmap) + mapboxMap.setStyle(builder) + verify(exactly = 1) { nativeMapView.styleUrl = Style.SATELLITE } + verify(exactly = 0) { nativeMapView.addImages(any()) } + mapboxMap.notifyStyleLoaded() + verify(exactly = 1) { nativeMapView.addImages(any()) } + } + + @Test + fun testAddDrawable() { + val drawable = ShapeDrawable() + drawable.intrinsicHeight = 10 + drawable.intrinsicWidth = 10 + val builder = Style.Builder().fromUrl(Style.SATELLITE).withImage("id", drawable) + mapboxMap.setStyle(builder) + verify(exactly = 1) { nativeMapView.styleUrl = Style.SATELLITE } + verify(exactly = 0) { nativeMapView.addImages(any()) } + mapboxMap.notifyStyleLoaded() + verify(exactly = 1) { nativeMapView.addImages(any()) } + } +} |