コード例 #1
0
def test_to():
    assert Stream.range(5, 8).to_array() == Array([5, 6, 7])
    assert Stream([(1, 2), (3, 4)]).to_dict() == {1: 2, 3: 4}
    assert Stream.range(5, 8).to_set() == set([5, 6, 7])

    assert list(Stream.range(5, 8)) == [5, 6, 7]
    assert Stream.range(5, 8).to_series().equals(pd.Series([5, 6, 7]))
コード例 #2
0
def test_filtering():
    def is_even(n):
        return n % 2 == 0

    assert Stream.range(5, 10).filter(is_even).to_list() == [6, 8]
    assert Stream.range(5, 10).filter_false(is_even).to_list() == [5, 7, 9]

    assert Stream.range(5, 10).without(6, 8).to_list() == [5, 7, 9]
コード例 #3
0
def test_slice():
    assert Stream.range(5, 10).take(3).to_list() == [5, 6, 7]
    assert Stream.range(5, 10).drop(3).to_list() == [8, 9]

    def less_than_3(n):
        return n < 3

    assert Stream.range(0, 5).takewhile(less_than_3).to_list() == [0, 1, 2]

    assert Stream.range(0, 5).dropwhile(less_than_3).to_list() == [3, 4]
コード例 #4
0
def test_groupby():
    assert (Stream.range(10).group_by_as_stream(lambda n: n // 3).starmap(
        lambda k, vs: (k, list(vs))).to_list() == [(0, [0, 1, 2]),
                                                   (1, [3, 4, 5]),
                                                   (2, [6, 7, 8]), (3, [9])])

    assert Stream.range(10).group_by_as_map(lambda n: n // 3) == {
        0: Array([0, 1, 2]),
        1: Array([3, 4, 5]),
        2: Array([6, 7, 8]),
        3: Array([9])
    }
コード例 #5
0
def test_map():
    def multiply_2(n):
        return n * 2

    assert Stream.range(10).map(multiply_2).to_list() == list(range(0, 20, 2))

    def duplicate(v):
        return [v] * 2

    assert Stream.range(3).flat_map(duplicate).to_list() == [0, 0, 1, 1, 2, 2]

    assert Stream([(5, 1), (3, 4)]).flatten().to_list() == [5, 1, 3, 4]
    assert Stream.range(10).len() == 10
    assert Stream([(5, 1), (3, 4)]).flatten().len() == 4
コード例 #6
0
def test_split():
    def divisible_by_three(n):
        return n % 3 == 0

    assert Stream.range(10).split_before(divisible_by_three).to_list() == [
        Array([0, 1, 2]),
        Array([3, 4, 5]),
        Array([6, 7, 8]),
        Array([9])
    ]
    assert Stream.range(10).split_after(divisible_by_three).to_list() == [
        Array([0]),
        Array([1, 2, 3]),
        Array([4, 5, 6]),
        Array([7, 8, 9])
    ]
コード例 #7
0
def test_reduce():
    assert Stream.range(5, 8).reduce(lambda a, b: a + b) == 18
    assert Stream.range(5, 8).fold_left(lambda a, b: a + b, 2) == 20
    assert Stream.range(5, 8).mean() == 6
    assert Stream.range(5, 8).sum() == 18
    assert Stream.range(5, 8).accumulate().to_list() == [5, 11, 18]
    assert Stream.range(5, 8).accumulate(op.mul).to_list() == [5, 30, 210]
コード例 #8
0
def test_zip():
    assert Stream.range(5, 8).zip(itt.count(1)).to_list() == [(5, 1), (6, 2),
                                                              (7, 3)]
    assert Stream.range(5, 8).zip(itt.count(1)).to_list() == [(5, 1), (6, 2),
                                                              (7, 3)]

    assert Stream.range(5, 8).zip_longest(range(1, 5)).to_list() == [(5, 1),
                                                                     (6, 2),
                                                                     (7, 3),
                                                                     (None, 4)]

    assert (Stream.range(5,
                         8).zip_longest(range(1, 5),
                                        fillvalue=100).to_list() == [(5, 1),
                                                                     (6, 2),
                                                                     (7, 3),
                                                                     (100, 4)])

    assert Stream.range(5, 8).zip_prev().to_list() == [
        CurrPrev(5, None), CurrPrev(6, 5),
        CurrPrev(7, 6)
    ]

    assert Stream.range(5, 8).zip_next().to_list() == [
        CurrNext(5, 6), CurrNext(6, 7),
        CurrNext(7, None)
    ]

    assert Stream.range(5, 8).zip_prev(99).to_list() == [
        CurrPrev(5, 99), CurrPrev(6, 5),
        CurrPrev(7, 6)
    ]

    assert Stream.range(5, 8).zip_next(99).to_list() == [
        CurrNext(5, 6), CurrNext(6, 7),
        CurrNext(7, 99)
    ]

    assert Stream.range(5, 8).zip_index().to_list() == [
        ValueIndex(5, 0), ValueIndex(6, 1),
        ValueIndex(7, 2)
    ]
コード例 #9
0
def test_access():
    assert Stream.range(5, 10).get(3) == 8
    assert Stream.range(5, 10).get(5, 0) == 0
    assert Stream.range(5, 10).get(7, 0) == 0
    assert Stream.range(5, 10).get(6) is None
    with pytest.raises(ValueError):
        assert Stream.range(5, 10).get(-1) is None
    assert Stream.range(5, 10)[3] == 8

    with pytest.raises(ValueError):
        assert Stream(iter(range(5, 10)))[-1]
    with pytest.raises(IndexError):
        assert Stream.range(5, 10)[5]

    assert Stream.range(5, 10).get_opt(3) == Some(8)
    assert Stream.range(5, 10).get_opt(5) is Nothing
    with pytest.raises(ValueError):
        assert Stream(iter(range(5, 10))).get_opt(-1) is Nothing

    assert Stream.range(5, 10).first() == 5
    assert Stream.range(5, 10).first_opt() == Some(5)
    assert Stream([5]).first_opt() == Some(5)
    assert Stream([]).first_opt() is Nothing
    assert Stream(iter([])).first_opt() is Nothing
コード例 #10
0
def test_init():
    assert Stream([1, 2, 3]).to_list() == [1, 2, 3]
    assert Stream(range(10)).to_list() == list(range(10))
    assert Stream.range(10).to_list() == list(range(10))
コード例 #11
0
def test_sliding_window():
    assert Stream.range(5, 10).sliding_window(3).to_list() == [(5, 6, 7),
                                                               (6, 7, 8),
                                                               (7, 8, 9)]
コード例 #12
0
def test_extend():
    assert Stream.range(5, 8).extended([1, 3]).to_list() == [5, 6, 7, 1, 3]
    assert Stream.range(5, 8).appended(5).to_list() == [5, 6, 7, 5]
コード例 #13
0
def test_ordering():
    assert Stream.range(5, 8).reversed().to_list() == [7, 6, 5]
    assert Stream([1, 3, 2, 4]).sorted().to_list() == [1, 2, 3, 4]
    assert Stream([1, 3, 2, 4]).sorted(lambda x: -x).to_list() == [4, 3, 2, 1]
    assert Stream([1, 3, 2,
                   4]).sorted(lambda x: x % 2).to_list() == [2, 4, 1, 3]
コード例 #14
0
def test_interpose():
    assert Stream.range(5, 9).interpose(0).to_list() == [5, 0, 6, 0, 7, 0, 8]
    assert Stream([]).interpose(0).to_list() == []