package com.bitmonlab.osiris.api.core.map.managers.impl; import java.util.ArrayList; import java.util.Collection; import java.util.List; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import math.geom2d.Point2D; import math.geom2d.polygon.SimplePolygon2D; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.runners.MockitoJUnitRunner; import org.powermock.api.mockito.PowerMockito; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; import com.bitmonlab.osiris.api.core.map.dao.api.FeatureRepository; import com.bitmonlab.osiris.api.core.map.dao.api.MapRepository; import com.bitmonlab.osiris.api.core.map.exceptions.QueryException; import com.bitmonlab.osiris.api.core.map.exceptions.RoomNotFoundException; import com.bitmonlab.osiris.api.core.map.managers.impl.SearchManagerImpl; import com.bitmonlab.osiris.api.core.map.transferobject.LayerDTO; import com.bitmonlab.osiris.commons.map.model.geojson.Feature; import com.bitmonlab.osiris.commons.map.model.geojson.LineString; //@RunWith(MockitoJUnitRunner.class) @RunWith(PowerMockRunner.class) @PrepareForTest({SearchManagerImpl.class, Integer.class, Point2D.class}) public class SearchManagerImplTest { @InjectMocks private SearchManagerImpl searchManagerImpl; @Mock private FeatureRepository featureRepository; @Mock private MapRepository mapRepository; @Mock private Collection<Feature> collectionFeatures; @Mock private Collection<Feature> collectionMap; @Mock private SimplePolygon2D simplePolygon2DRoom1; @Mock private SimplePolygon2D simplePolygon2DRoom2; @Mock private SimplePolygon2D simplePolygon2DRoom2Complement; @Mock private LineString geometry1; @Mock private LineString geometry2; @Mock private List<Double> coordinatesRoom11; @Mock private List<Double> coordinatesRoom12; @Mock private List<Double> coordinatesRoom13; @Mock private List<Double> coordinatesRoom14; @Mock private List<Double> coordinatesRoom21; @Mock private List<Double> coordinatesRoom22; @Mock private List<Double> coordinatesRoom23; @Mock private List<Double> coordinatesRoom24; @Mock private Point2D point11; @Mock private Point2D point12; @Mock private Point2D point13; @Mock private Point2D point21; @Mock private Point2D point22; @Mock private Point2D point23; @Mock private Feature featureRoom1; @Mock private Feature featureRoom2; @Test public void getFeaturesByQueryAllTest() throws QueryException{ String idApplication = "9"; String query ="query"; Integer pageIndex=5; Integer pageSize= 20; LayerDTO layerDTO=LayerDTO.ALL; //Fixture Mockito.when(featureRepository.searchIDAppAndQuery(idApplication,query, pageIndex, pageSize)).thenReturn(collectionFeatures); Mockito.when(mapRepository.searchIDAppAndQuery(idApplication,query, pageIndex, pageSize)).thenReturn(collectionMap); //Experimentation searchManagerImpl.getFeaturesByQuery(idApplication, query, layerDTO, pageIndex, pageSize); //Expectation Mockito.verify(featureRepository).searchIDAppAndQuery(idApplication, query, pageIndex, pageSize); Mockito.verify(mapRepository).searchIDAppAndQuery(idApplication, query, pageIndex, pageSize); Mockito.verify(collectionFeatures).addAll(collectionMap); } @Test public void getFeaturesByQueryFeaturesTest() throws QueryException{ String idApplication = "9"; String query ="query"; Integer pageIndex=5; Integer pageSize= 20; LayerDTO layerDTO=LayerDTO.FEATURES; //Fixture Mockito.when(featureRepository.searchIDAppAndQuery(idApplication,query, pageIndex, pageSize)).thenReturn(collectionFeatures); //Experimentation searchManagerImpl.getFeaturesByQuery(idApplication, query, layerDTO, pageIndex, pageSize); //Expectation Mockito.verify(featureRepository).searchIDAppAndQuery(idApplication, query, pageIndex, pageSize); } @Test public void getFeaturesByQueryMapTest() throws QueryException{ String idApplication = "9"; String query ="query"; Integer pageIndex=5; Integer pageSize= 20; LayerDTO layerDTO=LayerDTO.MAP; //Fixture Mockito.when(mapRepository.searchIDAppAndQuery(idApplication,query, pageIndex, pageSize)).thenReturn(collectionFeatures); //Experimentation searchManagerImpl.getFeaturesByQuery(idApplication, query, layerDTO, pageIndex, pageSize); //Expectation Mockito.verify(mapRepository).searchIDAppAndQuery(idApplication, query, pageIndex, pageSize); } @Test public void getFeaturesByQueryAllWithOrderTest() throws QueryException{ String idApplication = "9"; String query ="query"; Integer pageIndex=5; Integer pageSize= 20; LayerDTO layerDTO=LayerDTO.ALL; String orderField="field"; String order="ASC"; //Fixture Mockito.when(featureRepository.searchIDAppAndQuery(idApplication,query, pageIndex, pageSize, orderField, order)).thenReturn(collectionFeatures); Mockito.when(mapRepository.searchIDAppAndQuery(idApplication,query, pageIndex, pageSize, orderField, order)).thenReturn(collectionMap); //Experimentation searchManagerImpl.getFeaturesByQuery(idApplication, query, layerDTO, pageIndex, pageSize, orderField, order); //Expectation Mockito.verify(featureRepository).searchIDAppAndQuery(idApplication, query, pageIndex, pageSize, orderField, order); Mockito.verify(mapRepository).searchIDAppAndQuery(idApplication, query, pageIndex, pageSize, orderField, order); Mockito.verify(collectionFeatures).addAll(collectionMap); } @Test public void getFeaturesByQueryFeaturesWithOrderTest() throws QueryException{ String idApplication = "9"; String query ="query"; Integer pageIndex=5; Integer pageSize= 20; LayerDTO layerDTO=LayerDTO.FEATURES; String orderField="field"; String order="ASC"; //Fixture Mockito.when(featureRepository.searchIDAppAndQuery(idApplication,query, pageIndex, pageSize, orderField, order)).thenReturn(collectionFeatures); //Experimentation searchManagerImpl.getFeaturesByQuery(idApplication, query, layerDTO, pageIndex, pageSize, orderField, order); //Expectation Mockito.verify(featureRepository).searchIDAppAndQuery(idApplication, query, pageIndex, pageSize, orderField, order); } @Test public void getFeaturesByQueryMapWithOrderTest() throws QueryException{ String idApplication = "9"; String query ="query"; Integer pageIndex=5; Integer pageSize= 20; LayerDTO layerDTO=LayerDTO.MAP; String orderField="field"; String order="ASC"; //Fixture Mockito.when(mapRepository.searchIDAppAndQuery(idApplication,query, pageIndex, pageSize, orderField, order)).thenReturn(collectionFeatures); //Experimentation searchManagerImpl.getFeaturesByQuery(idApplication, query, layerDTO, pageIndex, pageSize, orderField, order); //Expectation Mockito.verify(mapRepository).searchIDAppAndQuery(idApplication, query, pageIndex, pageSize, orderField, order); } @Test public void getRoomByLocationInOrderTest() throws Exception { //Fixture String appIdentifier="appIdentifier"; Double longitude=1.0; Double latitude=2.0; Integer floor=3; List<Feature> featureRooms=new ArrayList<Feature>(); featureRooms.add(featureRoom1); featureRooms.add(featureRoom2); List<List<Double>> coordinatesRoom1=new ArrayList<List<Double>>(); coordinatesRoom1.add(coordinatesRoom11); coordinatesRoom1.add(coordinatesRoom12); coordinatesRoom1.add(coordinatesRoom13); coordinatesRoom1.add(coordinatesRoom14); Double longitudeCoordinateRoom11=4.0; Double latitudeCoordinateRoom11=5.0; Double longitudeCoordinateRoom12=6.0; Double latitudeCoordinateRoom12=7.0; Double longitudeCoordinateRoom13=8.0; Double latitudeCoordinateRoom13=9.0; Double areaRoom1=70.0; boolean isContained1=true; List<List<Double>> coordinatesRoom2=new ArrayList<List<Double>>(); coordinatesRoom2.add(coordinatesRoom21); coordinatesRoom2.add(coordinatesRoom22); coordinatesRoom2.add(coordinatesRoom23); coordinatesRoom2.add(coordinatesRoom24); Double longitudeCoordinateRoom21=10.0; Double latitudeCoordinateRoom21=11.0; Double longitudeCoordinateRoom22=12.0; Double latitudeCoordinateRoom22=13.0; Double longitudeCoordinateRoom23=14.0; Double latitudeCoordinateRoom23=15.0; Double areaRoom2=80.0; Mockito.when(mapRepository.searchByLocation(appIdentifier, longitude, latitude, floor)).thenReturn(featureRooms); PowerMockito.whenNew(SimplePolygon2D.class).withNoArguments().thenReturn(simplePolygon2DRoom1,simplePolygon2DRoom2); Mockito.when(featureRoom1.getGeometry()).thenReturn(geometry1); Mockito.when(geometry1.getCoordinates()).thenReturn(coordinatesRoom1); Mockito.when(coordinatesRoom11.get(0)).thenReturn(longitudeCoordinateRoom11); Mockito.when(coordinatesRoom11.get(1)).thenReturn(latitudeCoordinateRoom11); PowerMockito.whenNew(Point2D.class).withArguments(longitudeCoordinateRoom11,latitudeCoordinateRoom11).thenReturn(point11); Mockito.when(coordinatesRoom12.get(0)).thenReturn(longitudeCoordinateRoom12); Mockito.when(coordinatesRoom12.get(1)).thenReturn(latitudeCoordinateRoom12); PowerMockito.whenNew(Point2D.class).withArguments(longitudeCoordinateRoom12,latitudeCoordinateRoom12).thenReturn(point12); Mockito.when(coordinatesRoom13.get(0)).thenReturn(longitudeCoordinateRoom13); Mockito.when(coordinatesRoom13.get(1)).thenReturn(latitudeCoordinateRoom13); PowerMockito.whenNew(Point2D.class).withArguments(longitudeCoordinateRoom13,latitudeCoordinateRoom13).thenReturn(point13); Mockito.when(simplePolygon2DRoom1.area()).thenReturn(areaRoom1); Mockito.when(featureRoom2.getGeometry()).thenReturn(geometry2); Mockito.when(geometry2.getCoordinates()).thenReturn(coordinatesRoom2); Mockito.when(coordinatesRoom21.get(0)).thenReturn(longitudeCoordinateRoom21); Mockito.when(coordinatesRoom21.get(1)).thenReturn(latitudeCoordinateRoom21); PowerMockito.whenNew(Point2D.class).withArguments(longitudeCoordinateRoom21,latitudeCoordinateRoom21).thenReturn(point21); Mockito.when(coordinatesRoom22.get(0)).thenReturn(longitudeCoordinateRoom22); Mockito.when(coordinatesRoom22.get(1)).thenReturn(latitudeCoordinateRoom22); PowerMockito.whenNew(Point2D.class).withArguments(longitudeCoordinateRoom22,latitudeCoordinateRoom22).thenReturn(point22); Mockito.when(coordinatesRoom23.get(0)).thenReturn(longitudeCoordinateRoom23); Mockito.when(coordinatesRoom23.get(1)).thenReturn(latitudeCoordinateRoom23); PowerMockito.whenNew(Point2D.class).withArguments(longitudeCoordinateRoom23,latitudeCoordinateRoom23).thenReturn(point23); Mockito.when(simplePolygon2DRoom2.area()).thenReturn(areaRoom2); Mockito.when(simplePolygon2DRoom1.contains(longitude,latitude)).thenReturn(isContained1); //Experimentation Feature feature = searchManagerImpl.getRoomByLocation(appIdentifier, longitude, latitude, floor); //Expectation Mockito.verify(mapRepository).searchByLocation(appIdentifier,longitude,latitude,floor); Mockito.verify(featureRoom1).getGeometry(); Mockito.verify(geometry1).getCoordinates(); Mockito.verify(simplePolygon2DRoom1).addVertex(point11); Mockito.verify(simplePolygon2DRoom1).addVertex(point12); Mockito.verify(simplePolygon2DRoom1).addVertex(point13); Mockito.verify(featureRoom2).getGeometry(); Mockito.verify(geometry2).getCoordinates(); Mockito.verify(simplePolygon2DRoom2).addVertex(point21); Mockito.verify(simplePolygon2DRoom2).addVertex(point22); Mockito.verify(simplePolygon2DRoom2).addVertex(point23); Mockito.verify(simplePolygon2DRoom1).contains(longitude,latitude); assertNotNull("Feature must not be null",feature); assertEquals("Feature must be the same", featureRoom1, feature); } @Test public void getRoomByLocationWithoutOrderTest() throws Exception { //Fixture String appIdentifier="appIdentifier"; Double longitude=1.0; Double latitude=2.0; Integer floor=3; List<Feature> featureRooms=new ArrayList<Feature>(); featureRooms.add(featureRoom1); featureRooms.add(featureRoom2); List<List<Double>> coordinatesRoom1=new ArrayList<List<Double>>(); coordinatesRoom1.add(coordinatesRoom11); coordinatesRoom1.add(coordinatesRoom12); coordinatesRoom1.add(coordinatesRoom13); coordinatesRoom1.add(coordinatesRoom14); Double longitudeCoordinateRoom11=4.0; Double latitudeCoordinateRoom11=5.0; Double longitudeCoordinateRoom12=6.0; Double latitudeCoordinateRoom12=7.0; Double longitudeCoordinateRoom13=8.0; Double latitudeCoordinateRoom13=9.0; Double areaRoom1=90.0; List<List<Double>> coordinatesRoom2=new ArrayList<List<Double>>(); coordinatesRoom2.add(coordinatesRoom21); coordinatesRoom2.add(coordinatesRoom22); coordinatesRoom2.add(coordinatesRoom23); coordinatesRoom2.add(coordinatesRoom24); Double longitudeCoordinateRoom21=10.0; Double latitudeCoordinateRoom21=11.0; Double longitudeCoordinateRoom22=12.0; Double latitudeCoordinateRoom22=13.0; Double longitudeCoordinateRoom23=14.0; Double latitudeCoordinateRoom23=15.0; Double areaRoom2=80.0; boolean isContained2=true; Mockito.when(mapRepository.searchByLocation(appIdentifier, longitude, latitude, floor)).thenReturn(featureRooms); PowerMockito.whenNew(SimplePolygon2D.class).withNoArguments().thenReturn(simplePolygon2DRoom1,simplePolygon2DRoom2); Mockito.when(featureRoom1.getGeometry()).thenReturn(geometry1); Mockito.when(geometry1.getCoordinates()).thenReturn(coordinatesRoom1); Mockito.when(coordinatesRoom11.get(0)).thenReturn(longitudeCoordinateRoom11); Mockito.when(coordinatesRoom11.get(1)).thenReturn(latitudeCoordinateRoom11); PowerMockito.whenNew(Point2D.class).withArguments(longitudeCoordinateRoom11,latitudeCoordinateRoom11).thenReturn(point11); Mockito.when(coordinatesRoom12.get(0)).thenReturn(longitudeCoordinateRoom12); Mockito.when(coordinatesRoom12.get(1)).thenReturn(latitudeCoordinateRoom12); PowerMockito.whenNew(Point2D.class).withArguments(longitudeCoordinateRoom12,latitudeCoordinateRoom12).thenReturn(point12); Mockito.when(coordinatesRoom13.get(0)).thenReturn(longitudeCoordinateRoom13); Mockito.when(coordinatesRoom13.get(1)).thenReturn(latitudeCoordinateRoom13); PowerMockito.whenNew(Point2D.class).withArguments(longitudeCoordinateRoom13,latitudeCoordinateRoom13).thenReturn(point13); Mockito.when(simplePolygon2DRoom1.area()).thenReturn(areaRoom1); Mockito.when(featureRoom2.getGeometry()).thenReturn(geometry2); Mockito.when(geometry2.getCoordinates()).thenReturn(coordinatesRoom2); Mockito.when(coordinatesRoom21.get(0)).thenReturn(longitudeCoordinateRoom21); Mockito.when(coordinatesRoom21.get(1)).thenReturn(latitudeCoordinateRoom21); PowerMockito.whenNew(Point2D.class).withArguments(longitudeCoordinateRoom21,latitudeCoordinateRoom21).thenReturn(point21); Mockito.when(coordinatesRoom22.get(0)).thenReturn(longitudeCoordinateRoom22); Mockito.when(coordinatesRoom22.get(1)).thenReturn(latitudeCoordinateRoom22); PowerMockito.whenNew(Point2D.class).withArguments(longitudeCoordinateRoom22,latitudeCoordinateRoom22).thenReturn(point22); Mockito.when(coordinatesRoom23.get(0)).thenReturn(longitudeCoordinateRoom23); Mockito.when(coordinatesRoom23.get(1)).thenReturn(latitudeCoordinateRoom23); PowerMockito.whenNew(Point2D.class).withArguments(longitudeCoordinateRoom23,latitudeCoordinateRoom23).thenReturn(point23); Mockito.when(simplePolygon2DRoom2.area()).thenReturn(areaRoom2); Mockito.when(simplePolygon2DRoom2.contains(longitude,latitude)).thenReturn(isContained2); //Experimentation Feature feature = searchManagerImpl.getRoomByLocation(appIdentifier, longitude, latitude, floor); //Expectation Mockito.verify(mapRepository).searchByLocation(appIdentifier,longitude,latitude,floor); Mockito.verify(featureRoom1).getGeometry(); Mockito.verify(geometry1).getCoordinates(); Mockito.verify(simplePolygon2DRoom1).addVertex(point11); Mockito.verify(simplePolygon2DRoom1).addVertex(point12); Mockito.verify(simplePolygon2DRoom1).addVertex(point13); Mockito.verify(featureRoom2).getGeometry(); Mockito.verify(geometry2).getCoordinates(); Mockito.verify(simplePolygon2DRoom2).addVertex(point21); Mockito.verify(simplePolygon2DRoom2).addVertex(point22); Mockito.verify(simplePolygon2DRoom2).addVertex(point23); Mockito.verify(simplePolygon2DRoom2).contains(longitude,latitude); assertNotNull("Feature must not be null",feature); assertEquals("Feature must be the same", featureRoom2, feature); } @Test public void getRoomByLocationWithoutOrderNegativeAreaTest() throws Exception { //Fixture String appIdentifier="appIdentifier"; Double longitude=1.0; Double latitude=2.0; Integer floor=3; List<Feature> featureRooms=new ArrayList<Feature>(); featureRooms.add(featureRoom1); featureRooms.add(featureRoom2); List<List<Double>> coordinatesRoom1=new ArrayList<List<Double>>(); coordinatesRoom1.add(coordinatesRoom11); coordinatesRoom1.add(coordinatesRoom12); coordinatesRoom1.add(coordinatesRoom13); coordinatesRoom1.add(coordinatesRoom14); Double longitudeCoordinateRoom11=4.0; Double latitudeCoordinateRoom11=5.0; Double longitudeCoordinateRoom12=6.0; Double latitudeCoordinateRoom12=7.0; Double longitudeCoordinateRoom13=8.0; Double latitudeCoordinateRoom13=9.0; Double areaRoom1=90.0; List<List<Double>> coordinatesRoom2=new ArrayList<List<Double>>(); coordinatesRoom2.add(coordinatesRoom21); coordinatesRoom2.add(coordinatesRoom22); coordinatesRoom2.add(coordinatesRoom23); coordinatesRoom2.add(coordinatesRoom24); Double longitudeCoordinateRoom21=10.0; Double latitudeCoordinateRoom21=11.0; Double longitudeCoordinateRoom22=12.0; Double latitudeCoordinateRoom22=13.0; Double longitudeCoordinateRoom23=14.0; Double latitudeCoordinateRoom23=15.0; Double areaRoom2=-80.0; boolean isContained2=true; Mockito.when(mapRepository.searchByLocation(appIdentifier, longitude, latitude, floor)).thenReturn(featureRooms); PowerMockito.whenNew(SimplePolygon2D.class).withNoArguments().thenReturn(simplePolygon2DRoom1,simplePolygon2DRoom2); Mockito.when(featureRoom1.getGeometry()).thenReturn(geometry1); Mockito.when(geometry1.getCoordinates()).thenReturn(coordinatesRoom1); Mockito.when(coordinatesRoom11.get(0)).thenReturn(longitudeCoordinateRoom11); Mockito.when(coordinatesRoom11.get(1)).thenReturn(latitudeCoordinateRoom11); PowerMockito.whenNew(Point2D.class).withArguments(longitudeCoordinateRoom11,latitudeCoordinateRoom11).thenReturn(point11); Mockito.when(coordinatesRoom12.get(0)).thenReturn(longitudeCoordinateRoom12); Mockito.when(coordinatesRoom12.get(1)).thenReturn(latitudeCoordinateRoom12); PowerMockito.whenNew(Point2D.class).withArguments(longitudeCoordinateRoom12,latitudeCoordinateRoom12).thenReturn(point12); Mockito.when(coordinatesRoom13.get(0)).thenReturn(longitudeCoordinateRoom13); Mockito.when(coordinatesRoom13.get(1)).thenReturn(latitudeCoordinateRoom13); PowerMockito.whenNew(Point2D.class).withArguments(longitudeCoordinateRoom13,latitudeCoordinateRoom13).thenReturn(point13); Mockito.when(simplePolygon2DRoom1.area()).thenReturn(areaRoom1); Mockito.when(featureRoom2.getGeometry()).thenReturn(geometry2); Mockito.when(geometry2.getCoordinates()).thenReturn(coordinatesRoom2); Mockito.when(coordinatesRoom21.get(0)).thenReturn(longitudeCoordinateRoom21); Mockito.when(coordinatesRoom21.get(1)).thenReturn(latitudeCoordinateRoom21); PowerMockito.whenNew(Point2D.class).withArguments(longitudeCoordinateRoom21,latitudeCoordinateRoom21).thenReturn(point21); Mockito.when(coordinatesRoom22.get(0)).thenReturn(longitudeCoordinateRoom22); Mockito.when(coordinatesRoom22.get(1)).thenReturn(latitudeCoordinateRoom22); PowerMockito.whenNew(Point2D.class).withArguments(longitudeCoordinateRoom22,latitudeCoordinateRoom22).thenReturn(point22); Mockito.when(coordinatesRoom23.get(0)).thenReturn(longitudeCoordinateRoom23); Mockito.when(coordinatesRoom23.get(1)).thenReturn(latitudeCoordinateRoom23); PowerMockito.whenNew(Point2D.class).withArguments(longitudeCoordinateRoom23,latitudeCoordinateRoom23).thenReturn(point23); Mockito.when(simplePolygon2DRoom2.area()).thenReturn(areaRoom2); Mockito.when(simplePolygon2DRoom2.complement()).thenReturn(simplePolygon2DRoom2Complement); Mockito.when(simplePolygon2DRoom2Complement.area()).thenReturn(Math.abs(areaRoom2)); Mockito.when(simplePolygon2DRoom2Complement.contains(longitude,latitude)).thenReturn(isContained2); //Experimentation Feature feature = searchManagerImpl.getRoomByLocation(appIdentifier, longitude, latitude, floor); //Expectation Mockito.verify(mapRepository).searchByLocation(appIdentifier,longitude,latitude,floor); Mockito.verify(featureRoom1).getGeometry(); Mockito.verify(geometry1).getCoordinates(); Mockito.verify(simplePolygon2DRoom1).addVertex(point11); Mockito.verify(simplePolygon2DRoom1).addVertex(point12); Mockito.verify(simplePolygon2DRoom1).addVertex(point13); Mockito.verify(featureRoom2).getGeometry(); Mockito.verify(geometry2).getCoordinates(); Mockito.verify(simplePolygon2DRoom2).addVertex(point21); Mockito.verify(simplePolygon2DRoom2).addVertex(point22); Mockito.verify(simplePolygon2DRoom2).addVertex(point23); Mockito.verify(simplePolygon2DRoom2).complement(); Mockito.verify(simplePolygon2DRoom2Complement).contains(longitude,latitude); assertNotNull("Feature must not be null",feature); assertEquals("Feature must be the same", featureRoom2, feature); } @Test public void getRoomByLocationInOrderWithNoContainTest() throws Exception { //Fixture String appIdentifier="appIdentifier"; Double longitude=1.0; Double latitude=2.0; Integer floor=3; List<Feature> featureRooms=new ArrayList<Feature>(); featureRooms.add(featureRoom1); featureRooms.add(featureRoom2); List<List<Double>> coordinatesRoom1=new ArrayList<List<Double>>(); coordinatesRoom1.add(coordinatesRoom11); coordinatesRoom1.add(coordinatesRoom12); coordinatesRoom1.add(coordinatesRoom13); coordinatesRoom1.add(coordinatesRoom14); Double longitudeCoordinateRoom11=4.0; Double latitudeCoordinateRoom11=5.0; Double longitudeCoordinateRoom12=6.0; Double latitudeCoordinateRoom12=7.0; Double longitudeCoordinateRoom13=8.0; Double latitudeCoordinateRoom13=9.0; Double areaRoom1=70.0; boolean isContained1=false; List<List<Double>> coordinatesRoom2=new ArrayList<List<Double>>(); coordinatesRoom2.add(coordinatesRoom21); coordinatesRoom2.add(coordinatesRoom22); coordinatesRoom2.add(coordinatesRoom23); coordinatesRoom2.add(coordinatesRoom24); Double longitudeCoordinateRoom21=10.0; Double latitudeCoordinateRoom21=11.0; Double longitudeCoordinateRoom22=12.0; Double latitudeCoordinateRoom22=13.0; Double longitudeCoordinateRoom23=14.0; Double latitudeCoordinateRoom23=15.0; Double areaRoom2=80.0; boolean isContained2=true; Mockito.when(mapRepository.searchByLocation(appIdentifier, longitude, latitude, floor)).thenReturn(featureRooms); PowerMockito.whenNew(SimplePolygon2D.class).withNoArguments().thenReturn(simplePolygon2DRoom1,simplePolygon2DRoom2); Mockito.when(featureRoom1.getGeometry()).thenReturn(geometry1); Mockito.when(geometry1.getCoordinates()).thenReturn(coordinatesRoom1); Mockito.when(coordinatesRoom11.get(0)).thenReturn(longitudeCoordinateRoom11); Mockito.when(coordinatesRoom11.get(1)).thenReturn(latitudeCoordinateRoom11); PowerMockito.whenNew(Point2D.class).withArguments(longitudeCoordinateRoom11,latitudeCoordinateRoom11).thenReturn(point11); Mockito.when(coordinatesRoom12.get(0)).thenReturn(longitudeCoordinateRoom12); Mockito.when(coordinatesRoom12.get(1)).thenReturn(latitudeCoordinateRoom12); PowerMockito.whenNew(Point2D.class).withArguments(longitudeCoordinateRoom12,latitudeCoordinateRoom12).thenReturn(point12); Mockito.when(coordinatesRoom13.get(0)).thenReturn(longitudeCoordinateRoom13); Mockito.when(coordinatesRoom13.get(1)).thenReturn(latitudeCoordinateRoom13); PowerMockito.whenNew(Point2D.class).withArguments(longitudeCoordinateRoom13,latitudeCoordinateRoom13).thenReturn(point13); Mockito.when(simplePolygon2DRoom1.area()).thenReturn(areaRoom1); Mockito.when(featureRoom2.getGeometry()).thenReturn(geometry2); Mockito.when(geometry2.getCoordinates()).thenReturn(coordinatesRoom2); Mockito.when(coordinatesRoom21.get(0)).thenReturn(longitudeCoordinateRoom21); Mockito.when(coordinatesRoom21.get(1)).thenReturn(latitudeCoordinateRoom21); PowerMockito.whenNew(Point2D.class).withArguments(longitudeCoordinateRoom21,latitudeCoordinateRoom21).thenReturn(point21); Mockito.when(coordinatesRoom22.get(0)).thenReturn(longitudeCoordinateRoom22); Mockito.when(coordinatesRoom22.get(1)).thenReturn(latitudeCoordinateRoom22); PowerMockito.whenNew(Point2D.class).withArguments(longitudeCoordinateRoom22,latitudeCoordinateRoom22).thenReturn(point22); Mockito.when(coordinatesRoom23.get(0)).thenReturn(longitudeCoordinateRoom23); Mockito.when(coordinatesRoom23.get(1)).thenReturn(latitudeCoordinateRoom23); PowerMockito.whenNew(Point2D.class).withArguments(longitudeCoordinateRoom23,latitudeCoordinateRoom23).thenReturn(point23); Mockito.when(simplePolygon2DRoom2.area()).thenReturn(areaRoom2); Mockito.when(simplePolygon2DRoom1.contains(longitude,latitude)).thenReturn(isContained1); Mockito.when(simplePolygon2DRoom2.contains(longitude,latitude)).thenReturn(isContained2); //Experimentation Feature feature = searchManagerImpl.getRoomByLocation(appIdentifier, longitude, latitude, floor); //Expectation Mockito.verify(mapRepository).searchByLocation(appIdentifier,longitude,latitude,floor); Mockito.verify(featureRoom1).getGeometry(); Mockito.verify(geometry1).getCoordinates(); Mockito.verify(simplePolygon2DRoom1).addVertex(point11); Mockito.verify(simplePolygon2DRoom1).addVertex(point12); Mockito.verify(simplePolygon2DRoom1).addVertex(point13); Mockito.verify(featureRoom2).getGeometry(); Mockito.verify(geometry2).getCoordinates(); Mockito.verify(simplePolygon2DRoom2).addVertex(point21); Mockito.verify(simplePolygon2DRoom2).addVertex(point22); Mockito.verify(simplePolygon2DRoom2).addVertex(point23); Mockito.verify(simplePolygon2DRoom1).contains(longitude,latitude); Mockito.verify(simplePolygon2DRoom2).contains(longitude,latitude); assertNotNull("Feature must not be null",feature); assertEquals("Feature must be the same", featureRoom2, feature); } @Test public void getRoomByLocationWithoutOrderWithNoContainTest() throws Exception { //Fixture String appIdentifier="appIdentifier"; Double longitude=1.0; Double latitude=2.0; Integer floor=3; List<Feature> featureRooms=new ArrayList<Feature>(); featureRooms.add(featureRoom1); featureRooms.add(featureRoom2); List<List<Double>> coordinatesRoom1=new ArrayList<List<Double>>(); coordinatesRoom1.add(coordinatesRoom11); coordinatesRoom1.add(coordinatesRoom12); coordinatesRoom1.add(coordinatesRoom13); coordinatesRoom1.add(coordinatesRoom14); Double longitudeCoordinateRoom11=4.0; Double latitudeCoordinateRoom11=5.0; Double longitudeCoordinateRoom12=6.0; Double latitudeCoordinateRoom12=7.0; Double longitudeCoordinateRoom13=8.0; Double latitudeCoordinateRoom13=9.0; Double areaRoom1=90.0; boolean isContained1=true; List<List<Double>> coordinatesRoom2=new ArrayList<List<Double>>(); coordinatesRoom2.add(coordinatesRoom21); coordinatesRoom2.add(coordinatesRoom22); coordinatesRoom2.add(coordinatesRoom23); coordinatesRoom2.add(coordinatesRoom24); Double longitudeCoordinateRoom21=10.0; Double latitudeCoordinateRoom21=11.0; Double longitudeCoordinateRoom22=12.0; Double latitudeCoordinateRoom22=13.0; Double longitudeCoordinateRoom23=14.0; Double latitudeCoordinateRoom23=15.0; Double areaRoom2=80.0; boolean isContained2=false; Mockito.when(mapRepository.searchByLocation(appIdentifier, longitude, latitude, floor)).thenReturn(featureRooms); PowerMockito.whenNew(SimplePolygon2D.class).withNoArguments().thenReturn(simplePolygon2DRoom1,simplePolygon2DRoom2); Mockito.when(featureRoom1.getGeometry()).thenReturn(geometry1); Mockito.when(geometry1.getCoordinates()).thenReturn(coordinatesRoom1); Mockito.when(coordinatesRoom11.get(0)).thenReturn(longitudeCoordinateRoom11); Mockito.when(coordinatesRoom11.get(1)).thenReturn(latitudeCoordinateRoom11); PowerMockito.whenNew(Point2D.class).withArguments(longitudeCoordinateRoom11,latitudeCoordinateRoom11).thenReturn(point11); Mockito.when(coordinatesRoom12.get(0)).thenReturn(longitudeCoordinateRoom12); Mockito.when(coordinatesRoom12.get(1)).thenReturn(latitudeCoordinateRoom12); PowerMockito.whenNew(Point2D.class).withArguments(longitudeCoordinateRoom12,latitudeCoordinateRoom12).thenReturn(point12); Mockito.when(coordinatesRoom13.get(0)).thenReturn(longitudeCoordinateRoom13); Mockito.when(coordinatesRoom13.get(1)).thenReturn(latitudeCoordinateRoom13); PowerMockito.whenNew(Point2D.class).withArguments(longitudeCoordinateRoom13,latitudeCoordinateRoom13).thenReturn(point13); Mockito.when(simplePolygon2DRoom1.area()).thenReturn(areaRoom1); Mockito.when(featureRoom2.getGeometry()).thenReturn(geometry2); Mockito.when(geometry2.getCoordinates()).thenReturn(coordinatesRoom2); Mockito.when(coordinatesRoom21.get(0)).thenReturn(longitudeCoordinateRoom21); Mockito.when(coordinatesRoom21.get(1)).thenReturn(latitudeCoordinateRoom21); PowerMockito.whenNew(Point2D.class).withArguments(longitudeCoordinateRoom21,latitudeCoordinateRoom21).thenReturn(point21); Mockito.when(coordinatesRoom22.get(0)).thenReturn(longitudeCoordinateRoom22); Mockito.when(coordinatesRoom22.get(1)).thenReturn(latitudeCoordinateRoom22); PowerMockito.whenNew(Point2D.class).withArguments(longitudeCoordinateRoom22,latitudeCoordinateRoom22).thenReturn(point22); Mockito.when(coordinatesRoom23.get(0)).thenReturn(longitudeCoordinateRoom23); Mockito.when(coordinatesRoom23.get(1)).thenReturn(latitudeCoordinateRoom23); PowerMockito.whenNew(Point2D.class).withArguments(longitudeCoordinateRoom23,latitudeCoordinateRoom23).thenReturn(point23); Mockito.when(simplePolygon2DRoom2.area()).thenReturn(areaRoom2); Mockito.when(simplePolygon2DRoom1.contains(longitude,latitude)).thenReturn(isContained1); Mockito.when(simplePolygon2DRoom2.contains(longitude,latitude)).thenReturn(isContained2); //Experimentation Feature feature = searchManagerImpl.getRoomByLocation(appIdentifier, longitude, latitude, floor); //Expectation Mockito.verify(mapRepository).searchByLocation(appIdentifier,longitude,latitude,floor); Mockito.verify(featureRoom1).getGeometry(); Mockito.verify(geometry1).getCoordinates(); Mockito.verify(simplePolygon2DRoom1).addVertex(point11); Mockito.verify(simplePolygon2DRoom1).addVertex(point12); Mockito.verify(simplePolygon2DRoom1).addVertex(point13); Mockito.verify(featureRoom2).getGeometry(); Mockito.verify(geometry2).getCoordinates(); Mockito.verify(simplePolygon2DRoom2).addVertex(point21); Mockito.verify(simplePolygon2DRoom2).addVertex(point22); Mockito.verify(simplePolygon2DRoom2).addVertex(point23); Mockito.verify(simplePolygon2DRoom1).contains(longitude,latitude); Mockito.verify(simplePolygon2DRoom2).contains(longitude,latitude); assertNotNull("Feature must not be null",feature); assertEquals("Feature must be the same", featureRoom1, feature); } @Test public void getRoomByLocationWithoutOrderNegativeAreaWithNoContainTest() throws Exception { //Fixture String appIdentifier="appIdentifier"; Double longitude=1.0; Double latitude=2.0; Integer floor=3; List<Feature> featureRooms=new ArrayList<Feature>(); featureRooms.add(featureRoom1); featureRooms.add(featureRoom2); List<List<Double>> coordinatesRoom1=new ArrayList<List<Double>>(); coordinatesRoom1.add(coordinatesRoom11); coordinatesRoom1.add(coordinatesRoom12); coordinatesRoom1.add(coordinatesRoom13); coordinatesRoom1.add(coordinatesRoom14); Double longitudeCoordinateRoom11=4.0; Double latitudeCoordinateRoom11=5.0; Double longitudeCoordinateRoom12=6.0; Double latitudeCoordinateRoom12=7.0; Double longitudeCoordinateRoom13=8.0; Double latitudeCoordinateRoom13=9.0; Double areaRoom1=90.0; boolean isContained1=false; List<List<Double>> coordinatesRoom2=new ArrayList<List<Double>>(); coordinatesRoom2.add(coordinatesRoom21); coordinatesRoom2.add(coordinatesRoom22); coordinatesRoom2.add(coordinatesRoom23); coordinatesRoom2.add(coordinatesRoom24); Double longitudeCoordinateRoom21=10.0; Double latitudeCoordinateRoom21=11.0; Double longitudeCoordinateRoom22=12.0; Double latitudeCoordinateRoom22=13.0; Double longitudeCoordinateRoom23=14.0; Double latitudeCoordinateRoom23=15.0; Double areaRoom2=-95.0; boolean isContained2=true; Mockito.when(mapRepository.searchByLocation(appIdentifier, longitude, latitude, floor)).thenReturn(featureRooms); PowerMockito.whenNew(SimplePolygon2D.class).withNoArguments().thenReturn(simplePolygon2DRoom1,simplePolygon2DRoom2); Mockito.when(featureRoom1.getGeometry()).thenReturn(geometry1); Mockito.when(geometry1.getCoordinates()).thenReturn(coordinatesRoom1); Mockito.when(coordinatesRoom11.get(0)).thenReturn(longitudeCoordinateRoom11); Mockito.when(coordinatesRoom11.get(1)).thenReturn(latitudeCoordinateRoom11); PowerMockito.whenNew(Point2D.class).withArguments(longitudeCoordinateRoom11,latitudeCoordinateRoom11).thenReturn(point11); Mockito.when(coordinatesRoom12.get(0)).thenReturn(longitudeCoordinateRoom12); Mockito.when(coordinatesRoom12.get(1)).thenReturn(latitudeCoordinateRoom12); PowerMockito.whenNew(Point2D.class).withArguments(longitudeCoordinateRoom12,latitudeCoordinateRoom12).thenReturn(point12); Mockito.when(coordinatesRoom13.get(0)).thenReturn(longitudeCoordinateRoom13); Mockito.when(coordinatesRoom13.get(1)).thenReturn(latitudeCoordinateRoom13); PowerMockito.whenNew(Point2D.class).withArguments(longitudeCoordinateRoom13,latitudeCoordinateRoom13).thenReturn(point13); Mockito.when(simplePolygon2DRoom1.area()).thenReturn(areaRoom1); Mockito.when(featureRoom2.getGeometry()).thenReturn(geometry2); Mockito.when(geometry2.getCoordinates()).thenReturn(coordinatesRoom2); Mockito.when(coordinatesRoom21.get(0)).thenReturn(longitudeCoordinateRoom21); Mockito.when(coordinatesRoom21.get(1)).thenReturn(latitudeCoordinateRoom21); PowerMockito.whenNew(Point2D.class).withArguments(longitudeCoordinateRoom21,latitudeCoordinateRoom21).thenReturn(point21); Mockito.when(coordinatesRoom22.get(0)).thenReturn(longitudeCoordinateRoom22); Mockito.when(coordinatesRoom22.get(1)).thenReturn(latitudeCoordinateRoom22); PowerMockito.whenNew(Point2D.class).withArguments(longitudeCoordinateRoom22,latitudeCoordinateRoom22).thenReturn(point22); Mockito.when(coordinatesRoom23.get(0)).thenReturn(longitudeCoordinateRoom23); Mockito.when(coordinatesRoom23.get(1)).thenReturn(latitudeCoordinateRoom23); PowerMockito.whenNew(Point2D.class).withArguments(longitudeCoordinateRoom23,latitudeCoordinateRoom23).thenReturn(point23); Mockito.when(simplePolygon2DRoom2.area()).thenReturn(areaRoom2); Mockito.when(simplePolygon2DRoom2.complement()).thenReturn(simplePolygon2DRoom2Complement); Mockito.when(simplePolygon2DRoom2Complement.area()).thenReturn(Math.abs(areaRoom2)); Mockito.when(simplePolygon2DRoom1.contains(longitude,latitude)).thenReturn(isContained1); Mockito.when(simplePolygon2DRoom2Complement.contains(longitude,latitude)).thenReturn(isContained2); //Experimentation Feature feature = searchManagerImpl.getRoomByLocation(appIdentifier, longitude, latitude, floor); //Expectation Mockito.verify(mapRepository).searchByLocation(appIdentifier,longitude,latitude,floor); Mockito.verify(featureRoom1).getGeometry(); Mockito.verify(geometry1).getCoordinates(); Mockito.verify(simplePolygon2DRoom1).addVertex(point11); Mockito.verify(simplePolygon2DRoom1).addVertex(point12); Mockito.verify(simplePolygon2DRoom1).addVertex(point13); Mockito.verify(featureRoom2).getGeometry(); Mockito.verify(geometry2).getCoordinates(); Mockito.verify(simplePolygon2DRoom2).addVertex(point21); Mockito.verify(simplePolygon2DRoom2).addVertex(point22); Mockito.verify(simplePolygon2DRoom2).addVertex(point23); Mockito.verify(simplePolygon2DRoom2).complement(); Mockito.verify(simplePolygon2DRoom1).contains(longitude,latitude); Mockito.verify(simplePolygon2DRoom2Complement).contains(longitude,latitude); assertNotNull("Feature must not be null",feature); assertEquals("Feature must be the same", featureRoom2, feature); } @Test(expected=RoomNotFoundException.class) public void getRoomByLocationRoomNotFoundExceptionTest() throws Exception { //Fixture String appIdentifier="appIdentifier"; Double longitude=1.0; Double latitude=2.0; Integer floor=3; List<Feature> featureRooms=new ArrayList<Feature>(); featureRooms.add(featureRoom1); featureRooms.add(featureRoom2); List<List<Double>> coordinatesRoom1=new ArrayList<List<Double>>(); coordinatesRoom1.add(coordinatesRoom11); coordinatesRoom1.add(coordinatesRoom12); coordinatesRoom1.add(coordinatesRoom13); coordinatesRoom1.add(coordinatesRoom14); Double longitudeCoordinateRoom11=4.0; Double latitudeCoordinateRoom11=5.0; Double longitudeCoordinateRoom12=6.0; Double latitudeCoordinateRoom12=7.0; Double longitudeCoordinateRoom13=8.0; Double latitudeCoordinateRoom13=9.0; Double areaRoom1=70.0; boolean isContained1=false; List<List<Double>> coordinatesRoom2=new ArrayList<List<Double>>(); coordinatesRoom2.add(coordinatesRoom21); coordinatesRoom2.add(coordinatesRoom22); coordinatesRoom2.add(coordinatesRoom23); coordinatesRoom2.add(coordinatesRoom24); Double longitudeCoordinateRoom21=10.0; Double latitudeCoordinateRoom21=11.0; Double longitudeCoordinateRoom22=12.0; Double latitudeCoordinateRoom22=13.0; Double longitudeCoordinateRoom23=14.0; Double latitudeCoordinateRoom23=15.0; Double areaRoom2=-60.0; boolean isContained2=false; Mockito.when(mapRepository.searchByLocation(appIdentifier, longitude, latitude, floor)).thenReturn(featureRooms); PowerMockito.whenNew(SimplePolygon2D.class).withNoArguments().thenReturn(simplePolygon2DRoom1,simplePolygon2DRoom2); Mockito.when(featureRoom1.getGeometry()).thenReturn(geometry1); Mockito.when(geometry1.getCoordinates()).thenReturn(coordinatesRoom1); Mockito.when(coordinatesRoom11.get(0)).thenReturn(longitudeCoordinateRoom11); Mockito.when(coordinatesRoom11.get(1)).thenReturn(latitudeCoordinateRoom11); PowerMockito.whenNew(Point2D.class).withArguments(longitudeCoordinateRoom11,latitudeCoordinateRoom11).thenReturn(point11); Mockito.when(coordinatesRoom12.get(0)).thenReturn(longitudeCoordinateRoom12); Mockito.when(coordinatesRoom12.get(1)).thenReturn(latitudeCoordinateRoom12); PowerMockito.whenNew(Point2D.class).withArguments(longitudeCoordinateRoom12,latitudeCoordinateRoom12).thenReturn(point12); Mockito.when(coordinatesRoom13.get(0)).thenReturn(longitudeCoordinateRoom13); Mockito.when(coordinatesRoom13.get(1)).thenReturn(latitudeCoordinateRoom13); PowerMockito.whenNew(Point2D.class).withArguments(longitudeCoordinateRoom13,latitudeCoordinateRoom13).thenReturn(point13); Mockito.when(simplePolygon2DRoom1.area()).thenReturn(areaRoom1); Mockito.when(featureRoom2.getGeometry()).thenReturn(geometry2); Mockito.when(geometry2.getCoordinates()).thenReturn(coordinatesRoom2); Mockito.when(coordinatesRoom21.get(0)).thenReturn(longitudeCoordinateRoom21); Mockito.when(coordinatesRoom21.get(1)).thenReturn(latitudeCoordinateRoom21); PowerMockito.whenNew(Point2D.class).withArguments(longitudeCoordinateRoom21,latitudeCoordinateRoom21).thenReturn(point21); Mockito.when(coordinatesRoom22.get(0)).thenReturn(longitudeCoordinateRoom22); Mockito.when(coordinatesRoom22.get(1)).thenReturn(latitudeCoordinateRoom22); PowerMockito.whenNew(Point2D.class).withArguments(longitudeCoordinateRoom22,latitudeCoordinateRoom22).thenReturn(point22); Mockito.when(coordinatesRoom23.get(0)).thenReturn(longitudeCoordinateRoom23); Mockito.when(coordinatesRoom23.get(1)).thenReturn(latitudeCoordinateRoom23); PowerMockito.whenNew(Point2D.class).withArguments(longitudeCoordinateRoom23,latitudeCoordinateRoom23).thenReturn(point23); Mockito.when(simplePolygon2DRoom2.area()).thenReturn(areaRoom2); Mockito.when(simplePolygon2DRoom2.complement()).thenReturn(simplePolygon2DRoom2Complement); Mockito.when(simplePolygon2DRoom2Complement.area()).thenReturn(Math.abs(areaRoom2)); Mockito.when(simplePolygon2DRoom1.contains(longitude,latitude)).thenReturn(isContained1); Mockito.when(simplePolygon2DRoom2Complement.contains(longitude,latitude)).thenReturn(isContained2); //Experimentation searchManagerImpl.getRoomByLocation(appIdentifier, longitude, latitude, floor); //Expectation Mockito.verify(mapRepository).searchByLocation(appIdentifier,longitude,latitude,floor); Mockito.verify(featureRoom1).getGeometry(); Mockito.verify(geometry1).getCoordinates(); Mockito.verify(simplePolygon2DRoom1).addVertex(point11); Mockito.verify(simplePolygon2DRoom1).addVertex(point12); Mockito.verify(simplePolygon2DRoom1).addVertex(point13); Mockito.verify(featureRoom2).getGeometry(); Mockito.verify(geometry2).getCoordinates(); Mockito.verify(simplePolygon2DRoom2).addVertex(point21); Mockito.verify(simplePolygon2DRoom2).addVertex(point22); Mockito.verify(simplePolygon2DRoom2).addVertex(point23); Mockito.verify(simplePolygon2DRoom1).contains(longitude,latitude); Mockito.verify(simplePolygon2DRoom2Complement).contains(longitude,latitude); } }