示例#1
0
def test_conductor2(a, b):
    result = []
    sink = to_list(result)

    merger = _merger({'A': sink,
                      'B': sink,
                      })

    tagged_sources = {'A': consume_iterable(_tagger(merger, 'A'), a),
                      'B': consume_iterable(_tagger(merger, 'B'), b),
                      }

    conductor = _conductor(merger, tagged_sources)

    for _ in conductor:
        pass

    assert result == ['a', 'aa', 'c', 'cc', 'd']
示例#2
0
def test_conductor2(a, b):
    result = []
    sink = to_list(result)

    merger = _merger({
        'A': sink,
        'B': sink,
    })

    tagged_sources = {
        'A': consume_iterable(_tagger(merger, 'A'), a),
        'B': consume_iterable(_tagger(merger, 'B'), b),
    }

    conductor = _conductor(merger, tagged_sources)

    for _ in conductor:
        pass

    assert result == ['a', 'aa', 'c', 'cc', 'd']
示例#3
0
def test_conductor(a, b):
    result = []
    sink = to_list(result)

    merger = _merger({
        'A': sink,
        'B': sink,
    })

    tagged_sources = {
        'A': consume_iterable(_tagger(merger, 'A'), a),
        'B': consume_iterable(_tagger(merger, 'B'), b),
    }

    conductor = _conductor(merger, tagged_sources)

    # This ends the first step, all sources are applied.
    item, priority = next(conductor)  # B
    assert item == 'a'
    priority = ['A', 'B']
    assert result == ['a']

    item, priority = next(conductor)
    assert item == 'aa'
    assert priority == ['B', 'A']
    assert result == ['a', 'aa']

    item, priority = next(conductor)
    assert item == 'c'
    assert priority == ['B', 'A']
    assert result == ['a', 'aa', 'c']

    item, priority = next(conductor)
    assert item == 'd'
    assert priority == ['A']
    assert result == ['a', 'aa', 'c', 'cc', 'd']

    with pytest.raises(StopIteration):
        next(conductor)
    assert result == ['a', 'aa', 'c', 'cc', 'd']
示例#4
0
def test_conductor_empty():
    a = ['a']
    b = []
    result = []
    sink = to_list(result)

    merger = _merger({'A': sink,
                      'B': sink,
                      })

    tagged_sources = {'A': consume_iterable(_tagger(merger, 'A'), a),
                      'B': consume_iterable(_tagger(merger, 'B'), b),
                      }

    conductor = _conductor(merger, tagged_sources)

    next(conductor)

    with pytest.raises(StopIteration):
        next(conductor)

    assert result == ['a']
示例#5
0
def test_conductor(a, b):
    result = []
    sink = to_list(result)

    merger = _merger({'A': sink,
                      'B': sink,
                      })

    tagged_sources = {'A': consume_iterable(_tagger(merger, 'A'), a),
                      'B': consume_iterable(_tagger(merger, 'B'), b),
                      }

    conductor = _conductor(merger, tagged_sources)

    # This ends the first step, all sources are applied.
    item, priority = next(conductor)  # B
    assert item == 'a'
    priority = ['A', 'B']
    assert result == ['a']

    item, priority = next(conductor)
    assert item == 'aa'
    assert priority == ['B', 'A']
    assert result == ['a', 'aa']

    item, priority = next(conductor)
    assert item == 'c'
    assert priority == ['B', 'A']
    assert result == ['a', 'aa', 'c']

    item, priority = next(conductor)
    assert item == 'd'
    assert priority == ['A']
    assert result == ['a', 'aa', 'c', 'cc', 'd']

    with pytest.raises(StopIteration):
        next(conductor)
    assert result == ['a', 'aa', 'c', 'cc', 'd']
示例#6
0
def test_conductor_empty():
    a = ['a']
    b = []
    result = []
    sink = to_list(result)

    merger = _merger({
        'A': sink,
        'B': sink,
    })

    tagged_sources = {
        'A': consume_iterable(_tagger(merger, 'A'), a),
        'B': consume_iterable(_tagger(merger, 'B'), b),
    }

    conductor = _conductor(merger, tagged_sources)

    next(conductor)

    with pytest.raises(StopIteration):
        next(conductor)

    assert result == ['a']