@Test public void testWeighted() { WeightedRunningAverage runningAverage = new WeightedRunningAverage(); assertEquals(0, runningAverage.getCount()); assertTrue(Double.isNaN(runningAverage.getAverage())); runningAverage.addDatum(1.0, 2.0); assertEquals(1.0, runningAverage.getAverage(), EPSILON); runningAverage.addDatum(1.0); assertEquals(1.0, runningAverage.getAverage(), EPSILON); runningAverage.addDatum(8.0, 0.5); assertEquals(2.0, runningAverage.getAverage(), EPSILON); runningAverage.addDatum(-4.0); assertEquals(2.0/3.0, runningAverage.getAverage(), EPSILON); runningAverage.removeDatum(-4.0); assertEquals(2.0, runningAverage.getAverage(), EPSILON); runningAverage.removeDatum(2.0, 2.0); assertEquals(2.0, runningAverage.getAverage(), EPSILON); runningAverage.changeDatum(0.0); assertEquals(2.0, runningAverage.getAverage(), EPSILON); runningAverage.changeDatum(4.0, 0.5); assertEquals(5.0/1.5, runningAverage.getAverage(), EPSILON); }