def test_rolling_minheap(array, window_size, window_type): got = MinHeap(array, window_size, window_type=window_type) expected = Apply(array, window_size, operation=min, window_type=window_type) assert list(got) == list(expected)
def test_rolling_max(array, window_size, window_type): got = Max(array, window_size, window_type=window_type) expected = Apply(array, window_size, operation=max, window_type=window_type) assert list(got) == list(expected)
def test_rolling_mean(array, window_size, window_type): got = Mean(array, window_size, window_type=window_type) expected = Apply(array, window_size, operation=_mean, window_type=window_type) assert pytest.approx(list(got)) == list(expected)
def test_rolling_nunique(word, window_size, window_type): got = Nunique(word, window_size, window_type=window_type) expected = Apply(word, window_size, operation=lambda x: len(set(x)), window_type=window_type) assert list(got) == list(expected)
def test_rolling_kurtosis(array, window_size, window_type): got = Kurtosis(array, window_size, window_type=window_type) expected = Apply(array, window_size, operation=_kurtosis, window_type=window_type) assert pytest.approx(list(got), nan_ok=True) == list(expected)
def test_rolling_all(array, window_size, window_type): got = All(array, window_size, window_type=window_type) expected = Apply(array, window_size, operation=all, window_type=window_type) assert list(got) == list(expected)
def test_rolling_product(array, window_size, window_type): got = Product(array, window_size, window_type=window_type) expected = Apply(array, window_size, operation=_product, window_type=window_type) assert list(got) == list(expected)
def test_rolling_sum(array, window_size, window_type): got = Sum(array, window_size, window_type=window_type) expected = Apply(array, window_size, operation=sum, window_type=window_type) assert list(got) == list(expected)
def test_rolling_mode(array, window_size, window_type): got = Mode(array, window_size, window_type=window_type) expected = Apply(array, window_size, operation=_mode, window_type=window_type) # NOTE: we copy the returned set so that it is not mutated after further iteration assert [set_.copy() for set_ in got] == list(expected)
def test_unknown_window_type_type_raises(window_type): with pytest.raises(ValueError): Apply([], 5, window_type=window_type)
def test_bad_window_size_type_raises(window_size): with pytest.raises(TypeError): Apply([], window_size)
def test_bad_window_size_value_raises(window_size): with pytest.raises(ValueError): Apply([], window_size)
def test_rolling_entropy(window_size, sequence): expected = Apply(sequence, window_size, operation=_entropy) got = Entropy(sequence, window_size) assert pytest.approx(list(got), abs=1e-10) == list(expected)
def test_rolling_apply_over_short_iterable(array, window_type, expected): r = Apply(array, 5, operation=list, window_type=window_type) assert list(r) == expected
def test_rolling_apply_variable(array, window_size, expected): r = Apply(array, window_size, operation=list, window_type="variable") assert list(r) == expected
def test_rolling_apply(array, window_size, expected): r = Apply(array, window_size, operation=list) assert list(r) == expected