/** * */ package net.objectlab.kit.util; import static org.assertj.core.api.Assertions.assertThat; import java.math.BigDecimal; import org.junit.Before; import org.junit.Test; /** * @author Benoit * */ public class SampleStandardDeviationTest { private SampleStandardDeviation stdDev; @Before public void setUp() { stdDev = new SampleStandardDeviation(); } @Test public void testAverageNoPoint() { assertThat(stdDev.getDataPoints()).isEqualTo(0); assertThat(stdDev.getAverage()).isNull(); assertThat(stdDev.getStandardDeviation()).isNull(); assertThat(stdDev.getTotal()).isEqualByComparingTo("0"); assertThat(stdDev.getMinimum().isPresent()).isFalse(); assertThat(stdDev.getMaximum().isPresent()).isFalse(); } @Test public void testAverageOnePointZero() { stdDev.add(BigDecimal.ZERO); assertThat(stdDev.getDataPoints()).isEqualTo(1); assertThat(stdDev.getAverage()).isEqualByComparingTo("0"); assertThat(stdDev.getTotal()).isEqualByComparingTo("0"); assertThat(stdDev.getMaximum().get()).isEqualByComparingTo("0"); assertThat(stdDev.getMinimum().get()).isEqualByComparingTo("0"); assertThat(stdDev.getStandardDeviation()).isNull(); ; } @Test public void testAverageOnePointOne() { stdDev.add(BigDecimal.ONE); assertThat(stdDev.getDataPoints()).isEqualTo(1); assertThat(stdDev.getAverage()).isEqualByComparingTo("1"); assertThat(stdDev.getTotal()).isEqualByComparingTo("1"); assertThat(stdDev.getMaximum().get()).isEqualByComparingTo("1"); assertThat(stdDev.getMinimum().get()).isEqualByComparingTo("1"); assertThat(stdDev.getStandardDeviation()).isNull(); } @Test public void testAverageOnePointTen() { stdDev.add(BigDecimal.TEN); assertThat(stdDev.getDataPoints()).isEqualTo(1); assertThat(stdDev.getAverage()).isEqualByComparingTo("10"); assertThat(stdDev.getTotal()).isEqualByComparingTo("10"); assertThat(stdDev.getMaximum().get()).isEqualByComparingTo("10"); assertThat(stdDev.getMinimum().get()).isEqualByComparingTo("10"); assertThat(stdDev.getStandardDeviation()).isNull(); } @Test public void testAverageTwoPointsTen() { stdDev.add(BigDecimal.ZERO); stdDev.add(BigDecimal.TEN); assertThat(stdDev.getDataPoints()).isEqualTo(2); assertThat(stdDev.getAverage()).isEqualByComparingTo("5"); assertThat(stdDev.getTotal()).isEqualByComparingTo("10"); assertThat(stdDev.getMaximum().get()).isEqualByComparingTo("10"); assertThat(stdDev.getMinimum().get()).isEqualByComparingTo("0"); assertThat(stdDev.getStandardDeviation()).isEqualByComparingTo("7.07106781"); } @Test public void testAverageTwoPointsWithNegative() { stdDev.add(BigDecimalUtil.bd("-1")); stdDev.add(BigDecimal.TEN); assertThat(stdDev.getDataPoints()).isEqualTo(2); assertThat(stdDev.getAverage()).isEqualByComparingTo("4.5"); assertThat(stdDev.getTotal()).isEqualByComparingTo("9"); assertThat(stdDev.getMaximum().get()).isEqualByComparingTo("10"); assertThat(stdDev.getMinimum().get()).isEqualByComparingTo("-1"); assertThat(stdDev.getStandardDeviation()).isEqualByComparingTo("7.77817459"); } @Test public void testAverageFourPointMixed() { stdDev.add(BigDecimalUtil.bd("-1")); stdDev.add(BigDecimalUtil.bd("4")); stdDev.add(BigDecimal.TEN); stdDev.add(BigDecimal.TEN); assertThat(stdDev.getDataPoints()).isEqualTo(4); assertThat(stdDev.getAverage()).isEqualByComparingTo("5.75"); assertThat(stdDev.getTotal()).isEqualByComparingTo("23"); assertThat(stdDev.getMaximum().get()).isEqualByComparingTo("10"); assertThat(stdDev.getMinimum().get()).isEqualByComparingTo("-1"); assertThat(stdDev.getStandardDeviation()).isEqualByComparingTo("5.31507291"); } }