diff --git a/app/src/androidTest/java/fr/free/nrw/commons/NearbyControllerTest.java b/app/src/androidTest/java/fr/free/nrw/commons/NearbyControllerTest.java new file mode 100644 index 000000000..e26c42265 --- /dev/null +++ b/app/src/androidTest/java/fr/free/nrw/commons/NearbyControllerTest.java @@ -0,0 +1,57 @@ +package fr.free.nrw.commons; + +import android.content.Context; +import android.support.test.InstrumentationRegistry; +import android.support.test.runner.AndroidJUnit4; + +import fr.free.nrw.commons.location.LatLng; +import fr.free.nrw.commons.nearby.NearbyBaseMarker; +import fr.free.nrw.commons.nearby.NearbyController; +import fr.free.nrw.commons.nearby.Place; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + +import java.util.ArrayList; +import java.util.List; + +import static org.hamcrest.CoreMatchers.is; + +@RunWith(AndroidJUnit4.class) +public class NearbyControllerTest { + private Context instrumentationContext; + + @Before + public void setup() { + instrumentationContext = InstrumentationRegistry.getContext(); + } + + @Test public void testNullAttractions() { + LatLng location = new LatLng(0, 0); + + List options = + NearbyController.loadAttractionsFromLocationToBaseMarkerOptions( + location, + null, + instrumentationContext + ); + + Assert.assertThat(options.size(), is(0)); + } + + @Test public void testEmptyList() { + LatLng location = new LatLng(0, 0); + List emptyList = new ArrayList<>(); + + List options = + NearbyController.loadAttractionsFromLocationToBaseMarkerOptions( + location, + emptyList, + instrumentationContext + ); + + Assert.assertThat(options.size(), is(0)); + } +} diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyController.java b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyController.java index 1c0699e17..dc6efe754 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyController.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyController.java @@ -84,14 +84,20 @@ public class NearbyController { *Loads attractions from location for map view, we need to return BaseMarkerOption data type. * @param curLatLng users current location * @param placeList list of nearby places in Place data type - * @return BaseMarkerOprions list that holds nearby places + * @return BaseMarkerOptions list that holds nearby places */ public static List loadAttractionsFromLocationToBaseMarkerOptions( LatLng curLatLng, List placeList, Context context) { - List baseMarkerOptionses = new ArrayList<>(); + List baseMarkerOptions = new ArrayList<>(); + + if (placeList == null) { + return baseMarkerOptions; + } + placeList = placeList.subList(0, Math.min(placeList.size(), MAX_RESULTS)); + for (Place place: placeList) { String distance = formatDistanceBetween(curLatLng, place.location); place.setDistance(distance); @@ -108,8 +114,8 @@ public class NearbyController { nearbyBaseMarker.place(place); nearbyBaseMarker.icon(icon); - baseMarkerOptionses.add(nearbyBaseMarker); + baseMarkerOptions.add(nearbyBaseMarker); } - return baseMarkerOptionses; + return baseMarkerOptions; } }