package it.unito.geosummly.tools; import java.util.ArrayList; import it.unito.geosummly.io.templates.FeatureCollectionTemplate; import it.unito.geosummly.io.templates.FeaturePropertiesTemplate; import it.unito.geosummly.io.templates.FeatureTemplate; import it.unito.geosummly.io.templates.GeometryTemplate; import it.unito.geosummly.io.templates.VenueTemplate; import junit.framework.TestCase; public class OptimizationToolsTest extends TestCase { public void testGetMultiPoints() { ArrayList<ArrayList<ArrayList<Double>>> expected = new ArrayList<ArrayList<ArrayList<Double>>>(); //1st cluster ArrayList<ArrayList<Double>> cluster_1 = new ArrayList<ArrayList<Double>>(); ArrayList<Double> rec_11 = new ArrayList<Double>(); rec_11.add(10.0); rec_11.add(11.0); ArrayList<Double> rec_12 = new ArrayList<Double>(); rec_12.add(12.0); rec_12.add(13.0); cluster_1.add(rec_11); cluster_1.add(rec_12); //2nd cluster ArrayList<ArrayList<Double>> cluster_2 = new ArrayList<ArrayList<Double>>(); ArrayList<Double> rec_21 = new ArrayList<Double>(); rec_21.add(14.0); rec_21.add(15.0); ArrayList<Double> rec_22 = new ArrayList<Double>(); rec_22.add(16.0); rec_22.add(17.0); ArrayList<Double> rec_23 = new ArrayList<Double>(); rec_23.add(18.0); rec_23.add(19.0); cluster_2.add(rec_21); cluster_2.add(rec_22); cluster_2.add(rec_23); expected.add(cluster_1); expected.add(cluster_2); //1st feature template ArrayList<ArrayList<Double>> coordinates_1 = new ArrayList<ArrayList<Double>>(); ArrayList<Double> c_11 = new ArrayList<Double>(); c_11.add(10.0); c_11.add(11.0); ArrayList<Double> c_12 = new ArrayList<Double>(); c_12.add(12.0); c_12.add(13.0); coordinates_1.add(c_11); coordinates_1.add(c_12); GeometryTemplate g_1 = new GeometryTemplate(); g_1.setCoordinates(coordinates_1); FeatureTemplate ft_1 = new FeatureTemplate(); ft_1.setGeometry(g_1); //2nd feature template ArrayList<ArrayList<Double>> coordinates_2 = new ArrayList<ArrayList<Double>>(); ArrayList<Double> c_21 = new ArrayList<Double>(); c_21.add(14.0); c_21.add(15.0); ArrayList<Double> c_22 = new ArrayList<Double>(); c_22.add(16.0); c_22.add(17.0); ArrayList<Double> c_23 = new ArrayList<Double>(); c_23.add(18.0); c_23.add(19.0); coordinates_2.add(c_21); coordinates_2.add(c_22); coordinates_2.add(c_23); GeometryTemplate g_2 = new GeometryTemplate(); g_2.setCoordinates(coordinates_2); FeatureTemplate ft_2 = new FeatureTemplate(); ft_2.setGeometry(g_2); //List of FeatureTemplate ArrayList<FeatureTemplate> features = new ArrayList<FeatureTemplate>(); features.add(ft_1); features.add(ft_2); FeatureCollectionTemplate fct = new FeatureCollectionTemplate(); fct.setFeatures(features); OptimizationTools tools = new OptimizationTools(); ArrayList<ArrayList<ArrayList<Double>>> actual = tools.getMultiPoints(fct); assertEquals(expected, actual); } public void testGetObjectsOfClusters() { ArrayList<ArrayList<ArrayList<Double>>> expected = new ArrayList<ArrayList<ArrayList<Double>>>(); ArrayList<ArrayList<Double>> cl_1 = new ArrayList<ArrayList<Double>>(); ArrayList<Double> cell_11 = new ArrayList<Double>(); cell_11.add(45.0); cell_11.add(7.0); ArrayList<Double> cell_12 = new ArrayList<Double>(); cell_12.add(55.0); cell_12.add(17.0); cl_1.add(cell_11); cl_1.add(cell_12); ArrayList<ArrayList<Double>> cl_2 = new ArrayList<ArrayList<Double>>(); ArrayList<Double> cell_21 = new ArrayList<Double>(); cell_21.add(65.0); cell_21.add(27.0); ArrayList<Double> cell_22 = new ArrayList<Double>(); cell_22.add(55.0); cell_22.add(17.0); cl_2.add(cell_21); cl_2.add(cell_22); expected.add(cl_1); expected.add(cl_2); ArrayList<VenueTemplate> cluster_1 = new ArrayList<VenueTemplate>(); VenueTemplate vt_11 = new VenueTemplate(123456, 0, "venue_11", 45.11, 7.11, 45.0, 7.0, "cat_1"); VenueTemplate vt_12 = new VenueTemplate(123456, 5, "venue_12", 45.12, 7.12, 45.0, 7.0, "cat_2"); VenueTemplate vt_13 = new VenueTemplate(123456, 10, "venue_13", 55.13, 17.13, 55.0, 17.0, "cat_1"); cluster_1.add(vt_11); cluster_1.add(vt_12); cluster_1.add(vt_13); ArrayList<VenueTemplate> cluster_2 = new ArrayList<VenueTemplate>(); VenueTemplate vt_21 = new VenueTemplate(123456, 0, "venue_21", 65.21, 27.21, 65.0, 27.0, "cat_2"); VenueTemplate vt_22 = new VenueTemplate(123456, 5, "venue_22", 65.22, 27.22, 65.0, 27.0, "cat_2"); VenueTemplate vt_23 = new VenueTemplate(123456, 15, "venue_23", 55.13, 17.13, 55.0, 17.0, "cat_2"); cluster_2.add(vt_21); cluster_2.add(vt_22); cluster_2.add(vt_23); ArrayList<ArrayList<VenueTemplate>> venues = new ArrayList<ArrayList<VenueTemplate>>(); venues.add(cluster_1); venues.add(cluster_2); OptimizationTools tools = new OptimizationTools(); ArrayList<ArrayList<ArrayList<Double>>> actual = tools.getObjectsOfClusters(venues); assertEquals(expected, actual); } public void testIsPresent() { ArrayList<ArrayList<Double>> cells = new ArrayList<ArrayList<Double>>(); //It will be left empty for the 3rd test ArrayList<ArrayList<Double>> cells_1 = new ArrayList<ArrayList<Double>>(); ArrayList<Double> c1 = new ArrayList<Double>(); c1.add(1.0); c1.add(2.0); ArrayList<Double> c2 = new ArrayList<Double>(); c2.add(3.0); c2.add(4.0); ArrayList<Double> c3 = new ArrayList<Double>(); c3.add(4.0); c3.add(5.0); cells.add(c1); cells.add(c2); cells.add(c3); ArrayList<Double> c4 = new ArrayList<Double>(); c4.add(4.0); c4.add(5.0); ArrayList<Double> c5 = new ArrayList<Double>(); c5.add(5.0); c5.add(6.0); OptimizationTools tools = new OptimizationTools(); boolean actual_1 = tools.isPresent(cells, c4); boolean actual_2 = tools.isPresent(cells, c5); boolean actual_3 = tools.isPresent(cells_1, c4); assertTrue(actual_1); assertFalse(actual_2); assertFalse(actual_3); } public void testGetVenuesOfClusters() { ArrayList<ArrayList<VenueTemplate>> expected = new ArrayList<ArrayList<VenueTemplate>>(); ArrayList<VenueTemplate> cluster_1 = new ArrayList<VenueTemplate>(); VenueTemplate cl_11 = new VenueTemplate(123456, 0, "venue_11", 45.11, 7.11, 45.0, 7.0, "cat_1"); VenueTemplate cl_12 = new VenueTemplate(123456, 5, "venue_12", 45.12, 7.12, 45.0, 7.0, "cat_2"); VenueTemplate cl_13 = new VenueTemplate(123456, 10, "venue_13", 55.13, 17.13, 55.0, 17.0, "cat_1"); cluster_1.add(cl_11); cluster_1.add(cl_12); cluster_1.add(cl_13); ArrayList<VenueTemplate> cluster_2 = new ArrayList<VenueTemplate>(); VenueTemplate cl_21 = new VenueTemplate(123456, 0, "venue_21", 65.21, 27.21, 65.0, 27.0, "cat_2"); VenueTemplate cl_22 = new VenueTemplate(123456, 5, "venue_22", 65.22, 27.22, 65.0, 27.0, "cat_2"); VenueTemplate cl_23 = new VenueTemplate(123456, 15, "venue_23", 55.13, 17.13, 55.0, 17.0, "cat_2"); cluster_2.add(cl_21); cluster_2.add(cl_22); cluster_2.add(cl_23); expected.add(cluster_1); expected.add(cluster_2); //1st feature FeatureTemplate ft_1 = new FeatureTemplate(); FeaturePropertiesTemplate fpt_1 = new FeaturePropertiesTemplate(); ArrayList<VenueTemplate> venues_1 = new ArrayList<VenueTemplate>(); VenueTemplate vt_11 = new VenueTemplate(123456, 0, "venue_11", 45.11, 7.11, 45.0, 7.0, "cat_1"); VenueTemplate vt_12 = new VenueTemplate(123456, 5, "venue_12", 45.12, 7.12, 45.0, 7.0, "cat_2"); VenueTemplate vt_13 = new VenueTemplate(123456, 10, "venue_13", 55.13, 17.13, 55.0, 17.0, "cat_1"); venues_1.add(vt_11); venues_1.add(vt_12); venues_1.add(vt_13); fpt_1.setVenues(venues_1); ft_1.setProperties(fpt_1); //2nd feature FeatureTemplate ft_2 = new FeatureTemplate(); FeaturePropertiesTemplate fpt_2 = new FeaturePropertiesTemplate(); ArrayList<VenueTemplate> venues_2 = new ArrayList<VenueTemplate>(); VenueTemplate vt_21 = new VenueTemplate(123456, 0, "venue_21", 65.21, 27.21, 65.0, 27.0, "cat_2"); VenueTemplate vt_22 = new VenueTemplate(123456, 5, "venue_22", 65.22, 27.22, 65.0, 27.0, "cat_2"); VenueTemplate vt_23 = new VenueTemplate(123456, 15, "venue_23", 55.13, 17.13, 55.0, 17.0, "cat_2"); venues_2.add(vt_21); venues_2.add(vt_22); venues_2.add(vt_23); fpt_2.setVenues(venues_2); ft_2.setProperties(fpt_2); //Get the feature collection ArrayList<FeatureTemplate> features = new ArrayList<FeatureTemplate>(); features.add(ft_1); features.add(ft_2); FeatureCollectionTemplate fct = new FeatureCollectionTemplate(); fct.setFeatures(features); OptimizationTools tools = new OptimizationTools(); ArrayList<ArrayList<VenueTemplate>> actual = tools.getVenuesOfClusters(fct); assertEquals(expected.size(), actual.size()); for(int i=0; i<expected.size(); i++) { for(int j=0; j<expected.get(i).size(); j++) { assertEquals(expected.get(i).get(j).getBeenHere(), actual.get(i).get(j).getBeenHere()); assertEquals(expected.get(i).get(j).getCategory(), actual.get(i).get(j).getCategory()); assertEquals(expected.get(i).get(j).getCentroidLatitude(), actual.get(i).get(j).getCentroidLatitude()); assertEquals(expected.get(i).get(j).getCentroidLongitude(), actual.get(i).get(j).getCentroidLongitude()); assertEquals(expected.get(i).get(j).getId(), actual.get(i).get(j).getId()); assertEquals(expected.get(i).get(j).getTimestamp(), actual.get(i).get(j).getTimestamp()); assertEquals(expected.get(i).get(j).getVenueLatitude(), actual.get(i).get(j).getVenueLatitude()); assertEquals(expected.get(i).get(j).getVenueLongitude(), actual.get(i).get(j).getVenueLongitude()); } } } public void testGetLabelsOfClusters() { ArrayList<String[]> expected = new ArrayList<String[]>(); String[] c1 = {"cat_1", "cat_2"}; String[] c2 = {"cat_3"}; expected.add(c1); expected.add(c2); FeatureCollectionTemplate fct = new FeatureCollectionTemplate(); FeatureTemplate ft_1 = new FeatureTemplate(); FeaturePropertiesTemplate fpt_1 = new FeaturePropertiesTemplate(); fpt_1.setName(" cat_1,cat_2 "); ft_1.setProperties(fpt_1); FeatureTemplate ft_2 = new FeatureTemplate(); FeaturePropertiesTemplate fpt_2 = new FeaturePropertiesTemplate(); fpt_2.setName("cat_3"); ft_2.setProperties(fpt_2); ArrayList<FeatureTemplate> ft_array = new ArrayList<FeatureTemplate>(); ft_array.add(ft_1); ft_array.add(ft_2); fct.setFeatures(ft_array); OptimizationTools tools = new OptimizationTools(); ArrayList<String[]> actual = tools.getLabelsOfClusters(fct); assertEquals(expected.size(), actual.size()); for(int i=0; i<expected.size(); i++) for(int j=0; j<expected.get(i).length; j++) assertEquals(expected.get(i)[j], actual.get(i)[j]); } public void testGetIdsOfClusters() { ArrayList<Integer> expected = new ArrayList<Integer>(); expected.add(1); expected.add(5); FeatureCollectionTemplate fct = new FeatureCollectionTemplate(); FeatureTemplate ft_1 = new FeatureTemplate(); FeaturePropertiesTemplate fpt_1 = new FeaturePropertiesTemplate(); fpt_1.setClusterId(1); ft_1.setProperties(fpt_1); FeatureTemplate ft_2 = new FeatureTemplate(); FeaturePropertiesTemplate fpt_2 = new FeaturePropertiesTemplate(); fpt_2.setClusterId(5); ft_2.setProperties(fpt_2); ArrayList<FeatureTemplate> ft_array = new ArrayList<FeatureTemplate>(); ft_array.add(ft_1); ft_array.add(ft_2); fct.setFeatures(ft_array); OptimizationTools tools = new OptimizationTools(); ArrayList<Integer> actual = tools.getIdsOfClusters(fct); assertEquals(expected, actual); } public void testGetSpatialCoverage() { } }