def test_flowstat_get_avg_speed():
    f = FlowStat()
    timestamp = 0
    for x in [1, 3, 5, 7]:
        f.put(x, timestamp)
        timestamp += 5
    assert f.get_avg_speed() == 0.4
def test_flowstat_get_avg_good_prefix():
    f = FlowStat()
    for x in [1, 3, 5, 7]:
        f.put(x)
    assert f.get_avg('K') == 2 / 1000 and f.get_avg(
        'M') == 2 / 1000000 and f.get_avg('G') == 2 / 1000000000
def test_flowstat_get_avg_bad_prefix():
    f = FlowStat()
    for x in [1, 3, 5, 7]:
        f.put(x)
    with pytest.raises(KeyError):
        f.get_avg('F')
def test_flowstat_get_avg():
    f = FlowStat()
    for x in [1, 3, 5, 7]:
        f.put(x)
    assert f.get_avg() == 2
def test_flowstat_get_one():
    f = FlowStat()
    f.put(5)
    assert f.get_avg() == 5
def test_flowstat_put_out_of_order_number():
    f = FlowStat()
    with pytest.raises(ValueError):
        f.put(1)
        f.put(5)
        f.put(4)
def test_flowstat_put_negative_number():
    f = FlowStat()
    with pytest.raises(ValueError):
        f.put(-4)
def test_flowstat_get_empty():
    f = FlowStat()
    assert f.get_avg() == 0