示例#1
0
def test_access():
    alist = Array.range(10, 20)
    assert alist[9] == 19
    assert alist[-1] == 19
    assert alist[-10] == 10
    with pytest.raises(IndexError):
        alist[10]
    with pytest.raises(IndexError):
        alist[-11]

    assert alist.get(3) == 13
    assert alist.get(10) is None
    assert alist.get(3, 0) == 13
    assert alist.get(10, 0) == 0
    assert alist.get_opt(3) == Some(13)
    assert alist.get_opt(-2) == Some(18)
    assert alist.get_opt(-10) == Some(10)
    assert alist.get_opt(-11) is Nothing
    assert alist.get_opt(10) is Nothing

    assert alist.first() == 10
    assert alist.second() == 11
    assert alist.last() == 19
    assert alist.first_opt() == Some(10)
    assert alist.last_opt() == Some(19)

    emptylist = Array()
    assert emptylist.first_opt() is Nothing
    assert emptylist.last_opt() is Nothing
示例#2
0
def test_combinatoric():
    alist = Array.range(3)
    assert alist.product(repeat=1) == Array([(0, ), (1, ), (2, )])
    assert alist.product(repeat=2) == Array([
        (0, 0),
        (0, 1),
        (0, 2),
        (1, 0),
        (1, 1),
        (1, 2),
        (2, 0),
        (2, 1),
        (2, 2),
    ])
    assert alist.product([0, 1, 2]) == Array([
        (0, 0),
        (0, 1),
        (0, 2),
        (1, 0),
        (1, 1),
        (1, 2),
        (2, 0),
        (2, 1),
        (2, 2),
    ])
示例#3
0
def test_append():
    alist = Array.range(5)
    assert alist.append(5) is alist
    assert alist == Array([0, 1, 2, 3, 4, 5])

    alist = Array.range(5)
    assert alist.appended(5) is not alist
    assert alist.appended(5) == Array([0, 1, 2, 3, 4, 5])
示例#4
0
def test_extend():
    alist = Array.range(5)
    assert alist.extend([5, 6]) is alist
    assert alist == Array([0, 1, 2, 3, 4, 5, 6])

    alist = Array.range(5)
    assert alist.extended([5, 6]) is not alist
    assert alist.extended([5, 6]) == Array([0, 1, 2, 3, 4, 5, 6])
示例#5
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])
    }
示例#6
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]))
示例#7
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])
    ]
示例#8
0
def test_basic_transform():
    alist = Array([1, 2, 3])

    def multiply_2(n):
        return n * 2

    assert alist.map(multiply_2) == Array([2, 4, 6])

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

    assert alist.flat_map(duplicate) == Array([1, 1, 2, 2, 3, 3])

    assert alist.map(duplicate) == Array([[1, 1], [2, 2], [3, 3]])
    assert alist.map(duplicate).flatten() == Array([1, 1, 2, 2, 3, 3])

    alist = Array.range(10, 15).zip(Array.range(5, 10))
    assert alist.starmap(lambda a, b: a - b) == Array([5] * 5)

    alist = Array.range(5)

    def is_even(n):
        return n % 2 == 0

    assert alist.filter(is_even) == Array([0, 2, 4])
示例#9
0
def test_init():
    alist = Array([1, 2, 3])
    assert alist == Array.range(1, 4)
示例#10
0
def test_zip():
    zip_index_list = Array.range(10, 13).zip_index()
    assert (zip_index_list ==
            Array([ValueIndex(10, 0), ValueIndex(11, 1), ValueIndex(12, 2)]))

    assert (zip_index_list ==
            Array.range(10, 13).zip([0, 1, 2]).starmap(lambda a, b: ValueIndex(a, b)))

    assert (Array.range(10, 13).zip_longest([0, 1]) ==
            Array([(10, 0), (11, 1), (12, None)]))

    assert (Array.range(10, 13).zip_longest_opt([0, 1]) ==
            Array([(Some(10), Some(0)), (Some(11), Some(1)),
                   (Some(12), Nothing)]))

    assert (Array.range(10, 13).zip_prev() == Array(
        [CurrPrev(10, None), CurrPrev(11, 10), CurrPrev(12, 11)]))
    assert (Array.range(10, 13).zip_next() == Array(
        [CurrNext(10, 11), CurrNext(11, 12), CurrNext(12, None)]))
示例#11
0
def test_slice():
    alist = Array.range(10, 20)
    assert alist[:5] == Array.range(10, 15)
    assert alist[-3:] == Array.range(17, 20)
    assert alist.take(5) == Array.range(10, 15)
    assert alist.drop(3) == Array.range(13, 20)
    assert alist.drop(10) == Array()
    assert alist.drop(20) == Array()
    assert alist.takeright(3) == Array.range(17, 20)
    assert alist.dropright(3) == Array.range(10, 17)
    assert alist.tail() == Array.range(11, 20)
    assert alist.butlast() == Array.range(10, 19)
    assert alist.slice(3, 5) == Array.range(13, 15)
    assert alist[3:5] == Array.range(13, 15)

    def less_than_15(n):
        return n < 15

    assert alist.takewhile(less_than_15) == Array.range(10, 15)
    assert alist.dropwhile(less_than_15) == Array.range(15, 20)
示例#12
0
def test_to():
    stm = Array.range(5, 8).to_stream()
    assert type(stm) is Stream
    assert stm.to_list() == [5, 6, 7]
示例#13
0
def test_distincted():
    alist = Array([3, 2, 2, 1, 5, 1, 7])
    assert alist.distincted() == Array([3, 2, 1, 5, 7])
示例#14
0
def test_reorder():
    alist = Array.range(5)
    assert alist.reverse() is alist
    assert alist == Array([4, 3, 2, 1, 0])

    alist = Array.range(5)
    assert alist.reversed() is not alist
    assert alist.reversed() == Array([4, 3, 2, 1, 0])

    alist = Array([5, 2, 3, 4, 1])
    assert alist.sort(key=lambda n: -n) is alist
    assert alist == Array([5, 4, 3, 2, 1])

    alist = Array([5, 2, 3, 4, 1])
    assert alist.sorted(key=lambda n: -n) is not alist
    assert alist.sorted(key=lambda n: -n) == Array([5, 4, 3, 2, 1])