Browse Source

Fixed problem in AL metamodel

Yentl Van Tendeloo 8 years ago
parent
commit
b3d9913375
3 changed files with 86 additions and 45 deletions
  1. 42 6
      bootstrap/metamodels.alc
  2. 41 6
      integration/test_constructors_models.py
  3. 3 33
      integration/test_mvc.py

+ 42 - 6
bootstrap/metamodels.alc

@@ -201,6 +201,7 @@ Element function create_metamodels():
 	return dict_read(dict_read(read_root(), "__hierarchy"), "models")!
 	return dict_read(dict_read(read_root(), "__hierarchy"), "models")!
 
 
 Void function initialize_AL(scd_location : String, export_location : String):
 Void function initialize_AL(scd_location : String, export_location : String):
+	// TODO this should be written in a file-based model and not created like this in the bootstrap
 	Element model
 	Element model
 	Element scd_model
 	Element scd_model
 
 
@@ -263,7 +264,6 @@ Void function initialize_AL(scd_location : String, export_location : String):
 
 
 	instantiate_link(model, "Association", "dict_link", "Action", "Element")
 	instantiate_link(model, "Association", "dict_link", "Action", "Element")
 	model_define_attribute(model, "dict_link", "name", False, "StringAttr")
 	model_define_attribute(model, "dict_link", "name", False, "StringAttr")
-	instantiate_attribute(model, "dict_link", "target_upper_cardinality", 1)
 
 
 	instantiate_link(model, "Association", "Statement_next", "Statement", "Statement")
 	instantiate_link(model, "Association", "Statement_next", "Statement", "Statement")
 	instantiate_link(model, "Association", "if_cond", "if", "Expression")
 	instantiate_link(model, "Association", "if_cond", "if", "Expression")
@@ -312,11 +312,47 @@ Void function initialize_AL(scd_location : String, export_location : String):
 	instantiate_link(model, "Inheritance", "", "call_params", "dict_link")
 	instantiate_link(model, "Inheritance", "", "call_params", "dict_link")
 	instantiate_link(model, "Inheritance", "", "call_last_param", "dict_link")
 	instantiate_link(model, "Inheritance", "", "call_last_param", "dict_link")
 
 
-	instantiate_attribute(model, "if_else", "target_lower_cardinality", 1)
-	instantiate_attribute(model, "return_value", "target_lower_cardinality", 1)
-	instantiate_attribute(model, "param_next_param", "target_lower_cardinality", 1)
-	instantiate_attribute(model, "call_params", "target_lower_cardinality", 1)
-	instantiate_attribute(model, "call_last_param", "target_lower_cardinality", 1)
+	instantiate_attribute(model, "if_cond", "target_lower_cardinality", 1)
+	instantiate_attribute(model, "if_then", "target_lower_cardinality", 1)
+	instantiate_attribute(model, "while_cond", "target_lower_cardinality", 1)
+	instantiate_attribute(model, "while_body", "target_lower_cardinality", 1)
+	instantiate_attribute(model, "assign_var", "target_lower_cardinality", 1)
+	instantiate_attribute(model, "assign_value", "target_lower_cardinality", 1)
+	instantiate_attribute(model, "break_while", "target_lower_cardinality", 1)
+	instantiate_attribute(model, "continue_while", "target_lower_cardinality", 1)
+	instantiate_attribute(model, "resolve_var", "target_lower_cardinality", 1)
+	instantiate_attribute(model, "access_var", "target_lower_cardinality", 1)
+	instantiate_attribute(model, "constant_node", "target_lower_cardinality", 1)
+	instantiate_attribute(model, "output_node", "target_lower_cardinality", 1)
+	instantiate_attribute(model, "global_var", "target_lower_cardinality", 1)
+	instantiate_attribute(model, "param_name", "target_lower_cardinality", 1)
+	instantiate_attribute(model, "param_value", "target_lower_cardinality", 1)
+	instantiate_attribute(model, "funcdef_body", "target_lower_cardinality", 1)
+	instantiate_attribute(model, "call_func", "target_lower_cardinality", 1)
+
+	instantiate_attribute(model, "Statement_next", "target_upper_cardinality", 1)
+	instantiate_attribute(model, "if_cond", "target_upper_cardinality", 1)
+	instantiate_attribute(model, "if_then", "target_upper_cardinality", 1)
+	instantiate_attribute(model, "if_else", "target_upper_cardinality", 1)
+	instantiate_attribute(model, "while_cond", "target_upper_cardinality", 1)
+	instantiate_attribute(model, "while_body", "target_upper_cardinality", 1)
+	instantiate_attribute(model, "assign_var", "target_upper_cardinality", 1)
+	instantiate_attribute(model, "assign_value", "target_upper_cardinality", 1)
+	instantiate_attribute(model, "break_while", "target_upper_cardinality", 1)
+	instantiate_attribute(model, "continue_while", "target_upper_cardinality", 1)
+	instantiate_attribute(model, "return_value", "target_upper_cardinality", 1)
+	instantiate_attribute(model, "resolve_var", "target_upper_cardinality", 1)
+	instantiate_attribute(model, "access_var", "target_upper_cardinality", 1)
+	instantiate_attribute(model, "constant_node", "target_upper_cardinality", 1)
+	instantiate_attribute(model, "output_node", "target_upper_cardinality", 1)
+	instantiate_attribute(model, "global_var", "target_upper_cardinality", 1)
+	instantiate_attribute(model, "param_name", "target_upper_cardinality", 1)
+	instantiate_attribute(model, "param_value", "target_upper_cardinality", 1)
+	instantiate_attribute(model, "param_next_param", "target_upper_cardinality", 1)
+	instantiate_attribute(model, "funcdef_body", "target_upper_cardinality", 1)
+	instantiate_attribute(model, "call_func", "target_upper_cardinality", 1)
+	instantiate_attribute(model, "call_params", "target_upper_cardinality", 1)
+	instantiate_attribute(model, "call_last_param", "target_upper_cardinality", 1)
 
 
 	export_node(export_location, model)
 	export_node(export_location, model)
 	return !
 	return !

+ 41 - 6
integration/test_constructors_models.py

@@ -130,7 +130,6 @@ action_language = [
 
 
         "instantiate_link", "2", "Association", "dict_link", "Action", "Element",
         "instantiate_link", "2", "Association", "dict_link", "Action", "Element",
         "model_define_attribute", "2", "dict_link", "name", False, "StringAttr",
         "model_define_attribute", "2", "dict_link", "name", False, "StringAttr",
-        "instantiate_attribute", "2", "dict_link", "target_upper_cardinality", 1,
 
 
         "instantiate_link", "2", "Association", "Statement_next", "Statement", "Statement",
         "instantiate_link", "2", "Association", "Statement_next", "Statement", "Statement",
         "instantiate_link", "2", "Association", "if_cond", "if", "Expression",
         "instantiate_link", "2", "Association", "if_cond", "if", "Expression",
@@ -180,11 +179,47 @@ action_language = [
         "instantiate_link", "2", "Inheritance", "", "call_params", "dict_link",
         "instantiate_link", "2", "Inheritance", "", "call_params", "dict_link",
         "instantiate_link", "2", "Inheritance", "", "call_last_param", "dict_link",
         "instantiate_link", "2", "Inheritance", "", "call_last_param", "dict_link",
 
 
-        "instantiate_attribute", "2", "if_else", "target_lower_cardinality", 1,
-        "instantiate_attribute", "2", "return_value", "target_lower_cardinality", 1,
-        "instantiate_attribute", "2", "param_next_param", "target_lower_cardinality", 1,
-        "instantiate_attribute", "2", "call_params", "target_lower_cardinality", 1,
-        "instantiate_attribute", "2", "call_last_param", "target_lower_cardinality", 1,
+        "instantiate_attribute", "2", "if_cond", "target_lower_cardinality", 1,
+        "instantiate_attribute", "2", "if_then", "target_lower_cardinality", 1,
+        "instantiate_attribute", "2", "while_cond", "target_lower_cardinality", 1,
+        "instantiate_attribute", "2", "while_body", "target_lower_cardinality", 1,
+        "instantiate_attribute", "2", "assign_var", "target_lower_cardinality", 1,
+        "instantiate_attribute", "2", "assign_value", "target_lower_cardinality", 1,
+        "instantiate_attribute", "2", "break_while", "target_lower_cardinality", 1,
+        "instantiate_attribute", "2", "continue_while", "target_lower_cardinality", 1,
+        "instantiate_attribute", "2", "resolve_var", "target_lower_cardinality", 1,
+        "instantiate_attribute", "2", "access_var", "target_lower_cardinality", 1,
+        "instantiate_attribute", "2", "constant_node", "target_lower_cardinality", 1,
+        "instantiate_attribute", "2", "output_node", "target_lower_cardinality", 1,
+        "instantiate_attribute", "2", "global_var", "target_lower_cardinality", 1,
+        "instantiate_attribute", "2", "param_name", "target_lower_cardinality", 1,
+        "instantiate_attribute", "2", "param_value", "target_lower_cardinality", 1,
+        "instantiate_attribute", "2", "funcdef_body", "target_lower_cardinality", 1,
+        "instantiate_attribute", "2", "call_func", "target_lower_cardinality", 1,
+
+        "instantiate_attribute", "2", "Statement_next", "target_upper_cardinality", 1,
+        "instantiate_attribute", "2", "if_cond", "target_upper_cardinality", 1,
+        "instantiate_attribute", "2", "if_then", "target_upper_cardinality", 1,
+        "instantiate_attribute", "2", "if_else", "target_upper_cardinality", 1,
+        "instantiate_attribute", "2", "while_cond", "target_upper_cardinality", 1,
+        "instantiate_attribute", "2", "while_body", "target_upper_cardinality", 1,
+        "instantiate_attribute", "2", "assign_var", "target_upper_cardinality", 1,
+        "instantiate_attribute", "2", "assign_value", "target_upper_cardinality", 1,
+        "instantiate_attribute", "2", "break_while", "target_upper_cardinality", 1,
+        "instantiate_attribute", "2", "continue_while", "target_upper_cardinality", 1,
+        "instantiate_attribute", "2", "return_value", "target_upper_cardinality", 1,
+        "instantiate_attribute", "2", "resolve_var", "target_upper_cardinality", 1,
+        "instantiate_attribute", "2", "access_var", "target_upper_cardinality", 1,
+        "instantiate_attribute", "2", "constant_node", "target_upper_cardinality", 1,
+        "instantiate_attribute", "2", "output_node", "target_upper_cardinality", 1,
+        "instantiate_attribute", "2", "global_var", "target_upper_cardinality", 1,
+        "instantiate_attribute", "2", "param_name", "target_upper_cardinality", 1,
+        "instantiate_attribute", "2", "param_value", "target_upper_cardinality", 1,
+        "instantiate_attribute", "2", "param_next_param", "target_upper_cardinality", 1,
+        "instantiate_attribute", "2", "funcdef_body", "target_upper_cardinality", 1,
+        "instantiate_attribute", "2", "call_func", "target_upper_cardinality", 1,
+        "instantiate_attribute", "2", "call_params", "target_upper_cardinality", 1,
+        "instantiate_attribute", "2", "call_last_param", "target_upper_cardinality", 1,
 
 
         "export_node", "2", "models/ActionLanguage_new",
         "export_node", "2", "models/ActionLanguage_new",
         "exit",
         "exit",

+ 3 - 33
integration/test_mvc.py

@@ -1468,20 +1468,10 @@ class TestModelverseCore(unittest.TestCase):
                     "description_model",
                     "description_model",
                     ] + get_model_constructor(open("models/description_model.mvc", "r").read()) + [
                     ] + get_model_constructor(open("models/description_model.mvc", "r").read()) + [
                 "model_list",
                 "model_list",
-                "model_modify",
-                "Control_PW",
-                "nice_list",
-                "exit",
-
-                "model_modify",
-                "control_model",
-                "nice_list",
-                "exit",
-                "exit",
+                "verify",
+                "Control_PW"
             ],
             ],
-            None))
-
-    (([   # bootup phase
+            [   # bootup phase
                 "Desired username for admin user?",
                 "Desired username for admin user?",
                 "Desired password for admin user?",
                 "Desired password for admin user?",
                 "Please repeat the password",
                 "Please repeat the password",
@@ -1547,24 +1537,4 @@ class TestModelverseCore(unittest.TestCase):
                 "Which model to verify?",
                 "Which model to verify?",
                 "OK",
                 "OK",
                 "Ready for command...",
                 "Ready for command...",
-                # verify
-                "Which model to verify?",
-                "OK",
-                "Ready for command...",
-                # verify
-                "Which model to verify?",
-                "OK",
-                "Ready for command...",
-                # verify
-                "Which model to verify?",
-                "OK",
-                "Ready for command...",
-                # verify
-                "Which model to verify?",
-                "OK",
-                "Ready for command...",
-                # verify
-                "Which model to verify?",
-                "OK",
-                "Ready for command...",
             ]))
             ]))