Exemple #1
0
def _test_wrap_in_loop(body_src, expected_src, format_kwds={}, expected_bindings={}):
    gen_sym = GenSym.for_tree()

    body_nodes = ast.parse(unindent(body_src)).body

    return_name = '_return_val'

    gen_sym, inlined_body, new_bindings = _wrap_in_loop(gen_sym, body_nodes, return_name)

    expected_body = ast.parse(unindent(expected_src.format(
        return_val=return_name, **format_kwds))).body

    assert_ast_equal(inlined_body, expected_body)

    assert new_bindings == expected_bindings
Exemple #2
0
def _test_replace_returns(source, expected_source, expected_returns_ctr, expected_returns_in_loops):

    nodes = ast.parse(unindent(source)).body

    return_var = 'return_var'
    return_flag_var = 'return_flag'

    expected_source = expected_source.format(
        return_var=return_var, return_flag=return_flag_var)
    expected_nodes = ast.parse(unindent(expected_source)).body

    new_nodes, returns_ctr, returns_in_loops = _replace_returns(
        nodes, return_var, return_flag_var)

    assert_ast_equal(new_nodes, expected_nodes)
    assert returns_ctr == expected_returns_ctr
    assert returns_in_loops == expected_returns_in_loops
Exemple #3
0
def _test_build_parameter_assignments(call_str, signature_str, expected_assignments):

    call_node = ast.parse("func(" + call_str + ")").body[0].value
    signature_node = ast.parse("def func(" + signature_str + "):\n\tpass").body[0]

    assignments = _build_parameter_assignments(call_node, signature_node)

    expected_assignments = ast.parse(unindent(expected_assignments)).body

    assert_ast_equal(assignments, expected_assignments)
Exemple #4
0
def _test_replace_returns(source, expected_source, expected_returns_ctr, expected_returns_in_loops):

    nodes = ast.parse(unindent(source)).body

    true_val = 'true_val'
    return_var = 'return_var'
    return_flag_var = 'return_flag'

    expected_source = expected_source.format(
        return_var=return_var, return_flag=return_flag_var, true_val='true_val')
    expected_nodes = ast.parse(unindent(expected_source)).body

    true_node = ast.Name(true_val, ast.Load())
    new_nodes, returns_ctr, returns_in_loops = _replace_returns(
        nodes, return_var, return_flag_var, true_node)

    assert_ast_equal(new_nodes, expected_nodes)
    assert returns_ctr == expected_returns_ctr
    assert returns_in_loops == expected_returns_in_loops