|
@@ -68,6 +68,7 @@ bottom = [
|
|
action_language = [
|
|
action_language = [
|
|
"model",
|
|
"model",
|
|
"instantiate_model", "2", "1",
|
|
"instantiate_model", "2", "1",
|
|
|
|
+ "instantiate_node", "2", "Class", "Element",
|
|
"instantiate_node", "2", "Class", "Action",
|
|
"instantiate_node", "2", "Class", "Action",
|
|
"instantiate_node", "2", "Class", "Statement",
|
|
"instantiate_node", "2", "Class", "Statement",
|
|
"instantiate_node", "2", "Class", "Expression",
|
|
"instantiate_node", "2", "Class", "Expression",
|
|
@@ -111,55 +112,68 @@ action_language = [
|
|
"instantiate_link", "2", "Inheritance", "", "access", "Expression",
|
|
"instantiate_link", "2", "Inheritance", "", "access", "Expression",
|
|
"instantiate_link", "2", "Inheritance", "", "constant", "Expression",
|
|
"instantiate_link", "2", "Inheritance", "", "constant", "Expression",
|
|
"instantiate_link", "2", "Inheritance", "", "input", "Expression",
|
|
"instantiate_link", "2", "Inheritance", "", "input", "Expression",
|
|
|
|
+ "instantiate_link", "2", "Inheritance", "", "Natural", "Element",
|
|
|
|
+ "instantiate_link", "2", "Inheritance", "", "String", "Element",
|
|
|
|
+ "instantiate_link", "2", "Inheritance", "", "Boolean", "Element",
|
|
|
|
|
|
- "model_define_attribute", "2", "Statement", "next", True, "Statement",
|
|
|
|
- "model_define_attribute", "2", "if", "cond", False, "Expression",
|
|
|
|
- "model_define_attribute", "2", "if", "then", False, "Statement",
|
|
|
|
- "model_define_attribute", "2", "if", "else", True, "Statement",
|
|
|
|
- "model_define_attribute", "2", "while", "cond", False, "Expression",
|
|
|
|
- "model_define_attribute", "2", "while", "body", False, "Statement",
|
|
|
|
- "model_define_attribute", "2", "assign", "var", False, "resolve",
|
|
|
|
- "model_define_attribute", "2", "assign", "value", False, "Expression",
|
|
|
|
- "model_define_attribute", "2", "break", "while", False, "while",
|
|
|
|
- "model_define_attribute", "2", "continue", "while", False, "while",
|
|
|
|
- "model_define_attribute", "2", "return", "value", True, "Expression",
|
|
|
|
- "model_define_attribute", "2", "resolve", "var", False, "PrimitiveType",
|
|
|
|
- "model_define_attribute", "2", "access", "var", False, "resolve",
|
|
|
|
- "model_define_attribute", "2", "constant", "node", False, "PrimitiveType",
|
|
|
|
- "model_define_attribute", "2", "output", "node", False, "Expression",
|
|
|
|
- "model_define_attribute", "2", "global", "var", False, "String",
|
|
|
|
- "model_define_attribute", "2", "param", "name", False, "String",
|
|
|
|
- "model_define_attribute", "2", "param", "value", False, "Expression",
|
|
|
|
- "model_define_attribute", "2", "param", "next_param", True, "param",
|
|
|
|
- "model_define_attribute", "2", "funcdef", "body", False, "Statement",
|
|
|
|
- "model_define_attribute", "2", "call", "func", False, "Expression",
|
|
|
|
- "model_define_attribute", "2", "call", "params", True, "param",
|
|
|
|
- "model_define_attribute", "2", "call", "last_param", True, "param",
|
|
|
|
-
|
|
|
|
- # TODO these Strings are actually supposed to be more restricted!
|
|
|
|
- "model_define_attribute", "2", "Statement_next", "name", False, "String",
|
|
|
|
- "model_define_attribute", "2", "if_cond", "name", False, "String",
|
|
|
|
- "model_define_attribute", "2", "if_then", "name", False, "String",
|
|
|
|
- "model_define_attribute", "2", "if_else", "name", False, "String",
|
|
|
|
- "model_define_attribute", "2", "while_cond", "name", False, "String",
|
|
|
|
- "model_define_attribute", "2", "while_body", "name", False, "String",
|
|
|
|
- "model_define_attribute", "2", "assign_var", "name", False, "String",
|
|
|
|
- "model_define_attribute", "2", "assign_value", "name", False, "String",
|
|
|
|
- "model_define_attribute", "2", "break_while", "name", False, "String",
|
|
|
|
- "model_define_attribute", "2", "continue_while", "name", False, "String",
|
|
|
|
- "model_define_attribute", "2", "return_value", "name", False, "String",
|
|
|
|
- "model_define_attribute", "2", "resolve_var", "name", False, "String",
|
|
|
|
- "model_define_attribute", "2", "access_var", "name", False, "String",
|
|
|
|
- "model_define_attribute", "2", "constant_node", "name", False, "String",
|
|
|
|
- "model_define_attribute", "2", "output_node", "name", False, "String",
|
|
|
|
- "model_define_attribute", "2", "global_var", "name", False, "String",
|
|
|
|
- "model_define_attribute", "2", "param_name", "name", False, "String",
|
|
|
|
- "model_define_attribute", "2", "param_value", "name", False, "String",
|
|
|
|
- "model_define_attribute", "2", "param_next_param", "name", False, "String",
|
|
|
|
- "model_define_attribute", "2", "funcdef_body", "name", False, "String",
|
|
|
|
- "model_define_attribute", "2", "call_func", "name", False, "String",
|
|
|
|
- "model_define_attribute", "2", "call_params", "name", False, "String",
|
|
|
|
- "model_define_attribute", "2", "call_last_param", "name", False, "String",
|
|
|
|
|
|
+ "instantiate_link", "2", "Association", "dict_link", "Any", "Any",
|
|
|
|
+ "model_define_attribute", "2", "dict_link", "name", False, "String",
|
|
|
|
+ "instantiate_attribute", "2", "dict_link", "target_upper_cardinality", 1,
|
|
|
|
+
|
|
|
|
+ "instantiate_link", "2", "Association", "Statement_next", "Statement", "Statement",
|
|
|
|
+ "instantiate_link", "2", "Association", "if_cond", "if", "Expression",
|
|
|
|
+ "instantiate_link", "2", "Association", "if_then", "if", "Statement",
|
|
|
|
+ "instantiate_link", "2", "Association", "if_else", "if", "Statement",
|
|
|
|
+ "instantiate_link", "2", "Association", "while_cond", "while", "Expression",
|
|
|
|
+ "instantiate_link", "2", "Association", "while_body", "while", "Statement",
|
|
|
|
+ "instantiate_link", "2", "Association", "assign_var", "assign", "resolve",
|
|
|
|
+ "instantiate_link", "2", "Association", "assign_value", "assign", "Expression",
|
|
|
|
+ "instantiate_link", "2", "Association", "break_while", "break", "while",
|
|
|
|
+ "instantiate_link", "2", "Association", "continue_while", "continue", "while",
|
|
|
|
+ "instantiate_link", "2", "Association", "return_value", "return", "Expression",
|
|
|
|
+ "instantiate_link", "2", "Association", "resolve_var", "resolve", "Element",
|
|
|
|
+ "instantiate_link", "2", "Association", "access_var", "access", "resolve",
|
|
|
|
+ "instantiate_link", "2", "Association", "constant_node", "constant", "Element",
|
|
|
|
+ "instantiate_link", "2", "Association", "output_node", "output", "Expression",
|
|
|
|
+ "instantiate_link", "2", "Association", "global_var", "global", "String",
|
|
|
|
+ "instantiate_link", "2", "Association", "param_name", "param", "String",
|
|
|
|
+ "instantiate_link", "2", "Association", "param_value", "param", "Expression",
|
|
|
|
+ "instantiate_link", "2", "Association", "param_next_param", "param", "param",
|
|
|
|
+ "instantiate_link", "2", "Association", "funcdef_body", "funcdef", "Statement",
|
|
|
|
+ "instantiate_link", "2", "Association", "call_func", "call", "Expression",
|
|
|
|
+ "instantiate_link", "2", "Association", "call_params", "call", "param",
|
|
|
|
+ "instantiate_link", "2", "Association", "call_last_param", "call", "param",
|
|
|
|
+
|
|
|
|
+ "instantiate_link", "2", "Inheritance", "", "Statement_next", "dict_link",
|
|
|
|
+ "instantiate_link", "2", "Inheritance", "", "if_cond", "dict_link",
|
|
|
|
+ "instantiate_link", "2", "Inheritance", "", "if_then", "dict_link",
|
|
|
|
+ "instantiate_link", "2", "Inheritance", "", "if_else", "dict_link",
|
|
|
|
+ "instantiate_link", "2", "Inheritance", "", "while_cond", "dict_link",
|
|
|
|
+ "instantiate_link", "2", "Inheritance", "", "while_body", "dict_link",
|
|
|
|
+ "instantiate_link", "2", "Inheritance", "", "assign_var", "dict_link",
|
|
|
|
+ "instantiate_link", "2", "Inheritance", "", "assign_value", "dict_link",
|
|
|
|
+ "instantiate_link", "2", "Inheritance", "", "break_while", "dict_link",
|
|
|
|
+ "instantiate_link", "2", "Inheritance", "", "continue_while", "dict_link",
|
|
|
|
+ "instantiate_link", "2", "Inheritance", "", "return_value", "dict_link",
|
|
|
|
+ "instantiate_link", "2", "Inheritance", "", "resolve_var", "dict_link",
|
|
|
|
+ "instantiate_link", "2", "Inheritance", "", "access_var", "dict_link",
|
|
|
|
+ "instantiate_link", "2", "Inheritance", "", "constant_node", "dict_link",
|
|
|
|
+ "instantiate_link", "2", "Inheritance", "", "output_node", "dict_link",
|
|
|
|
+ "instantiate_link", "2", "Inheritance", "", "global_var", "dict_link",
|
|
|
|
+ "instantiate_link", "2", "Inheritance", "", "param_name", "dict_link",
|
|
|
|
+ "instantiate_link", "2", "Inheritance", "", "param_value", "dict_link",
|
|
|
|
+ "instantiate_link", "2", "Inheritance", "", "param_next_param", "dict_link",
|
|
|
|
+ "instantiate_link", "2", "Inheritance", "", "funcdef_body", "dict_link",
|
|
|
|
+ "instantiate_link", "2", "Inheritance", "", "call_func", "dict_link",
|
|
|
|
+ "instantiate_link", "2", "Inheritance", "", "call_params", "dict_link",
|
|
|
|
+ "instantiate_link", "2", "Inheritance", "", "call_last_param", "dict_link",
|
|
|
|
+
|
|
|
|
+ "instantiate_attribute", "2", "Statement_next", "target_lower_cardinality", 1,
|
|
|
|
+ "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,
|
|
|
|
|
|
"model_define_attribute", "2", "Element", "constraint", True, "funcdef",
|
|
"model_define_attribute", "2", "Element", "constraint", True, "funcdef",
|
|
"model_define_attribute", "2", "AttributeValue", "to_string", True, "funcdef",
|
|
"model_define_attribute", "2", "AttributeValue", "to_string", True, "funcdef",
|
|
@@ -244,16 +258,17 @@ instantiate_example = [
|
|
"instantiate_node", "2", "Class", "B",
|
|
"instantiate_node", "2", "Class", "B",
|
|
"instantiate_node", "2", "SimpleAttribute", "C",
|
|
"instantiate_node", "2", "SimpleAttribute", "C",
|
|
"instantiate_link", "2", "Inheritance", "b_inherits_a", "B", "A",
|
|
"instantiate_link", "2", "Inheritance", "b_inherits_a", "B", "A",
|
|
- "instantiate_link", "2", "Association", "a_to_b", "A", "B",
|
|
|
|
|
|
+ "instantiate_link", "2", "Association", "A_to_B", "A", "B",
|
|
"model_define_attribute", "2", "A", "tokens", False, "C",
|
|
"model_define_attribute", "2", "A", "tokens", False, "C",
|
|
"export_node", "2", "models/example_MM",
|
|
"export_node", "2", "models/example_MM",
|
|
"exit",
|
|
"exit",
|
|
"model",
|
|
"model",
|
|
"instantiate_model", "2", "3",
|
|
"instantiate_model", "2", "3",
|
|
"instantiate_node", "3", "A", "a",
|
|
"instantiate_node", "3", "A", "a",
|
|
- "instantiate_link", "3", "a_to_b", "a", "b",
|
|
|
|
"instantiate_node", "3", "B", "b",
|
|
"instantiate_node", "3", "B", "b",
|
|
- "instantiate_attribute", "3", "a", "tokens", "c",
|
|
|
|
|
|
+ "instantiate_link", "3", "A_to_B", "a_to_b", "a", "b",
|
|
|
|
+ "instantiate_attribute", "3", "a", "tokens", 123,
|
|
|
|
+ "instantiate_attribute", "3", "b", "tokens", 234,
|
|
"export_node", "3", "models/example_M",
|
|
"export_node", "3", "models/example_M",
|
|
"exit",
|
|
"exit",
|
|
]
|
|
]
|
|
@@ -274,24 +289,18 @@ def conformance_call(operation, model, metamodel):
|
|
is_direct_instance = \
|
|
is_direct_instance = \
|
|
conformance_call("is_direct_instance", "a", "A") + \
|
|
conformance_call("is_direct_instance", "a", "A") + \
|
|
conformance_call("is_direct_instance", "b", "A") + \
|
|
conformance_call("is_direct_instance", "b", "A") + \
|
|
- conformance_call("is_direct_instance", "c", "A") + \
|
|
|
|
conformance_call("is_direct_instance", "a", "B") + \
|
|
conformance_call("is_direct_instance", "a", "B") + \
|
|
conformance_call("is_direct_instance", "b", "B") + \
|
|
conformance_call("is_direct_instance", "b", "B") + \
|
|
- conformance_call("is_direct_instance", "c", "B") + \
|
|
|
|
conformance_call("is_direct_instance", "a", "C") + \
|
|
conformance_call("is_direct_instance", "a", "C") + \
|
|
- conformance_call("is_direct_instance", "b", "C") + \
|
|
|
|
- conformance_call("is_direct_instance", "c", "C")
|
|
|
|
|
|
+ conformance_call("is_direct_instance", "b", "C")
|
|
|
|
|
|
is_nominal_instance = \
|
|
is_nominal_instance = \
|
|
conformance_call("is_nominal_instance", "a", "A") + \
|
|
conformance_call("is_nominal_instance", "a", "A") + \
|
|
conformance_call("is_nominal_instance", "b", "A") + \
|
|
conformance_call("is_nominal_instance", "b", "A") + \
|
|
- conformance_call("is_nominal_instance", "c", "A") + \
|
|
|
|
conformance_call("is_nominal_instance", "a", "B") + \
|
|
conformance_call("is_nominal_instance", "a", "B") + \
|
|
conformance_call("is_nominal_instance", "b", "B") + \
|
|
conformance_call("is_nominal_instance", "b", "B") + \
|
|
- conformance_call("is_nominal_instance", "c", "B") + \
|
|
|
|
conformance_call("is_nominal_instance", "a", "C") + \
|
|
conformance_call("is_nominal_instance", "a", "C") + \
|
|
- conformance_call("is_nominal_instance", "b", "C") + \
|
|
|
|
- conformance_call("is_nominal_instance", "c", "C")
|
|
|
|
|
|
+ conformance_call("is_nominal_instance", "b", "C")
|
|
|
|
|
|
def conformance_check(node):
|
|
def conformance_check(node):
|
|
return [
|
|
return [
|
|
@@ -335,14 +344,14 @@ class TestConstructorsModels(unittest.TestCase):
|
|
|
|
|
|
def test_constructors_is_direct_instance(self):
|
|
def test_constructors_is_direct_instance(self):
|
|
commands = bottom + instantiate_example + is_direct_instance + ["return", False]
|
|
commands = bottom + instantiate_example + is_direct_instance + ["return", False]
|
|
- expected = [True, False, False,
|
|
|
|
- False, True, False,
|
|
|
|
- False, False, True]
|
|
|
|
|
|
+ expected = [True, False,
|
|
|
|
+ False, True,
|
|
|
|
+ False, False]
|
|
self.assertTrue(run_barebone(commands, expected, 1))
|
|
self.assertTrue(run_barebone(commands, expected, 1))
|
|
|
|
|
|
def test_constructors_is_nominal_instance(self):
|
|
def test_constructors_is_nominal_instance(self):
|
|
commands = bottom + instantiate_example + is_nominal_instance + ["return", False]
|
|
commands = bottom + instantiate_example + is_nominal_instance + ["return", False]
|
|
- expected = [True, True, False,
|
|
|
|
- False, True, False,
|
|
|
|
- False, False, True]
|
|
|
|
|
|
+ expected = [True, True,
|
|
|
|
+ False, True,
|
|
|
|
+ False, False]
|
|
self.assertTrue(run_barebone(commands, expected, 1))
|
|
self.assertTrue(run_barebone(commands, expected, 1))
|