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']
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']
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']
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']
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']
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']