MeterView implements Meter, View { @Override public double getRate() { return currentRate; } MeterView(int timeSpanInSeconds);  MeterView(Counter counter, int timeSpanInSeconds); @Override void markEvent(); @Override void markEvent(long n); @Override long getCount(); @Override double getRate(); @Override void update();  }
@Test public void testGetRate() { Counter c = new SimpleCounter(); MeterView m = new MeterView(c, 60); for (int x = 0; x < 12; x++) { m.markEvent(10); m.update(); } assertEquals(2.0, m.getRate(), 0.1); for (int x = 0; x < 12; x++) { m.markEvent(10); m.update(); } assertEquals(2.0, m.getRate(), 0.1); for (int x = 0; x < 6; x++) { m.markEvent(20); m.update(); } assertEquals(3.0, m.getRate(), 0.1); for (int x = 0; x < 6; x++) { m.markEvent(20); m.update(); } assertEquals(4.0, m.getRate(), 0.1); for (int x = 0; x < 6; x++) { m.update(); } assertEquals(2.0, m.getRate(), 0.1); for (int x = 0; x < 6; x++) { m.update(); } assertEquals(0.0, m.getRate(), 0.1); }