コード例 #1
0
 def test_replace_defs(self):
     string='''
     MACHINE Test
     VARIABLES z, b, x
     INVARIANT x:NAT & z:NAT & b:BOOL
     INITIALISATION x:=2 ; Assign(x+1, z) ; Assign(TRUE, b)
     DEFINITIONS Assign(Expr, VarName) == VarName := Expr;
     END'''
     string_to_file(string, file_name)
     ast_string = file_to_AST_str(file_name)
     root = str_ast_to_python_ast(ast_string)
     
     env = Environment()
     init = root.children[3]
     assert isinstance(init, AInitialisationMachineClause)
     subst = init.children[0]
     assert isinstance(subst.children[1], ADefinitionSubstitution)
     assert isinstance(subst.children[2], ADefinitionSubstitution)
     dh = DefinitionHandler(env, str_ast_to_python_ast)
     dh._save_definitions(root.children[4])
     def_free_ast = dh._replace_definitions(root)
     assert isinstance(subst.children[1], AAssignSubstitution)
     assert isinstance(subst.children[2], AAssignSubstitution)