summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobrun <tobrun@mapbox.com>2016-03-30 16:42:58 +0200
committerTobrun <tobrun@mapbox.com>2016-03-31 09:38:28 +0200
commit9fc8cf39a8ee0704db70dd500d258cb2465c5a75 (patch)
tree849c2541170f8ff3b8641bb84d7f409d773395d0
parent273600c16e51e5442ab4414f650084ea878594f8 (diff)
downloadqtlocation-mapboxgl-9fc8cf39a8ee0704db70dd500d258cb2465c5a75.tar.gz
[android] #3832 - improve unit testing geometry package
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/geometry/LatLngBoundsTest.java40
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/geometry/LatLngSpanTest.java25
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/geometry/LatLngTest.java20
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/geometry/ProjectedMetersTest.java38
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/geometry/VisibleRegionTest.java50
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/utils/MockParcel.java64
6 files changed, 206 insertions, 31 deletions
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/geometry/LatLngBoundsTest.java b/platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/geometry/LatLngBoundsTest.java
index f9cdf29b81..d607314239 100644
--- a/platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/geometry/LatLngBoundsTest.java
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/geometry/LatLngBoundsTest.java
@@ -1,6 +1,9 @@
package com.mapbox.mapboxsdk.geometry;
+import android.os.Parcel;
+
import com.mapbox.mapboxsdk.exceptions.InvalidLatLngBoundsException;
+import com.mapbox.mapboxsdk.utils.MockParcel;
import org.junit.Before;
import org.junit.Test;
@@ -168,5 +171,42 @@ public class LatLngBoundsTest {
.build());
}
+ @Test
+ public void testParcelable() {
+ LatLngBounds latLngBounds = new LatLngBounds.Builder()
+ .include(new LatLng(10, 10))
+ .include(new LatLng(9, 8))
+ .build();
+ Parcel parcel = MockParcel.obtain(latLngBounds);
+ latLngBounds.writeToParcel(parcel, 0);
+ parcel.setDataPosition(0);
+ LatLngBounds parceable = LatLngBounds.CREATOR.createFromParcel(parcel);
+ assertEquals("parcel should match initial object", latLngBounds, parceable);
+ }
+ @Test
+ public void testParcelableArray() {
+ LatLngBounds latLngBounds1 = new LatLngBounds.Builder()
+ .include(new LatLng(10, 10))
+ .include(new LatLng(9, 8))
+ .build();
+ LatLngBounds latLngBounds2 = new LatLngBounds.Builder()
+ .include(new LatLng(11, 12))
+ .include(new LatLng(95, 9))
+ .build();
+
+ LatLngBounds[] objects = new LatLngBounds[]{latLngBounds1, latLngBounds2};
+ Parcel parcel = MockParcel.obtain(objects);
+ LatLngBounds[] parcelableArray = (LatLngBounds[]) parcel.readParcelableArray(LatLngSpan.class.getClassLoader());
+ assertArrayEquals("parcel should match initial object", objects, parcelableArray);
+ }
+
+ @Test
+ public void testDescribeContents() {
+ LatLngBounds latLngBounds = new LatLngBounds.Builder()
+ .include(new LatLng(10, 10))
+ .include(new LatLng(9, 8))
+ .build();
+ assertEquals("contents should be 0", 0, latLngBounds.describeContents(), DELTA);
+ }
}
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/geometry/LatLngSpanTest.java b/platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/geometry/LatLngSpanTest.java
index 7bf164166c..ece5618f7f 100644
--- a/platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/geometry/LatLngSpanTest.java
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/geometry/LatLngSpanTest.java
@@ -1,9 +1,13 @@
package com.mapbox.mapboxsdk.geometry;
+import android.os.Parcel;
+
import com.mapbox.mapboxsdk.geometry.LatLngSpan;
+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.assertNotNull;
@@ -54,4 +58,25 @@ public class LatLngSpanTest {
assertEquals("latitude in constructor", latLngSpan.getLongitudeSpan(), longitude, DELTA);
}
+ @Test
+ public void testParcelable() {
+ LatLngSpan object = new LatLngSpan(1, 2);
+ Parcel parcel = MockParcel.obtain(object);
+ LatLngSpan parcelable = LatLngSpan.CREATOR.createFromParcel(parcel);
+ assertEquals("parcel should match initial object", object, parcelable);
+ }
+
+ @Test
+ public void testParcelableArray() {
+ LatLngSpan[] objects = new LatLngSpan[]{new LatLngSpan(1, 2), new LatLngSpan(2, 2)};
+ Parcel parcel = MockParcel.obtain(objects);
+ LatLngSpan[] parcelableArray = (LatLngSpan[]) parcel.readParcelableArray(LatLngSpan.class.getClassLoader());
+ assertArrayEquals("parcel should match initial object", objects, parcelableArray);
+ }
+
+ @Test
+ public void testDescribeContents() {
+ LatLngSpan latLngSpan = new LatLngSpan(1.2, 3.4);
+ assertEquals("contents should be 0", 0, latLngSpan.describeContents(), DELTA);
+ }
}
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/geometry/LatLngTest.java b/platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/geometry/LatLngTest.java
index e13efb9708..cb9a291fe0 100644
--- a/platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/geometry/LatLngTest.java
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/geometry/LatLngTest.java
@@ -176,22 +176,22 @@ public class LatLngTest {
@Test
public void testParcelable() {
- LatLng latLng = new LatLng(1, 2, 3);
- Parcel parcel = MockParcel.obtain();
- latLng.writeToParcel(parcel, 0);
+ LatLng object = new LatLng(1, 2, 3);
+ Parcel parcel = MockParcel.obtain(object);
+ object.writeToParcel(parcel, 0);
parcel.setDataPosition(0);
- LatLng parceledLatLng = LatLng.CREATOR.createFromParcel(parcel);
- assertEquals("parcel should match initial object", latLng, parceledLatLng);
+ LatLng parceable = LatLng.CREATOR.createFromParcel(parcel);
+ assertEquals("parcel should match initial object", object, parceable);
}
@Test
public void testParcelableArray() {
- LatLng[] latLngs = new LatLng[]{new LatLng(1, 2, 3), new LatLng(1, 2)};
- Parcel parcel = MockParcel.obtain();
- parcel.writeParcelableArray(latLngs, 0);
+ LatLng[] objects = new LatLng[]{new LatLng(1, 2, 3), new LatLng(1, 2)};
+ Parcel parcel = MockParcel.obtain(objects);
+ parcel.writeParcelableArray(objects, 0);
parcel.setDataPosition(0);
- LatLng[] parceledLatLngs = (LatLng[]) parcel.readParcelableArray(LatLng.class.getClassLoader());
- assertArrayEquals("parcel should match initial object", latLngs, parceledLatLngs);
+ LatLng[] parcelableArray = (LatLng[]) parcel.readParcelableArray(LatLng.class.getClassLoader());
+ assertArrayEquals("parcel should match initial object", objects, parcelableArray);
}
@Test
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/geometry/ProjectedMetersTest.java b/platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/geometry/ProjectedMetersTest.java
index bd40221706..6989d54ca8 100644
--- a/platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/geometry/ProjectedMetersTest.java
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/geometry/ProjectedMetersTest.java
@@ -1,7 +1,12 @@
package com.mapbox.mapboxsdk.geometry;
+import android.os.Parcel;
+
+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.assertNotNull;
@@ -48,8 +53,37 @@ public class ProjectedMetersTest {
}
@Test
- public void testToString(){
+ public void testToString() {
ProjectedMeters meters = new ProjectedMeters(1, 1);
- assertEquals("toString should match","ProjectedMeters [northing=1.0, easting=1.0]",meters.toString());
+ assertEquals("toString should match", "ProjectedMeters [northing=1.0, easting=1.0]", meters.toString());
+ }
+
+ @Test
+ public void testParcelable() {
+ ProjectedMeters object = new ProjectedMeters(1, 1);
+ Parcel parcel = MockParcel.obtain(object);
+ object.writeToParcel(parcel, 0);
+ parcel.setDataPosition(0);
+ ProjectedMeters parceable = ProjectedMeters.CREATOR.createFromParcel(parcel);
+ assertEquals("parcel should match initial object", object, parceable);
+ }
+
+ @Test
+ public void testParcelableArray() {
+ ProjectedMeters object1 = new ProjectedMeters(1, 1);
+ ProjectedMeters object2 = new ProjectedMeters(2, 2);
+ ProjectedMeters[] objects = new ProjectedMeters[]{object1, object2};
+ Parcel parcel = MockParcel.obtain(objects);
+ parcel.writeParcelableArray(objects, 0);
+ parcel.setDataPosition(0);
+ ProjectedMeters[] parcelableArray = (ProjectedMeters[]) parcel.readParcelableArray(ProjectedMeters.class.getClassLoader());
+ assertArrayEquals("parcel should match initial object", objects, parcelableArray);
+ }
+
+ @Test
+ public void testDescribeContents() {
+ ProjectedMeters object = new ProjectedMeters(1, 1);
+ assertEquals("contents should be 0", 0, object.describeContents());
}
+
}
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/geometry/VisibleRegionTest.java b/platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/geometry/VisibleRegionTest.java
index 0682d0878e..04cf36aeaa 100644
--- a/platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/geometry/VisibleRegionTest.java
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/geometry/VisibleRegionTest.java
@@ -1,7 +1,12 @@
package com.mapbox.mapboxsdk.geometry;
+import android.os.Parcel;
+
+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.assertNotNull;
@@ -81,4 +86,49 @@ public class VisibleRegionTest {
, region.toString());
}
+ @Test
+ public void testParcelable() {
+ VisibleRegion object = new VisibleRegion(new LatLng(-1, -1),
+ new LatLng(-1, 1),
+ new LatLng(1, 1),
+ new LatLng(1, -1),
+ new LatLngBounds.Builder().include(new LatLng(1,1)).include(new LatLng(-1,-1)).build());
+
+ Parcel parcel = MockParcel.obtain(object);
+ VisibleRegion parceable = VisibleRegion.CREATOR.createFromParcel(parcel);
+ assertEquals("parcel should match initial object", object, parceable);
+ }
+
+ @Test
+ public void testParcelableArray() {
+ VisibleRegion object1 = new VisibleRegion(new LatLng(-1, -1),
+ new LatLng(-1, 1),
+ new LatLng(1, 1),
+ new LatLng(1, -1),
+ new LatLngBounds.Builder().include(new LatLng(1,1)).include(new LatLng(-1, -1)).build());
+
+ VisibleRegion object2 = new VisibleRegion(new LatLng(-1, -1),
+ new LatLng(-1, 1),
+ new LatLng(1, 1),
+ new LatLng(1, -1),
+ new LatLngBounds.Builder().include(new LatLng(1,1)).include(new LatLng(-1, -1)).build());
+
+ VisibleRegion[] objects = new VisibleRegion[]{object1,object2};
+ Parcel parcel = MockParcel.obtain(objects);
+ parcel.writeParcelableArray(objects, 0);
+ parcel.setDataPosition(0);
+ VisibleRegion[] parcelableArray = (VisibleRegion[]) parcel.readParcelableArray(VisibleRegion.class.getClassLoader());
+ assertArrayEquals("parcel should match initial object", objects, parcelableArray);
+ }
+
+ @Test
+ public void testDescribeContents() {
+ VisibleRegion object = new VisibleRegion(new LatLng(-1, -1),
+ new LatLng(-1, 1),
+ new LatLng(1, 1),
+ new LatLng(1, -1),
+ new LatLngBounds.Builder().include(new LatLng(1,1)).include(new LatLng(-1, -1)).build());
+ assertEquals("contents should be 0", 0, object.describeContents());
+ }
+
}
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 9badde848e..5cf90ff3c0 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
@@ -1,12 +1,13 @@
package com.mapbox.mapboxsdk.utils;
import android.os.Parcel;
-
-import com.mapbox.mapboxsdk.geometry.LatLng;
+import android.os.Parcelable;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
@@ -22,24 +23,39 @@ import static org.mockito.Mockito.when;
public class MockParcel {
- public static Parcel obtain() {
- return new MockParcel().getMockedParcel();
+ public static Parcel obtain(Parcelable target) {
+ Parcel parcel = new MockParcel(target).getMockedParcel();
+ target.writeToParcel(parcel, 0);
+ parcel.setDataPosition(0);
+ return parcel;
}
- Parcel mockedParcel;
- int position;
- List<Object> objects;
-
- public Parcel getMockedParcel() {
- return mockedParcel;
+ public static Parcel obtain(Parcelable[] targets) {
+ if (targets == null || targets.length == 0) {
+ throw new IllegalArgumentException("The passed argument may not be null or empty");
+ }
+ Parcel parcel = new MockParcel(targets[0]).getMockedParcel();
+ parcel.writeParcelableArray(targets, 0);
+ parcel.setDataPosition(0);
+ return parcel;
}
- public MockParcel() {
+ private Parcel mockedParcel;
+ private int position;
+ private List<Object> objects;
+ private Object o;
+
+ private MockParcel(Object o) {
+ this.o = o;
mockedParcel = mock(Parcel.class);
objects = new ArrayList<>();
setupMock();
}
+ private Parcel getMockedParcel() {
+ return mockedParcel;
+ }
+
private void setupMock() {
setupWrites();
setupReads();
@@ -66,11 +82,11 @@ public class MockParcel {
return null;
}
};
-
doAnswer(writeValueAnswer).when(mockedParcel).writeLong(anyLong());
doAnswer(writeValueAnswer).when(mockedParcel).writeString(anyString());
doAnswer(writeValueAnswer).when(mockedParcel).writeDouble(anyDouble());
- doAnswer(writeArrayAnswer).when(mockedParcel).writeParcelableArray(any(LatLng[].class), eq(0));
+ doAnswer(writeValueAnswer).when(mockedParcel).writeParcelable(any(Parcelable.class), eq(0));
+ doAnswer(writeArrayAnswer).when(mockedParcel).writeParcelableArray(any(Parcelable[].class), eq(0));
}
private void setupReads() {
@@ -92,15 +108,26 @@ public class MockParcel {
return (Double) objects.get(position++);
}
});
- when(mockedParcel.readParcelableArray(LatLng.class.getClassLoader())).thenAnswer(new Answer<LatLng[]>() {
+ when(mockedParcel.readParcelable(Parcelable.class.getClassLoader())).thenAnswer(new Answer<Parcelable>() {
+ @Override
+ public Parcelable answer(InvocationOnMock invocation) throws Throwable {
+ return (Parcelable) objects.get(position++);
+ }
+ });
+ when(mockedParcel.readParcelableArray(Parcelable.class.getClassLoader())).thenAnswer(new Answer<Object[]>() {
@Override
- public LatLng[] answer(InvocationOnMock invocation) throws Throwable {
+ public Object[] answer(InvocationOnMock invocation) throws Throwable {
int size = (Integer) objects.get(position++);
- LatLng[] latLngs = LatLng.CREATOR.newArray(size);
+ Field field = o.getClass().getDeclaredField("CREATOR");
+ field.setAccessible(true);
+ Class<?> creatorClass = field.getType();
+ Object fieldValue = field.get(o);
+ Method myMethod = creatorClass.getDeclaredMethod("newArray", int.class);
+ Object[] array = (Object[]) myMethod.invoke(fieldValue, size);
for (int i = 0; i < size; i++) {
- latLngs[i] = (LatLng) objects.get(position++);
+ array[i] = objects.get(position++);
}
- return latLngs;
+ return array;
}
});
}
@@ -114,5 +141,4 @@ public class MockParcel {
}
}).when(mockedParcel).setDataPosition(anyInt());
}
-
}