def test_dataflow_evaluation_no_input_two_outputs(): df = DataFlow() vid = df.add_vertex() pid0 = df.add_out_port(vid, "out1") df.set_actor(vid, FuncNode({}, {}, double_fixed_function)) dfs = DataflowState(df) env = 0 algo = BruteEvaluation(df) algo.eval(env, dfs, vid) assert tuple(dfs.get_data(pid0)) == (5, 5) algo.clear() dfs.reinit() pid1 = df.add_out_port(vid, "out2") algo.eval(env, dfs, vid) assert dfs.get_data(pid0) == 5 assert dfs.get_data(pid1) == 5 algo.clear() dfs.reinit() pid2 = df.add_out_port(vid, "out3") assert_raises(UserWarning, lambda: algo.eval(env, dfs, vid))
def test_dataflow_state_get_data(): df = DataFlow() vid1 = df.add_vertex() pid10 = df.add_in_port(vid1, "in") pid11 = df.add_out_port(vid1, "out") vid2 = df.add_vertex() pid21 = df.add_out_port(vid2, "out") vid5 = df.add_vertex() pid51 = df.add_out_port(vid5, "out") vid3 = df.add_vertex() pid31 = df.add_in_port(vid3, "in1") pid32 = df.add_in_port(vid3, "in2") pid33 = df.add_out_port(vid3, "res") vid4 = df.add_vertex() pid41 = df.add_in_port(vid4, "in") df.connect(pid11, pid31) df.connect(pid21, pid32) df.connect(pid33, pid41) df.connect(pid51, pid32) dfs = DataflowState(df) for pid in df.ports(): raises(KeyError, lambda: dfs.get_data(pid)) for i, pid in enumerate([pid11, pid21, pid33, pid51]): dfs.set_data(pid, i) raises(KeyError, lambda: dfs.get_data(pid10)) dfs.set_data(pid10, 'a') assert dfs.get_data(pid10) == 'a' for i, pid in enumerate([pid11, pid21, pid33, pid51]): assert dfs.get_data(pid) == i assert dfs.get_data(pid31) == 0 assert tuple(dfs.get_data(pid32)) == (1, 3) assert dfs.get_data(pid41) == 2 n2 = Node() df.set_actor(vid2, n2) assert tuple(dfs.get_data(pid32)) == (1, 3) n5 = Node() df.set_actor(vid5, n5) assert tuple(dfs.get_data(pid32)) == (1, 3) n2.get_ad_hoc_dict().set_metadata('position', [10, 0]) n5.get_ad_hoc_dict().set_metadata('position', [0, 0]) assert tuple(dfs.get_data(pid32)) == (3, 1)
def test_dataflow_state_get_data(): df = DataFlow() vid1 = df.add_vertex() pid10 = df.add_in_port(vid1, "in") pid11 = df.add_out_port(vid1, "out") vid2 = df.add_vertex() pid21 = df.add_out_port(vid2, "out") vid5 = df.add_vertex() pid51 = df.add_out_port(vid5, "out") vid3 = df.add_vertex() pid31 = df.add_in_port(vid3, "in1") pid32 = df.add_in_port(vid3, "in2") pid33 = df.add_out_port(vid3, "res") vid4 = df.add_vertex() pid41 = df.add_in_port(vid4, "in") df.connect(pid11, pid31) df.connect(pid21, pid32) df.connect(pid33, pid41) df.connect(pid51, pid32) dfs = DataflowState(df) for pid in df.ports(): assert_raises(KeyError, lambda: dfs.get_data(pid)) for i, pid in enumerate([pid11, pid21, pid33, pid51]): dfs.set_data(pid, i) assert_raises(KeyError, lambda: dfs.get_data(pid10)) dfs.set_data(pid10, 'a') assert dfs.get_data(pid10) == 'a' for i, pid in enumerate([pid11, pid21, pid33, pid51]): assert dfs.get_data(pid) == i assert dfs.get_data(pid31) == 0 assert tuple(dfs.get_data(pid32)) == (1, 3) assert dfs.get_data(pid41) == 2 n2 = Node() df.set_actor(vid2, n2) assert tuple(dfs.get_data(pid32)) == (1, 3) n5 = Node() df.set_actor(vid5, n5) assert tuple(dfs.get_data(pid32)) == (1, 3) n2.get_ad_hoc_dict().set_metadata('position', [10, 0]) n5.get_ad_hoc_dict().set_metadata('position', [0, 0]) assert tuple(dfs.get_data(pid32)) == (3, 1)
def test_dataflow_state_reinit(): df = DataFlow() vid1 = df.add_vertex() pid10 = df.add_in_port(vid1, "in") pid11 = df.add_out_port(vid1, "out") vid2 = df.add_vertex() pid21 = df.add_out_port(vid2, "out") vid3 = df.add_vertex() pid31 = df.add_in_port(vid3, "in1") pid32 = df.add_in_port(vid3, "in2") pid33 = df.add_out_port(vid3, "res") vid4 = df.add_vertex() pid41 = df.add_in_port(vid4, "in") df.connect(pid11, pid31) df.connect(pid21, pid32) df.connect(pid33, pid41) dfs = DataflowState(df) dfs.set_data(pid10, 0) for i, pid in enumerate([pid11, pid21, pid33]): dfs.set_data(pid, i) dfs.reinit() assert dfs.is_ready_for_evaluation() for pid in (pid11, pid21, pid33): raises(KeyError, lambda: dfs.get_data(pid))
def test_dataflow_state_reinit(): df = DataFlow() vid1 = df.add_vertex() pid10 = df.add_in_port(vid1, "in") pid11 = df.add_out_port(vid1, "out") vid2 = df.add_vertex() pid21 = df.add_out_port(vid2, "out") vid3 = df.add_vertex() pid31 = df.add_in_port(vid3, "in1") pid32 = df.add_in_port(vid3, "in2") pid33 = df.add_out_port(vid3, "res") vid4 = df.add_vertex() pid41 = df.add_in_port(vid4, "in") df.connect(pid11, pid31) df.connect(pid21, pid32) df.connect(pid33, pid41) dfs = DataflowState(df) dfs.set_data(pid10, 0) for i, pid in enumerate([pid11, pid21, pid33]): dfs.set_data(pid, i) dfs.reinit() assert dfs.is_ready_for_evaluation() for pid in (pid11, pid21, pid33): assert_raises(KeyError, lambda: dfs.get_data(pid))
def test_dataflow_evaluation_single_input_single_output(): df = DataFlow() vid = df.add_vertex() pid0 = df.add_in_port(vid, "in") pid1 = df.add_in_port(vid, "in") pid2 = df.add_out_port(vid, "out") df.set_actor(vid, FuncNode({}, {}, operator.add)) dfs = DataflowState(df) env = 0 algo = BruteEvaluation(df) dfs.set_data(pid0, 1) dfs.set_data(pid1, 2) algo.eval(env, dfs, vid) assert dfs.get_data(pid0) == 1 assert dfs.get_data(pid1) == 2 assert dfs.get_data(pid2) == 3
def test_dataflow_evaluation_single_input_no_output(): df = DataFlow() vid = df.add_vertex() pid0 = df.add_in_port(vid, "in") df.set_actor(vid, FuncNode({}, {}, print)) dfs = DataflowState(df) env = 0 algo = BruteEvaluation(df) dfs.set_data(pid0, 1) algo.eval(env, dfs, vid) assert dfs.get_data(pid0) == 1 df.set_actor(vid, FuncNode({}, {}, int)) dfs.reinit() algo.clear() assert_raises(UserWarning, lambda: algo.eval(env, dfs, vid))
def test_dataflow_evaluation_single_input_no_output(): df = DataFlow() vid = df.add_vertex() pid0 = df.add_in_port(vid, "in") df.set_actor(vid, FuncNode({}, {}, print_func)) dfs = DataflowState(df) env = 0 algo = BruteEvaluation(df) dfs.set_data(pid0, 1) algo.eval(env, dfs, vid) assert dfs.get_data(pid0) == 1 df.set_actor(vid, FuncNode({}, {}, int)) dfs.reinit() algo.clear() assert_raises(UserWarning, lambda: algo.eval(env, dfs, vid))