예제 #1
0
def test_dataflow_evaluation_eval_init():
    df, (pid_in, pid_out) = get_dataflow()
    algo = BruteEvaluation(df)

    env = 0
    dfs = DataflowState(df)
    assert_raises(UserWarning, lambda: algo.eval(env, dfs))
예제 #2
0
def test_dataflow_evaluation_eval_init():
    df, (pid_in, pid_out) = get_dataflow()
    algo = BruteEvaluation(df)

    env = 0
    dfs = DataflowState(df)
    assert_raises(UserWarning, lambda: algo.eval(env, dfs))
예제 #3
0
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))
예제 #4
0
def test_dataflow_evaluation_eval_no_vid():
    df, (pid_in, pid_out) = get_dataflow()
    algo = BruteEvaluation(df)

    env = 0
    dfs = DataflowState(df)
    dfs.set_data(pid_in, 1)

    assert not dfs.is_valid()
    algo.eval(env, dfs)
    assert dfs.is_valid()
예제 #5
0
def test_dataflow_evaluation_eval_no_vid():
    df, (pid_in, pid_out) = get_dataflow()
    algo = BruteEvaluation(df)

    env = 0
    dfs = DataflowState(df)
    dfs.set_data(pid_in, 1)

    assert not dfs.is_valid()
    algo.eval(env, dfs)
    assert dfs.is_valid()
예제 #6
0
def test_dataflow_evaluation_init():
    df, (pid_in, pid_out) = get_dataflow()
    algo = AbstractEvaluation(df)
    assert_raises(NotImplementedError, lambda: algo.eval(0, None))

    algo = BruteEvaluation(df)
    algo.clear()

    assert len(algo._evaluated) == 0
예제 #7
0
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
예제 #8
0
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
예제 #9
0
def test_dataflow_evaluation_eval_no_vid2():
    df = DataFlow()
    vid0 = df.add_vertex()
    pid0 = df.add_in_port(vid0, "in")
    df.add_out_port(vid0, "out")
    vid1 = df.add_vertex()
    pid1 = df.add_in_port(vid1, "in")
    df.add_out_port(vid1, "out")

    df.set_actor(vid0, FuncNode({}, {}, int))
    df.set_actor(vid1, FuncNode({}, {}, int))

    dfs = DataflowState(df)
    env = 0
    algo = BruteEvaluation(df)

    dfs.set_data(pid0, 0)
    dfs.set_data(pid1, 1)

    assert not dfs.is_valid()
    algo.eval(env, dfs)
    assert dfs.is_valid()
예제 #10
0
def test_dataflow_evaluation_eval_no_vid2():
    df = DataFlow()
    vid0 = df.add_vertex()
    pid0 = df.add_in_port(vid0, "in")
    df.add_out_port(vid0, "out")
    vid1 = df.add_vertex()
    pid1 = df.add_in_port(vid1, "in")
    df.add_out_port(vid1, "out")

    df.set_actor(vid0, FuncNode({}, {}, int))
    df.set_actor(vid1, FuncNode({}, {}, int))

    dfs = DataflowState(df)
    env = 0
    algo = BruteEvaluation(df)

    dfs.set_data(pid0, 0)
    dfs.set_data(pid1, 1)

    assert not dfs.is_valid()
    algo.eval(env, dfs)
    assert dfs.is_valid()
예제 #11
0
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))
예제 #12
0
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))
예제 #13
0
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))