public void testQuantileList() throws Exception { FilterFactory factory = CommonFactoryFinder.getFilterFactory(null); Expression expr = factory.property(ft.getDescriptor(0).getLocalName()); QuantileListVisitor visitor = new QuantileListVisitor(expr, 2); fc.accepts(visitor, null); CalcResult result = visitor.getResult(); List[] qResult = (List[]) result.getValue(); assertEquals(2, qResult.length); assertEquals(2, qResult[0].size()); assertEquals(1, qResult[1].size()); // test empty collection QuantileListVisitor emptyVisitor = new QuantileListVisitor(expr, 2); empty.accepts(emptyVisitor, null); assertEquals(CalcResult.NULL_RESULT, emptyVisitor.getResult()); // test merge assertSame(result, emptyVisitor.getResult().merge(result)); assertSame(result, result.merge(emptyVisitor.getResult())); }
assertEquals(3, value1.size()); // 3 items in the set assertEquals(2, value2.length); // 2 items in the set assertEquals( 5, assertEquals(3, uniqueResult1.toSet().size()); CalcResult uniqueResult4 = new UniqueResult(anotherSet); assertEquals(4, uniqueResult5.toSet().size()); assertEquals(anotherSet, uniqueResult1.toSet()); assertTrue(set.size() == 4); assertTrue(set.contains(3.0)); assertTrue(set.contains(4.5)); assertTrue(set.contains(2)); assertTrue(set.contains(4)); assertFalse(set.contains(6)); assertEquals(CalcResult.NULL_RESULT, uniqueVisitor.getResult()); assertSame(uniqueResult2, uniqueVisitor.getResult().merge(uniqueResult2)); assertSame(uniqueResult2, uniqueResult2.merge(uniqueVisitor.getResult()));
private void testNearest( SimpleFeatureCollection fc, String attributeName, Object target, Object... validResults) throws IOException { PropertyName expr = ff.property(attributeName); NearestVisitor visitor = new NearestVisitor(expr, target); fc.accepts(visitor, null); Object nearestMatch = visitor.getNearestMatch(); if (validResults.length == 0) { assertNull(nearestMatch); } else { boolean found = false; for (Object object : validResults) { found |= object != null ? (object.equals(nearestMatch)) : nearestMatch == null; } assertTrue( "Could match nearest " + nearestMatch + " among valid values " + Arrays.asList(validResults), found); } } }
public void testBadMerge() throws IllegalFilterException, IOException { // count + max = boom! CountVisitor countVisitor = new CountVisitor(); countVisitor.setValue(8); CalcResult countResult = countVisitor.getResult(); MaxVisitor maxVisitor = new MaxVisitor((Expression) null); maxVisitor.setValue(new Double(99)); CalcResult maxResult = maxVisitor.getResult(); try { CalcResult boomResult = maxResult.merge(countResult); fail(); // merge should throw an exception } catch (Exception e) { assertEquals("Parameter is not a compatible type", e.getMessage()); } }
assertEquals(2, medianResult1.toInt()); assertEquals(1.5, medianResult2.toDouble(), 0); assertEquals(2, medianResult3.toDouble(), 0); CalcResult medianResult4 = new MedianResult(vals); CalcResult medianResult5 = medianResult4.merge(medianResult1); assertEquals(2.75, medianResult5.toDouble(), 0); assertEquals(3.5, medianResult4.toDouble(), 0); try { medianResult3 = medianResult5.merge(medianResult1); fail(); // merge should fail } catch (Exception e) { assertEquals("Optimized median results cannot be merged.", e.getMessage()); assertEquals(CalcResult.NULL_RESULT, medianVisitor1.getResult()); assertSame(medianResult2, medianVisitor1.getResult().merge(medianResult2)); assertSame(medianResult2, medianResult2.merge(medianVisitor1.getResult()));
fc.accepts(uniqueVisitor, null); Set value1 = uniqueVisitor.getResult().toSet(); assertEquals(1, value1.size()); assertEquals(1, value1.iterator().next()); fc.accepts(uniqueVisitor, null); value1 = uniqueVisitor.getResult().toSet(); assertEquals(2, value1.size()); assertEquals(2, value1.iterator().next()); fc.accepts(uniqueVisitor, null); value1 = uniqueVisitor.getResult().toSet(); assertEquals(1, value1.size()); assertEquals(3, value1.iterator().next()); value1 = uniqueVisitor.getResult().toSet(); assertNull(value1);
public void testUniquePreserveOrder() throws IOException { UniqueVisitor uniqueVisitor = new UniqueVisitor(0, ft); uniqueVisitor.setPreserveOrder(true); fc.accepts(uniqueVisitor, null); Set value1 = uniqueVisitor.getResult().toSet(); assertEquals(1, value1.iterator().next()); uniqueVisitor.reset(); invfc.accepts(uniqueVisitor, null); value1 = uniqueVisitor.getResult().toSet(); assertEquals(3, value1.iterator().next()); }
testNearest(fc, "size", 5, 5); // exact match testNearest(fc, "size", 1, 2); // below min testNearest(fc, "size", 3, 2); // mid testNearest(fc, "size", 15, 10); // above max testNearest(fc, "flow", 3.5, 3.5); // exact match testNearest(fc, "flow", 1d, 3.5); // below min testNearest(fc, "flow", 10d, 10.5); // mid testNearest(fc, "flow", 100d, 50.4); // above max testNearest(fc, "event", df.parse("2014-12-10"), df.parse("2014-12-10")); // exact match testNearest(fc, "event", df.parse("2009-11-10"), df.parse("2010-11-10")); // below min testNearest(fc, "event", df.parse("2010-11-11"), df.parse("2010-11-10")); // mid testNearest(fc, "event", df.parse("2015-12-10"), df.parse("2014-12-10")); // above max testNearest(fc, "name", "ade", "ade"); // exact match testNearest(fc, "name", "aaa", "abc"); // below min testNearest(fc, "name", "mfc", "ade", "zaa"); // mid, both values could match testNearest(fc, "name", "zzz", "zaa"); // above max testNearest( fc, "data", new File("/tmp/test.txt"), new File("/tmp/test.txt")); // exact match testNearest(fc, "data", new File("/tmp/aaa.txt"), new File("/tmp/abc.txt")); // below min testNearest( fc, "data", new File("/tmp/abc.txt"), new File("/tmp/test.txt")); // mid, both values could match
assertEquals(2, value1); assertEquals((double) 3.75, value2, 0); assertEquals((double) 2.7, averageResult3.toDouble(), 0); assertEquals((double) 3.75, averageResult2.toDouble(), 0); assertEquals(20, averageResult2.toInt()); averageResult3 = averageResult1.merge(averageResult2); assertEquals((double) 13.25, averageResult3.toDouble(), 0); averageVisitor2.setValue(new Double(15.4)); // un-mergeable optimization averageResult2 = averageVisitor2.getResult(); assertEquals((double) 15.4, averageResult2.toDouble(), 0); try { averageResult3 = averageResult1.merge(averageResult2); fail(); // merge should throw an exception } catch (Exception e) { assertEquals("Optimized average results cannot be merged.", e.getMessage()); averageResult2 = averageVisitor2.getResult(); assertEquals((double) 4.33, averageResult3.toDouble(), 0); assertEquals(CalcResult.NULL_RESULT, averageVisitor.getResult()); assertSame(averageResult2, averageVisitor.getResult().merge(averageResult2)); assertSame(averageResult2, averageResult2.merge(averageVisitor.getResult()));
public void testCountSumMerge() throws IllegalFilterException, IOException { CountVisitor countVisitor = new CountVisitor(); fc2.accepts(countVisitor, null); // count = 2 SumVisitor sumVisitor = new SumVisitor(3, ft2); fc2.accepts(sumVisitor, null); // sum = 7.5 CalcResult countResult = countVisitor.getResult(); CalcResult sumResult = sumVisitor.getResult(); CalcResult averageResult1 = countResult.merge(sumResult); CalcResult averageResult2 = sumResult.merge(countResult); // both average results were correct? assertEquals((double) 3.75, averageResult1.toDouble(), 0); assertEquals((double) 3.75, averageResult2.toDouble(), 0); // neither sum nor count was destroyed? assertEquals(2, countResult.toInt()); assertEquals((double) 7.5, sumResult.toDouble(), 0); }
assertEquals(3, value1); assertEquals(2, value2); assertEquals(5, countResult3.toInt()); assertEquals(20, countResult4.toInt()); assertEquals(5, countResult3.toInt()); assertEquals(20, countResult4.toInt()); assertEquals(25, countResult5.toInt()); assertEquals(CalcResult.NULL_RESULT, countVisitor.getResult()); assertSame(countResult2, countVisitor.getResult().merge(countResult2)); assertSame(countResult2, countResult2.merge(countVisitor.getResult()));
public void testAreaInvalidPolygon() throws IllegalFilterException, IOException { SumAreaVisitor areaVisitor = new SumAreaVisitor(1, ft6); fc6.accepts(areaVisitor, null); double value1 = areaVisitor.getResult().toDouble(); assertEquals(0.0, value1); }
assertEquals(6, value1); assertEquals((double) 7.5, value2, 0); assertEquals((double) 13.5, sumResult3.toDouble(), 0); assertEquals(-28.5, sumResult5.toDouble(), 0); assertEquals(13.5, sumResult3.toDouble(), 0); assertEquals(-42.0, sumResult4.toDouble(), 0); assertEquals(CalcResult.NULL_RESULT, sumVisitor.getResult()); assertSame(sumResult2, sumVisitor.getResult().merge(sumResult2)); assertSame(sumResult2, sumResult2.merge(sumVisitor.getResult()));
public void testArea() throws IllegalFilterException, IOException { SumAreaVisitor areaVisitor = new SumAreaVisitor(1, ft4); fc4.accepts(areaVisitor, null); SumAreaVisitor areaVisitor2 = new SumAreaVisitor(1, ft5); fc5.accepts(areaVisitor2, null); double value1 = areaVisitor.getResult().toDouble(); assertEquals(10.0, value1); double value2 = areaVisitor2.getResult().toDouble(); assertEquals(12.0, value2); CalcResult areaResult1 = areaVisitor.getResult(); CalcResult areaResult2 = areaVisitor2.getResult(); CalcResult areaResult3 = areaResult1.merge(areaResult2); assertEquals((double) 22.0, areaResult3.toDouble(), 0); }
public void testBounds() throws IOException { BoundsVisitor boundsVisitor1 = new BoundsVisitor(); fc.accepts(boundsVisitor1, null); BoundsVisitor boundsVisitor2 = new BoundsVisitor(); fc2.accepts(boundsVisitor2, null); Envelope env1 = new Envelope(1, 5, 0, 4); CalcResult boundsResult1 = boundsVisitor1.getResult(); assertEquals(env1, boundsResult1.toEnvelope()); Envelope env2 = new Envelope(4, 13, 3, 10); CalcResult boundsResult2 = boundsVisitor2.getResult(); assertEquals(env2, boundsResult2.toEnvelope()); CalcResult boundsResult3 = boundsResult2.merge(boundsResult1); Envelope env3 = new Envelope(1, 13, 0, 10); assertEquals(env3, boundsResult3.toEnvelope()); // test empty collection boundsVisitor1.reset(null); empty.accepts(boundsVisitor1, null); assertEquals(CalcResult.NULL_RESULT, boundsVisitor1.getResult()); // test merge assertSame(boundsResult2, boundsVisitor1.getResult().merge(boundsResult2)); assertSame(boundsResult2, boundsResult2.merge(boundsVisitor1.getResult())); }
assertEquals(3, value1); assertEquals((double) 4.5, value2, 0); assertEquals((double) 4.5, maxResult3.toDouble(), 0); assertEquals(3, maxResult5.toDouble(), 0); assertEquals(2, maxResult4.toDouble(), 0); assertEquals(3, maxResult7.toDouble(), 0); assertEquals(-5, maxResult6.toDouble(), 0); assertEquals(544, maxResult7.toDouble(), 0); assertEquals(6453, maxResult7.toDouble(), 0); assertEquals(6453, maxResult7.toInt()); assertEquals(CalcResult.NULL_RESULT, maxVisitor.getResult()); assertSame(maxResult2, maxVisitor.getResult().merge(maxResult2)); assertSame(maxResult2, maxResult2.merge(maxVisitor.getResult()));
assertEquals(1, value); int value2 = minVisitor.getResult().toInt(); assertEquals(1, value2); assertEquals(1, minResult3.toInt()); assertEquals(1, minResult5.toInt()); assertEquals(10, minResult4.toInt()); assertEquals(-5, minResult7.toInt()); assertEquals(-5, minResult6.toInt()); assertEquals(-50, minResult7.toInt()); assertEquals(-100.0, minResult7.toDouble(), 0); assertEquals(-100, minResult7.toInt()); assertEquals(CalcResult.NULL_RESULT, minVisitor.getResult()); assertSame(minResult2, minVisitor.getResult().merge(minResult2)); assertSame(minResult2, minResult2.merge(minVisitor.getResult()));
public void testStandardDeviation() throws Exception { FilterFactory factory = CommonFactoryFinder.getFilterFactory(null); Expression expr = factory.property(ft3.getDescriptor(0).getLocalName()); // first do it the old fashioned way to ensure backwards compatibility AverageVisitor visit1 = new AverageVisitor(expr); fc3.accepts(visit1, null); CalcResult result = visit1.getResult(); double average = result.toDouble(); StandardDeviationVisitor visit2 = new StandardDeviationVisitor(expr, average); fc3.accepts(visit2, null); assertEquals(28.86, visit2.getResult().toDouble(), 0.01); // then do it single pass StandardDeviationVisitor visit3 = new StandardDeviationVisitor(expr); fc3.accepts(visit3, null); assertEquals(28.86, visit3.getResult().toDouble(), 0.01); // test empty collection StandardDeviationVisitor emptyVisitor = new StandardDeviationVisitor(expr, average); empty.accepts(emptyVisitor, null); assertEquals(CalcResult.NULL_RESULT, emptyVisitor.getResult()); // test merge assertSame(result, emptyVisitor.getResult().merge(result)); assertSame(result, result.merge(emptyVisitor.getResult())); }