def test_length_when_window_size_lte_list(l: List[float], window_size: int) -> None: assume(window_size <= len(l)) assert len(moving_average(l, window_size)) == len(l) - window_size + 1
def test_length_when_window_size_gt_list(l: List[float], window_size: int) -> None: assert len(moving_average(l, window_size)) == 1
def test_constant_list_returns_constant_ma(value: float, list_size: int, window_size: int) -> None: ma = moving_average([value] * list_size, window_size) assert all([e == value for e in ma])
def test_empty_list_returns_empty_list(window_size: int) -> None: assert moving_average([], window_size) == []
def test_non_positive_window_size_raises(l: List[float]) -> None: with pytest.raises(ValueError): assert moving_average(l, 0) == l with pytest.raises(ValueError): assert moving_average(l, -2) == l
def test_window_size_one_is_identity(l: List[float]) -> None: assert moving_average(l, 1) == l
def test_simple_case() -> None: assert moving_average([1, 2, 3, 4], 2) == [1.5, 2.5, 3.5]