diff options
author | Tobrun <tobrun@mapbox.com> | 2016-04-05 08:56:34 +0200 |
---|---|---|
committer | Tobrun <tobrun@mapbox.com> | 2016-04-08 10:06:58 +0200 |
commit | f3c64a4c95947768fd9a695744f9fe0965134c55 (patch) | |
tree | b4298333aef44455850cbf2fd6a7f6df5078f8fc | |
parent | f964e40e7e9220d08751d8607af61ac5a7c0794c (diff) | |
download | qtlocation-mapboxgl-f3c64a4c95947768fd9a695744f9fe0965134c55.tar.gz |
[android] - Marker test coverage
4 files changed, 78 insertions, 6 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/Icon.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/Icon.java index e30b81d4c9..fceeb52713 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/Icon.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/Icon.java @@ -6,9 +6,10 @@ import com.mapbox.mapboxsdk.maps.MapView; /** * Icon is the visual representation of a {@link Marker} on a {@link MapView}. + * * @see Marker */ -public final class Icon { +public class Icon { private Bitmap mBitmap; private String mId; @@ -39,8 +40,13 @@ public final class Icon { @Override public int hashCode() { - int result = mBitmap.hashCode(); - result = 31 * result + mId.hashCode(); + int result = 0; + if (mBitmap != null) { + result = mBitmap.hashCode(); + } + if (mId != null) { + result = 31 * result + mId.hashCode(); + } return result; } } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerOptions.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerOptions.java index a3df23d96f..f7d4bb6f91 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerOptions.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerOptions.java @@ -39,7 +39,7 @@ public final class MarkerOptions extends BaseMarkerOptions<Marker, MarkerOptions marker = new Marker(); position((LatLng) in.readParcelable(LatLng.class.getClassLoader())); snippet(in.readString()); - + title(in.readString()); if(in.readByte()!=0){ // this means we have an icon String iconId = in.readString(); @@ -47,7 +47,6 @@ public final class MarkerOptions extends BaseMarkerOptions<Marker, MarkerOptions Icon icon = new Icon(iconId, iconBitmap); icon(icon); } - title(in.readString()); } @Override @@ -64,13 +63,13 @@ public final class MarkerOptions extends BaseMarkerOptions<Marker, MarkerOptions public void writeToParcel(Parcel out, int flags) { out.writeParcelable(getPosition(), flags); out.writeString(getSnippet()); + out.writeString(getTitle()); Icon icon = getIcon(); out.writeByte((byte) (icon != null ? 1 : 0)); if (icon != null) { out.writeString(getIcon().getId()); out.writeParcelable(getIcon().getBitmap(), flags); } - out.writeString(getTitle()); } private Marker marker; diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/annotations/MarkerTest.java b/platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/annotations/MarkerTest.java index cc38ca40b8..9ba833055b 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/annotations/MarkerTest.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/annotations/MarkerTest.java @@ -2,16 +2,21 @@ package com.mapbox.mapboxsdk.annotations; import android.graphics.Bitmap; import android.graphics.BitmapFactory; +import android.os.Parcel; +import android.os.Parcelable; import com.mapbox.mapboxsdk.annotations.Marker; import com.mapbox.mapboxsdk.annotations.MarkerOptions; import com.mapbox.mapboxsdk.geometry.LatLng; +import com.mapbox.mapboxsdk.utils.MockParcel; import org.junit.Test; +import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertNotNull; +import static org.mockito.Mockito.mock; public class MarkerTest { @@ -88,6 +93,35 @@ public class MarkerTest { } @Test + public void testEqualityDifferentLocation() { + MarkerOptions marker = new MarkerOptions().position(new LatLng(0, 0)); + MarkerOptions other = new MarkerOptions().position(new LatLng(1, 0)); + assertNotEquals("Should not match", other, marker); + } + + + @Test + public void testEqualityDifferentSnippet() { + MarkerOptions marker = new MarkerOptions().snippet("s"); + MarkerOptions other = new MarkerOptions(); + assertNotEquals("Should not match", other, marker); + } + + @Test + public void testEqualityDifferentIcon() { + MarkerOptions marker = new MarkerOptions().icon(mock(Icon.class)); + MarkerOptions other = new MarkerOptions(); + assertNotEquals("Should not match", other, marker); + } + + @Test + public void testEqualityDifferentTitle() { + MarkerOptions marker = new MarkerOptions().title("t"); + MarkerOptions other = new MarkerOptions(); + assertNotEquals("Should not match", other, marker); + } + + @Test public void testEqualsItself() { MarkerOptions markerOptions = new MarkerOptions().position(new LatLng(0, 0)); Marker marker = markerOptions.getMarker(); @@ -116,4 +150,29 @@ public class MarkerTest { assertEquals(marker.toString(), "Marker [position[" + "LatLng [latitude=0.0, longitude=0.0, altitude=0.0]" + "]]"); } + @Test + public void testParcelable() { + MarkerOptions object = new MarkerOptions().position(new LatLng(0, 0)).snippet("s").title("t"); + Parcel parcel = MockParcel.obtain(object); + object.writeToParcel(parcel, 0); + parcel.setDataPosition(0); + MarkerOptions parceable = MarkerOptions.CREATOR.createFromParcel(parcel); + assertEquals("parcel should match initial object", object, parceable); + } + + @Test + public void testParcelableArray() { + MarkerOptions[] objects = new MarkerOptions[]{new MarkerOptions().position(new LatLng(0, 0)), new MarkerOptions().position(new LatLng(1, 1))}; + Parcel parcel = MockParcel.obtain(objects); + parcel.writeParcelableArray(objects, 0); + parcel.setDataPosition(0); + MarkerOptions[] parcelableArray = (MarkerOptions[]) parcel.readParcelableArray(LatLng.class.getClassLoader()); + assertArrayEquals("parcel should match initial object", objects, parcelableArray); + } + + @Test + public void testDescribeContents() { + MarkerOptions object = new MarkerOptions().position(new LatLng(0, 0)).snippet("s").title("t"); + assertEquals("contents should be 0", 1034152.0, object.describeContents(), 0); + } } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/utils/MockParcel.java b/platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/utils/MockParcel.java index 5cf90ff3c0..57ddeb4d09 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/utils/MockParcel.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/utils/MockParcel.java @@ -12,6 +12,7 @@ import java.util.ArrayList; import java.util.List; import static org.mockito.Matchers.any; +import static org.mockito.Matchers.anyByte; import static org.mockito.Matchers.anyDouble; import static org.mockito.Matchers.anyInt; import static org.mockito.Matchers.anyLong; @@ -82,6 +83,7 @@ public class MockParcel { return null; } }; + doAnswer(writeValueAnswer).when(mockedParcel).writeByte(anyByte()); doAnswer(writeValueAnswer).when(mockedParcel).writeLong(anyLong()); doAnswer(writeValueAnswer).when(mockedParcel).writeString(anyString()); doAnswer(writeValueAnswer).when(mockedParcel).writeDouble(anyDouble()); @@ -90,6 +92,12 @@ public class MockParcel { } private void setupReads() { + when(mockedParcel.readByte()).thenAnswer(new Answer<Byte>() { + @Override + public Byte answer(InvocationOnMock invocation) throws Throwable { + return (Byte) objects.get(position++); + } + }); when(mockedParcel.readLong()).thenAnswer(new Answer<Long>() { @Override public Long answer(InvocationOnMock invocation) throws Throwable { |