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
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
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)
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