def test_graph_topological_sort(): g = Graph() g.add_chain( sentinel.a1, sentinel.a2, sentinel.a3, _input=None, _output=None, ) assert g.topologically_sorted_indexes == (0, 1, 2) assert g[0] == sentinel.a1 assert g[1] == sentinel.a2 assert g[2] == sentinel.a3 g.add_chain( sentinel.b1, sentinel.b2, _output=sentinel.a2, ) assert g.topologically_sorted_indexes[-2:] == (1, 2) assert g.topologically_sorted_indexes.index( 3) < g.topologically_sorted_indexes.index(4) assert g[3] == sentinel.b1 assert g[4] == sentinel.b2
def test_simple_execution_context(): graph = Graph() graph.add_chain(*chain) context = GraphExecutionContext(graph) assert len(context.nodes) == len(chain) assert not len(context.plugins) for i, node in enumerate(chain): assert context[i].wrapped is node assert not context.alive assert not context.started assert not context.stopped context.write(BEGIN, (), END) assert not context.alive assert not context.started assert not context.stopped context.start() assert context.alive assert context.started assert not context.stopped context.stop() assert not context.alive assert context.started assert context.stopped
def test_simple_execution_context(): graph = Graph() graph.add_chain(*chain) ctx = GraphExecutionContext(graph) assert len(ctx.nodes) == len(chain) assert not len(ctx.plugins) for i, node in enumerate(chain): assert ctx[i].wrapped is node assert not ctx.alive assert not ctx.started assert not ctx.stopped ctx.recv(BEGIN, Bag(), END) assert not ctx.alive assert not ctx.started assert not ctx.stopped ctx.start() assert ctx.alive assert ctx.started assert not ctx.stopped ctx.stop() assert not ctx.alive assert ctx.started assert ctx.stopped
def test_graph_topological_sort(): g = Graph() g.add_chain( sentinel.a1, sentinel.a2, sentinel.a3, _input=None, _output=None, ) assert g.topologically_sorted_indexes == (0, 1, 2) assert g[0] == sentinel.a1 assert g[1] == sentinel.a2 assert g[2] == sentinel.a3 g.add_chain( sentinel.b1, sentinel.b2, _output=sentinel.a2, ) assert g.topologically_sorted_indexes[-2:] == (1, 2) assert g.topologically_sorted_indexes.index(3) < g.topologically_sorted_indexes.index(4) assert g[3] == sentinel.b1 assert g[4] == sentinel.b2
def test_execution(): graph = Graph() graph.add_chain(*chain) strategy = NaiveStrategy() ctx = strategy.execute(graph) assert ctx.results == [1, 4, 9, 16, 25, 36, 49, 64, 81]
def test_graph_add_chain(): g = Graph() assert len(g.nodes) == 0 g.add_chain(identity, identity, identity) assert len(g.nodes) == 3 assert len(g.outputs_of(BEGIN)) == 1
def test_copy(): g1 = Graph() g2 = g1.copy() assert g1 is not g2 assert len(g1) == 0 assert len(g2) == 0 g1.add_chain([]) assert len(g1) == 1 assert len(g2) == 0 g2.add_chain([], identity) assert len(g1) == 1 assert len(g2) == 2