@Override
    public double getRate() {
        return currentRate;
    }
@Test
    void testGetRate() {
        Counter c = new SimpleCounter();
        MeterView m = new MeterView(c);

        // values = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        for (int x = 0; x < 12; x++) {
            m.markEvent(10);
            m.update();
        }
        // values = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]
        assertThat(m.getRate()).isEqualTo(2.0, offset(0.1)); // 120 - 0 / 60

        for (int x = 0; x < 12; x++) {
            m.markEvent(10);
            m.update();
        }
        // values = [130, 140, 150, 160, 170, 180, 190, 200, 210, 220, 230, 240, 120]
        assertThat(m.getRate()).isEqualTo(2.0, offset(0.1)); // 240 - 120 / 60

        for (int x = 0; x < 6; x++) {
            m.markEvent(20);
            m.update();
        }
        // values = [280, 300, 320, 340, 360, 180, 190, 200, 210, 220, 230, 240, 260]
        assertThat(m.getRate()).isEqualTo(3.0, offset(0.1)); // 360 - 180 / 60

        for (int x = 0; x < 6; x++) {
            m.markEvent(20);
            m.update();
        }
        // values = [280, 300, 320, 340, 360, 380, 400, 420, 440, 460, 480, 240, 260]
        assertThat(m.getRate()).isEqualTo(4.0, offset(0.1)); // 480 - 240 / 60

        for (int x = 0; x < 6; x++) {
            m.update();
        }
        // values = [480, 480, 480, 480, 360, 380, 400, 420, 440, 460, 480, 480, 480]
        assertThat(m.getRate()).isEqualTo(2.0, offset(0.1)); // 480 - 360 / 60

        for (int x = 0; x < 6; x++) {
            m.update();
        }
        // values = [480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480]
        assertThat(m.getRate()).isEqualTo(0.0, offset(0.1)); // 480 - 480 / 60
    }