예제 #1
0
def test_normal():
    """Test roundrobin."""
    # three tuples of different sizes
    data1, data2, data3 = iter('ABC'), iter('D'), iter('EF')
    res = roundrobin(data1, data2, data3)
    assert next(res) == 'A'
    assert list(res) == ['D', 'E', 'B', 'F', 'C']
    assert list(data1) == []
    assert list(data2) == []
    assert list(data3) == []

    # three tuples of different sizes in ascending order
    data1, data2, data3 = iter('A'), iter('BC'), iter('DEF')
    res = roundrobin(data1, data2, data3)
    assert next(res) == 'A'
    assert list(res) == ['B', 'D', 'C', 'E', 'F']
    assert list(data1) == []
    assert list(data2) == []
    assert list(data3) == []

    # one tuple
    data = iter('ABC')
    res = roundrobin(data)
    assert next(res) == 'A'
    assert list(res) == ['B', 'C']
    assert list(data) == []

    # empty tuple
    data = ()
    res = roundrobin(data)
    assert list(res) == []

    # nothing
    res = roundrobin()
    assert list(res) == []
예제 #2
0
def test_normal_peek():
    """Test roundrobin with peeking at iterable."""
    # three tuples of different sizes
    data1, data2, data3 = iter('ABC'), iter('DE'), iter('FG')
    res = roundrobin(data1, data2, data3)
    assert list(islice(res, 3)) == ['A', 'D', 'F']
    assert next(data1) == 'B'
    assert list(res) == ['C', 'E', 'G']
    assert list(data1) == []
    assert list(data2) == []
    assert list(data3) == []

    # three tuples of different sizes in ascending order
    data1, data2, data3 = iter('A'), iter('BC'), iter('DEF')
    res = roundrobin(data1, data2, data3)
    assert next(res) == 'A'
    assert next(data2) == 'B'
    assert list(res) == ['C', 'D', 'E', 'F']
    assert list(data1) == []
    assert list(data2) == []
    assert list(data3) == []

    # one tuple
    data = iter('ABC')
    res = roundrobin(data)
    assert next(res) == 'A'
    assert next(data) == 'B'
    assert list(res) == ['C']
    assert list(data) == []