@Test public void testMonospacedAverage() { averager.onEvent(newDeltaSensorEvent(10, 1000)); averager.onEvent(newDeltaSensorEvent(20, 1250)); averager.onEvent(newDeltaSensorEvent(30, 1500)); averager.onEvent(newDeltaSensorEvent(40, 1750)); averager.onEvent(newDeltaSensorEvent(50, 2000)); average = averager.getAverage(2000, 0); assertEquals(average.value, (20+30+40+50)/4d); assertEquals(average.confidence, 1d); }
@Test public void testWeightedAverage() { averager.onEvent(newDeltaSensorEvent(10, 1000)); averager.onEvent(newDeltaSensorEvent(20, 1100)); averager.onEvent(newDeltaSensorEvent(30, 1300)); averager.onEvent(newDeltaSensorEvent(40, 1600)); averager.onEvent(newDeltaSensorEvent(50, 2000)); average = averager.getAverage(2000, 0); assertEquals(average.value, (20*0.1d)+(30*0.2d)+(40*0.3d)+(50*0.4d)); assertEquals(average.confidence, 1d); }
@Test public void testSingleValueTimeAverage() { averager.onEvent(newDeltaSensorEvent(10, 1000)); average = averager.getAverage(1000, 0); assertEquals(average.confidence, 0d); }
@Test public void testNoRecentValuesAverage() { averager.onEvent(newDeltaSensorEvent(10, 0)); average = averager.getAverage(timePeriod.toMilliseconds()+1000, 0); assertEquals(average.value, 10d); assertEquals(average.confidence, 0d); }
@Test public void testConfidenceDecay() { averager.onEvent(newDeltaSensorEvent(10, 1000)); averager.onEvent(newDeltaSensorEvent(20, 1250)); averager.onEvent(newDeltaSensorEvent(30, 1500)); averager.onEvent(newDeltaSensorEvent(40, 1750)); averager.onEvent(newDeltaSensorEvent(50, 2000)); average = averager.getAverage(2250, 0); assertEquals(average.value, (30+40+50)/3d); assertEquals(average.confidence, 0.75d); average = averager.getAverage(2500, 0); assertEquals(average.value, (40+50)/2d); assertEquals(average.confidence, 0.5d); average = averager.getAverage(2750, 0); assertEquals(average.value, 50d); assertEquals(average.confidence, 0.25d); average = averager.getAverage(3000, 0); assertEquals(average.value, 50d); assertEquals(average.confidence, 0d); }