package it.unito.geosummly.tools; import it.unito.geosummly.BoundingBox; import java.util.ArrayList; import junit.framework.TestCase; public class EvaluationToolsTest extends TestCase { public void testBuildFrequencyRandomMatrix() { ArrayList<ArrayList<Double>> expected = new ArrayList<ArrayList<Double>>(); ArrayList<Double> rec_1 = new ArrayList<Double>(); rec_1.add(1.0); rec_1.add(2.0); rec_1.add(3.0); ArrayList<Double> rec_2 = new ArrayList<Double>(); rec_2.add(4.0); rec_2.add(5.0); rec_2.add(6.0); ArrayList<Double> rec_3 = new ArrayList<Double>(); rec_3.add(7.0); rec_3.add(8.0); rec_3.add(9.0); expected.add(rec_1); expected.add(rec_2); expected.add(rec_3); int size = 3; ArrayList<Double> minArray = new ArrayList<Double>(); minArray.add(1.0); minArray.add(2.0); minArray.add(3.0); ArrayList<Double> maxArray = new ArrayList<Double>(); maxArray.add(10.0); maxArray.add(11.0); maxArray.add(12.0); EvaluationTools tools = new EvaluationTools(); ArrayList<ArrayList<Double>> actual = tools.buildFrequencyRandomMatrix (size, minArray, maxArray); assertNotNull(actual); assertEquals(expected.size(), actual.size()); for(int i=0; i<expected.size(); i++) { assertEquals(expected.get(i).size(), actual.get(i).size()); for(int j=0; j<expected.get(i).size(); j++) { assertTrue(expected.get(i).get(j) <= maxArray.get(j)); assertTrue(expected.get(i).get(j) >= minArray.get(j)); assertTrue(actual.get(i).get(j) <= maxArray.get(j)); assertTrue(actual.get(i).get(j) >= minArray.get(j)); } } } public void testCreateFolds() { ArrayList<ArrayList<Double>> matrix = new ArrayList<ArrayList<Double>>(); ArrayList<Double> r1 = new ArrayList<Double>(); r1.add(0.11); r1.add(0.12); r1.add(0.13); ArrayList<Double> r2 = new ArrayList<Double>(); r2.add(0.21); r2.add(0.22); r2.add(0.23); ArrayList<Double> r3 = new ArrayList<Double>(); r3.add(0.31); r3.add(0.31); r3.add(0.33); ArrayList<Double> r4 = new ArrayList<Double>(); r4.add(0.41); r4.add(0.42); r4.add(0.43); ArrayList<Double> r5 = new ArrayList<Double>(); r5.add(0.51); r5.add(0.52); r5.add(0.53); ArrayList<Double> r6 = new ArrayList<Double>(); r6.add(0.61); r6.add(0.62); r6.add(0.63); ArrayList<Double> r7 = new ArrayList<Double>(); r7.add(0.71); r7.add(0.72); r7.add(0.73); matrix.add(r1); matrix.add(r2); matrix.add(r3); matrix.add(r4); matrix.add(r5); matrix.add(r6); matrix.add(r7); EvaluationTools tools = new EvaluationTools(); ArrayList<ArrayList<ArrayList<Double>>> actual = tools.createFolds(matrix, 3); assertTrue(actual.size() == 3); for(ArrayList<ArrayList<Double>> array: actual) { assertTrue(array.size() == 2); } assertNotSame(actual.get(0), actual.get(1)); assertNotSame(actual.get(0), actual.get(2)); assertNotSame(actual.get(1), actual.get(2)); } /*public void testRemoveVenueCoordinates() { ArrayList<ArrayList<ArrayList<Double>>> expected = new ArrayList<ArrayList<ArrayList<Double>>>(); ArrayList<ArrayList<Double>> genericMatrix = new ArrayList<ArrayList<Double>>(); ArrayList<Double> genericRecord = new ArrayList<Double>(); genericRecord.add(3.0); genericRecord.add(4.0); genericRecord.add(5.0); genericRecord.add(6.0); genericMatrix.add(genericRecord); genericMatrix.add(genericRecord); genericMatrix.add(genericRecord); for(int i=0; i<3; i++) expected.add(genericMatrix); EvaluationTools tools = new EvaluationTools(); ArrayList<ArrayList<ArrayList<Double>>> folds = new ArrayList<ArrayList<ArrayList<Double>>>(); ArrayList<ArrayList<Double>> foldsMatrix = new ArrayList<ArrayList<Double>>(); ArrayList<Double> foldsRecord = new ArrayList<Double>(); foldsRecord.add(1.0); foldsRecord.add(2.0); foldsRecord.add(3.0); foldsRecord.add(4.0); foldsRecord.add(5.0); foldsRecord.add(6.0); foldsMatrix.add(foldsRecord); foldsMatrix.add(foldsRecord); foldsMatrix.add(foldsRecord); for(int i=0; i<3; i++) folds.add(foldsMatrix); ArrayList<ArrayList<ArrayList<Double>>> actual = tools.removeVenueCoordinates(folds); assertEquals(expected, actual); }*/ /*public void testGetFocalPoints() { ArrayList<BoundingBox> expected = new ArrayList<BoundingBox>(); BoundingBox b1 = new BoundingBox(); b1.setCenterLat(new BigDecimal(3.0)); b1.setCenterLng(new BigDecimal(4.0)); BoundingBox b2 = new BoundingBox(); b2.setCenterLat(new BigDecimal(9.0)); b2.setCenterLng(new BigDecimal(10.0)); BoundingBox b3 = new BoundingBox(); b3.setCenterLat(new BigDecimal(15.0)); b3.setCenterLng(new BigDecimal(16.0)); expected.add(b1); expected.add(b2); expected.add(b3); ArrayList<ArrayList<String>> matrix = new ArrayList<ArrayList<String>>(); ArrayList<String> rec_1 = new ArrayList<String>(); rec_1.add("1000"); rec_1.add("100"); rec_1.add("abc"); rec_1.add("1.0"); rec_1.add("2.0"); rec_1.add("3.0"); rec_1.add("4.0"); rec_1.add("5.0"); rec_1.add("6.0"); ArrayList<String> rec_2 = new ArrayList<String>(); rec_2.add("1000"); rec_2.add("200"); rec_2.add("cde"); rec_2.add("1.0"); rec_2.add("2.0"); rec_2.add("3.0"); rec_2.add("4.0"); rec_2.add("50.0"); rec_2.add("60.0"); ArrayList<String> rec_3 = new ArrayList<String>(); rec_3.add("1000"); rec_3.add("300"); rec_3.add("efg"); rec_3.add("7.0"); rec_3.add("8.0"); rec_3.add("9.0"); rec_3.add("10.0"); rec_3.add("11.0"); rec_3.add("12.0"); ArrayList<String> rec_4 = new ArrayList<String>(); rec_4.add("1000"); rec_4.add("400"); rec_4.add("ghi"); rec_4.add("13.0"); rec_4.add("14.0"); rec_4.add("15.0"); rec_4.add("16.0"); rec_4.add("17.0"); rec_4.add("18.0"); matrix.add(rec_1); matrix.add(rec_2); matrix.add(rec_3); matrix.add(rec_4); EvaluationTools tools = new EvaluationTools(); ArrayList<BoundingBox> actual = tools.getFocalPoints(matrix); assertEquals(expected, actual); }*/ public void testGetDistance() { double expected = 1.112; EvaluationTools tools = new EvaluationTools(); double actual = tools.getDistance(45.51, 7.5, 45.52, 7.5); assertEquals(expected, actual); } /*public void testGetAreasFromFocalPoints() { ArrayList<Double> expected = new ArrayList<Double>(); expected.add(1.236544); expected.add(1.236544); expected.add(1.236544); ArrayList<BoundingBox> bbox = new ArrayList<BoundingBox>(); BoundingBox b1 = new BoundingBox(); b1.setCenterLat(new BigDecimal(45.51)); b1.setCenterLng(new BigDecimal(7.5)); BoundingBox b2 = new BoundingBox(); b2.setCenterLat(new BigDecimal(45.52)); b2.setCenterLng(new BigDecimal(7.5)); BoundingBox b3 = new BoundingBox(); b3.setCenterLat(new BigDecimal(45.53)); b3.setCenterLng(new BigDecimal(7.5)); bbox.add(b1); bbox.add(b2); bbox.add(b3); EvaluationTools tools = new EvaluationTools(); ArrayList<Double> actual = tools.getAreasFromFocalPoints(bbox, 3); for(int i=0; i<expected.size(); i++) assertEquals(expected.get(i), actual.get(i), 0.001); }*/ public void testBuildListZero() { int size = 5; ArrayList<Double> expected = new ArrayList<Double>(); for(int i=0; i<size; i++) expected.add(0.0); EvaluationTools tools = new EvaluationTools(); ArrayList<Double> actual = tools.buildListZero(size); assertEquals(expected, actual); } public void testGroupSinglesToCell() { ArrayList<Double> expected = new ArrayList<Double>(); expected.add(0.1); expected.add(0.2); expected.add(0.0); expected.add(2.0); expected.add(1.0); BoundingBox bbox = new BoundingBox(); bbox.setCenterLat(new Double(0.1)); bbox.setCenterLng(new Double(0.2)); ArrayList<ArrayList<Double>> matrix = new ArrayList<ArrayList<Double>>(); ArrayList<Double> rec_1 = new ArrayList<Double>(); rec_1.add(0.3); rec_1.add(0.4); rec_1.add(0.0); rec_1.add(1.0); rec_1.add(0.0); ArrayList<Double> rec_2 = new ArrayList<Double>(); rec_2.add(0.1); rec_2.add(0.2); rec_2.add(0.0); rec_2.add(1.0); rec_2.add(0.0); ArrayList<Double> rec_3 = new ArrayList<Double>(); rec_3.add(0.1); rec_3.add(0.2); rec_3.add(0.0); rec_3.add(0.0); rec_3.add(1.0); ArrayList<Double> rec_4 = new ArrayList<Double>(); rec_4.add(0.3); rec_4.add(0.4); rec_4.add(1.0); rec_4.add(0.0); rec_4.add(0.0); ArrayList<Double> rec_5 = new ArrayList<Double>(); rec_5.add(0.5); rec_5.add(0.6); rec_5.add(0.0); rec_5.add(0.0); rec_5.add(1.0); ArrayList<Double> rec_6 = new ArrayList<Double>(); rec_6.add(0.1); rec_6.add(0.2); rec_6.add(0.0); rec_6.add(1.0); rec_6.add(0.0); matrix.add(rec_1); matrix.add(rec_2); matrix.add(rec_3); matrix.add(rec_4); matrix.add(rec_5); matrix.add(rec_6); EvaluationTools tools = new EvaluationTools(); ArrayList<Double> actual = tools.groupSinglesToCell(bbox, matrix); assertEquals(expected, actual); } public void testGroupFolds() { ArrayList<ArrayList<ArrayList<Double>>> expected = new ArrayList<ArrayList<ArrayList<Double>>>(); ArrayList<ArrayList<Double>> m = new ArrayList<ArrayList<Double>>(); ArrayList<Double> m_1 = new ArrayList<Double>(); m_1.add(0.1); m_1.add(0.2); m_1.add(0.0); m_1.add(2.0); m_1.add(1.0); ArrayList<Double> m_2 = new ArrayList<Double>(); m_2.add(0.3); m_2.add(0.4); m_2.add(1.0); m_2.add(0.0); m_2.add(2.0); m.add(m_1); m.add(m_2); expected.add(m); expected.add(m); ArrayList<BoundingBox> bbox = new ArrayList<BoundingBox>(); BoundingBox b_1 = new BoundingBox(); b_1.setCenterLat(new Double(0.1)); b_1.setCenterLng(new Double(0.2)); BoundingBox b_2 = new BoundingBox(); b_2.setCenterLat(new Double(0.3)); b_2.setCenterLng(new Double(0.4)); bbox.add(b_1); bbox.add(b_2); ArrayList<ArrayList<ArrayList<Double>>> folds = new ArrayList<ArrayList<ArrayList<Double>>>(); ArrayList<ArrayList<Double>> matrix = new ArrayList<ArrayList<Double>>(); ArrayList<Double> rec_1 = new ArrayList<Double>(); rec_1.add(0.3); rec_1.add(0.4); rec_1.add(1.0); rec_1.add(0.0); rec_1.add(0.0); ArrayList<Double> rec_2 = new ArrayList<Double>(); rec_2.add(0.1); rec_2.add(0.2); rec_2.add(0.0); rec_2.add(1.0); rec_2.add(0.0); ArrayList<Double> rec_3 = new ArrayList<Double>(); rec_3.add(0.1); rec_3.add(0.2); rec_3.add(0.0); rec_3.add(0.0); rec_3.add(1.0); ArrayList<Double> rec_4 = new ArrayList<Double>(); rec_4.add(0.3); rec_4.add(0.4); rec_4.add(0.0); rec_4.add(0.0); rec_4.add(1.0); ArrayList<Double> rec_5 = new ArrayList<Double>(); rec_5.add(0.3); rec_5.add(0.4); rec_5.add(0.0); rec_5.add(0.0); rec_5.add(1.0); ArrayList<Double> rec_6 = new ArrayList<Double>(); rec_6.add(0.1); rec_6.add(0.2); rec_6.add(0.0); rec_6.add(1.0); rec_6.add(0.0); matrix.add(rec_1); matrix.add(rec_2); matrix.add(rec_3); matrix.add(rec_4); matrix.add(rec_5); matrix.add(rec_6); folds.add(matrix); folds.add(matrix); EvaluationTools tools = new EvaluationTools(); ArrayList<ArrayList<ArrayList<Double>>> actual = tools.groupFolds(bbox, folds); assertEquals(expected, actual); } public void testComputeJaccard() { } public void testGetSSERatio() { double expected = 50.0; ArrayList<Double> values = new ArrayList<Double>(); values.add(0.6); values.add(0.9); values.add(0.4); values.add(0.9); EvaluationTools tools = new EvaluationTools(); double actual = tools.getSSERatio(values, 0.2); assertEquals(expected, actual); } public void testChangeFeaturesLabel() { ArrayList<String> expected = new ArrayList<String>(); expected.add("cat_1"); expected.add("cat_2"); expected.add("cat_3"); expected.add("cat_4"); ArrayList<String> features = new ArrayList<String>(); features.add("f(cat_1)"); features.add("f(cat_2)"); features.add("f(cat_3)"); features.add("f(cat_4)"); EvaluationTools tools = new EvaluationTools(); ArrayList<String> actual = tools.changeFeaturesLabel("f", "", features); assertEquals(expected, actual); } public void getFeaturesLabelNoTimestamp() { ArrayList<String> expected = new ArrayList<String>(); expected.add("Latitude"); expected.add("Longitude"); expected.add("f(cat_1)"); expected.add("f(cat_2)"); expected.add("f(cat_3)"); ArrayList<String> expectedNoCoord = new ArrayList<String>(); expectedNoCoord.add("f(cat_1)"); expectedNoCoord.add("f(cat_2)"); expectedNoCoord.add("f(cat_3)"); ArrayList<String> features = new ArrayList<String>(); features.add("Latitude"); features.add("Longitude"); features.add("cat_1"); features.add("cat_2"); features.add("cat_3"); ArrayList<String> featuresNoCoord = new ArrayList<String>(); featuresNoCoord.add("cat_1"); featuresNoCoord.add("cat_2"); featuresNoCoord.add("cat_3"); CoordinatesNormalizationType typeYes = CoordinatesNormalizationType.NORM; CoordinatesNormalizationType typeNo = CoordinatesNormalizationType.MISSING; EvaluationTools tools = new EvaluationTools(); ArrayList<String> actual = tools.getFeaturesLabelNoTimestamp(typeYes, "f", features); ArrayList<String> actualNoCoord = tools.getFeaturesLabelNoTimestamp(typeNo, "f", featuresNoCoord); assertEquals(expected, actual); assertEquals(expectedNoCoord, actualNoCoord); } public void testBuildNorm() { ArrayList<ArrayList<Double>> norm = new ArrayList<ArrayList<Double>>(); ArrayList<Double> rec_1 = new ArrayList<Double>(); rec_1.add(0.1); rec_1.add(0.2); rec_1.add(0.3); rec_1.add(0.4); rec_1.add(0.5); ArrayList<Double> rec_2 = new ArrayList<Double>(); rec_2.add(0.6); rec_2.add(0.7); rec_2.add(0.8); rec_2.add(0.9); rec_2.add(0.09); norm.add(rec_1); norm.add(rec_2); EvaluationTools tools = new EvaluationTools(); ArrayList<ArrayList<Double>> actual = tools.buildNorm(norm); assertEquals(2, actual.size()); for(ArrayList<Double> r: actual) { assertEquals(5, r.size()); for(int i=0; i<r.size(); i++) { assertTrue(r.get(i)<=1 && r.get(i)>=0); } } assertEquals(0.1, norm.get(0).get(0)); assertEquals(0.2, norm.get(0).get(1)); assertEquals(0.6, norm.get(1).get(0)); assertEquals(0.7, norm.get(1).get(1)); } public void testBuildNormalizedUniformely() { ArrayList<ArrayList<Double>> norm = new ArrayList<ArrayList<Double>>(); ArrayList<Double> rec_1 = new ArrayList<Double>(); rec_1.add(0.1); rec_1.add(0.2); rec_1.add(0.3); rec_1.add(0.4); rec_1.add(0.5); ArrayList<Double> rec_2 = new ArrayList<Double>(); rec_2.add(0.6); rec_2.add(0.7); rec_2.add(0.8); rec_2.add(0.9); rec_2.add(0.09); norm.add(rec_1); norm.add(rec_2); EvaluationTools tools = new EvaluationTools(); ArrayList<ArrayList<Double>> actual = tools.buildNormalizedUniformly(norm); assertEquals(2, actual.size()); for(ArrayList<Double> r: actual) { assertEquals(5, r.size()); for(int i=0; i<r.size(); i++) { assertTrue(r.get(i)<=1 && r.get(i)>=0); } } } public void testGetFeaturesLabel() { ArrayList<String> expected=new ArrayList<String>(); expected.add("Latitude"); expected.add("Longitude"); expected.add("d(A)"); expected.add("d(B)"); expected.add("d(C)"); ArrayList<String> a = new ArrayList<String>(); a.add("Latitude"); a.add("Longitude"); a.add("A"); a.add("B"); a.add("C"); EvaluationTools tools = new EvaluationTools(); ArrayList<String> actual = tools.getFeaturesLabel("d", a); assertEquals(expected, actual); } }