package org.infinispan.objectfilter.impl.aggregation; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import org.junit.Test; /** * @author anistor@redhat.com * @since 8.1 */ public class DoubleStatTest { private static final double DELTA = 0.0000001d; @Test public void testEmptySum() throws Exception { DoubleStat sum = new DoubleStat(); assertNull(sum.getSum()); } @Test public void testEmptyAvg() throws Exception { DoubleStat avg = new DoubleStat(); assertNull(avg.getAvg()); } @Test public void testSum() throws Exception { DoubleStat sum = new DoubleStat(); sum.update(10); sum.update(20); Double computedSum = sum.getSum(); assertNotNull(computedSum); assertEquals(30.0d, computedSum, DELTA); } @Test public void testAvg() throws Exception { DoubleStat avg = new DoubleStat(); avg.update(10); avg.update(20); Double computedAvg = avg.getAvg(); assertNotNull(computedAvg); assertEquals(15.0d, computedAvg, DELTA); } @Test public void testSumWithNaN() throws Exception { DoubleStat sum = new DoubleStat(); sum.update(10); sum.update(Double.NaN); Double computedSum = sum.getSum(); assertNotNull(computedSum); assertEquals(Double.NaN, computedSum, DELTA); } @Test public void testAvgWithNaN() throws Exception { DoubleStat avg = new DoubleStat(); avg.update(10); avg.update(Double.NaN); Double computedAvg = avg.getAvg(); assertNotNull(computedAvg); assertEquals(Double.NaN, computedAvg, DELTA); } @Test public void testSumWithPlusInf() throws Exception { DoubleStat sum = new DoubleStat(); sum.update(10); sum.update(Double.POSITIVE_INFINITY); Double computedSum = sum.getSum(); assertNotNull(computedSum); assertEquals(Double.POSITIVE_INFINITY, computedSum, DELTA); } @Test public void testAvgWithPlusInf() throws Exception { DoubleStat avg = new DoubleStat(); avg.update(10); avg.update(Double.POSITIVE_INFINITY); Double computedAvg = avg.getAvg(); assertNotNull(computedAvg); assertEquals(Double.POSITIVE_INFINITY, computedAvg, DELTA); } @Test public void testSumWithMinusInf() throws Exception { DoubleStat sum = new DoubleStat(); sum.update(10); sum.update(Double.NEGATIVE_INFINITY); Double computedSum = sum.getSum(); assertNotNull(computedSum); assertEquals(Double.NEGATIVE_INFINITY, computedSum, DELTA); } @Test public void testAvgWithMinusInf() throws Exception { DoubleStat avg = new DoubleStat(); avg.update(10); avg.update(Double.NEGATIVE_INFINITY); Double computedAvg = avg.getAvg(); assertNotNull(computedAvg); assertEquals(Double.NEGATIVE_INFINITY, computedAvg, DELTA); } @Test public void testSumWithMinusInfAndPlusInf() throws Exception { DoubleStat sum = new DoubleStat(); sum.update(10); sum.update(Double.NEGATIVE_INFINITY); sum.update(Double.POSITIVE_INFINITY); Double computedSum = sum.getSum(); assertNotNull(computedSum); assertEquals(Double.NaN, computedSum, DELTA); } @Test public void testAvgWithMinusInfAndPlusInf() throws Exception { DoubleStat avg = new DoubleStat(); avg.update(10); avg.update(Double.NEGATIVE_INFINITY); avg.update(Double.POSITIVE_INFINITY); Double computedAvg = avg.getAvg(); assertNotNull(computedAvg); assertEquals(Double.NaN, computedAvg, DELTA); } }