瀏覽代碼

Merge branch 'testing' into MvK_rules

Yentl Van Tendeloo 7 年之前
父節點
當前提交
290f42ea21

+ 8 - 6
bootstrap/bootstrap.py

@@ -134,12 +134,14 @@ def bootstrap():
                             f.write("Node _func_params_%s()\n" % (param_encoding))
 
                             f.write('Node _name_%s("%s")\n' % (param_encoding, parameter_names[number]))
-                            f.write("Edge _param_link_%s(_func_params_%s, _func_params_%s)\n" % (param_encoding, function, param_encoding))
-                            f.write("Edge _param_link_str_%s(_param_link_%s, _name_%s)\n" % (param_encoding, param_encoding, param_encoding))
-
-                            f.write('Node _name_str_%s("name")\n' % param_encoding)
-                            f.write("Edge _param_name_%s(_func_params_%s, _name_%s)\n" % (param_encoding, param_encoding, param_encoding))
-                            f.write("Edge _param_name_str_%s(_param_name_%s, _name_str_%s)\n" % (param_encoding, param_encoding, param_encoding))
+                            #f.write("Edge _param_link_%s(_func_params_%s, _func_params_%s)\n" % (param_encoding, function, param_encoding))
+                            #f.write("Edge _param_link_str_%s(_param_link_%s, _name_%s)\n" % (param_encoding, param_encoding, param_encoding))
+                            f.write('Dict (_func_params_%s, "%s", _func_params_%s)\n' % (function, parameter_names[number], param_encoding))
+
+                            #f.write('Node _name_str_%s("name")\n' % param_encoding)
+                            #f.write("Edge _param_name_%s(_func_params_%s, _name_%s)\n" % (param_encoding, param_encoding, param_encoding))
+                            #f.write("Edge _param_name_str_%s(_param_name_%s, _name_str_%s)\n" % (param_encoding, param_encoding, param_encoding))
+                            f.write('Dict (_func_params_%s, "name", _name_%s)\n' % (param_encoding, param_encoding))
 
                 declare_primitive_class('primitives', primitives)
                 declare_primitive_class('jit', jit_primitives)

+ 3 - 2
integration/test_powerwindow.py

@@ -177,16 +177,17 @@ class TestPowerWindow(unittest.TestCase):
             def func(model):
                 import uuid
                 import os
+                import glob
                 nr_operations = 11
                 called = len(os.listdir(".TEST_POWER_WINDOW/"))
                 if (len(os.listdir(".TEST_POWER_WINDOW")) > nr_operations):
                     raise Exception("Seemingly called some operation twice!")
-                elif (len(glob.glob(".TEST_POWER_WINDOW/%s_*" % str(filename))) == 0) or fixed is None:
+                elif (len(glob.glob(".TEST_POWER_WINDOW/%s_*" % str(filename.rsplit("/", 1)[-1]))) == 0) or fixed is None:
                     model_overwrite(model, open(filename, "r").read())
                 else:
                     model_overwrite(model, open(fixed, "r").read())
 
-                open(".TEST_POWER_WINDOW/%s_%s" % str(filename, uuid.uuid4()), 'w').close()
+                open(".TEST_POWER_WINDOW/%s_%s" % (filename.rsplit("/", 1)[-1], uuid.uuid4()), 'w').close()
             return func
 
         cb_req = get_function("models/requirements_model.mvc")

+ 6 - 7
kernel/modelverse_kernel/main.py

@@ -190,13 +190,12 @@ class ModelverseKernel(object):
         # execute_jit
         task_frame, =    yield [("RD", [task_root, "frame"])]
         symbols, =       yield [("RD", [task_frame, "symbols"])]
-        all_links, =     yield [("RO", [symbols])]
-        containers =    yield [("RE", [v]) for v in all_links]
-        outgoings =     yield [("RO", [v]) for v in all_links]
-        dict_values =   yield [("RD", [v[1], "value"]) for v in containers]
-        formals_1 =     yield [("RE", [v[0]]) for v in outgoings]
-        dict_keys_ref = yield [("RD", [v[1], "name"]) for v in formals_1]
-        dict_keys =     yield [("RV", [v]) for v in dict_keys_ref]
+        dict_keys_ref, =  yield [("RDK", [symbols])]
+        dict_keys_ref_n =   yield [("RD", [i, "name"]) for i in dict_keys_ref]
+        dict_keys =       yield [("RV", [i]) for i in dict_keys_ref_n]
+        dict_values_elem = yield [("RDN", [symbols, i]) for i in dict_keys_ref]
+        dict_values = yield [("RD", [i, "value"]) for i in dict_values_elem]
+
         parameters = dict(zip(dict_keys, dict_values))
 
         parameters["root"] = self.root

+ 6 - 0
kernel/test/instructions/test_instruction_call.py

@@ -145,6 +145,7 @@ class Testcall(unittest.TestCase):
         t = self.mvs.execute("CE", [self.symbols, self.val_function])
         self.mvs.execute("CE", [t, self.var_function])
         self.mvs.execute("CD", [self.params, "abc", self.var_abc])
+        self.mvs.execute("CD", [self.var_abc, "name", self.value_abc])
 
         ### Execute rules
         self.assertEquals(get_inst(self.root, self.mvs), "call")
@@ -261,6 +262,8 @@ class Testcall(unittest.TestCase):
         self.mvs.execute("CE", [t, self.var_function])
         self.mvs.execute("CD", [self.params, "a", self.var_a])
         self.mvs.execute("CD", [self.params, "b", self.var_b])
+        self.mvs.execute("CD", [self.var_a, "name", self.value_a])
+        self.mvs.execute("CD", [self.var_b, "name", self.value_b])
 
         ### Execute rules
         self.assertEquals(get_inst(self.root, self.mvs), "call")
@@ -398,6 +401,9 @@ class Testcall(unittest.TestCase):
         self.mvs.execute("CD", [self.params, "a", self.var_a])
         self.mvs.execute("CD", [self.params, "b", self.var_b])
         self.mvs.execute("CD", [self.params, "c", self.var_c])
+        self.mvs.execute("CD", [self.var_a, "name", self.value_a])
+        self.mvs.execute("CD", [self.var_b, "name", self.value_b])
+        self.mvs.execute("CD", [self.var_c, "name", self.value_c])
 
         ### Execute rules
         self.assertEquals(get_inst(self.root, self.mvs), "call")

+ 1 - 3
wrappers/classes/modelverse.xml

@@ -428,6 +428,7 @@
                             <transition cond="self.expect_response_partial('Success: ')" target="../send_metadata">
                                 <script>
                                     self.registered_metamodel[self.parameters[0]] = set(self.split_response(self.responses.pop(0))).pop()
+                                    print("Registering " + str(self.parameters[0]))
                                 </script>
                             </transition>
                         </state>
@@ -453,9 +454,6 @@
                                 <raise event="result">
                                     <parameter expr="None"/>
                                 </raise>
-                                <script>
-                                    self.registered_metamodel[self.parameters[0]] = self.parameters[1]
-                                </script>
                             </transition>
                         </state>
                     </state>

+ 2 - 2
wrappers/modelverse_SCCD.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Thu Nov 23 08:59:20 2017
+Date:   Thu Nov 23 13:09:28 2017
 
 Model author: Yentl Van Tendeloo
 Model name:   MvK Server
@@ -2432,6 +2432,7 @@ class Modelverse(RuntimeClassBase):
     
     def _initialized_behaviour_operations_model_overwrite_search_0_exec(self, parameters):
         self.registered_metamodel[self.parameters[0]] = set(self.split_response(self.responses.pop(0))).pop()
+        print("Registering " + str(self.parameters[0]))
     
     def _initialized_behaviour_operations_model_overwrite_search_0_guard(self, parameters):
         return self.expect_response_partial('Success: ')
@@ -2441,7 +2442,6 @@ class Modelverse(RuntimeClassBase):
     
     def _initialized_behaviour_operations_model_overwrite_send_model_0_exec(self, parameters):
         self.raiseInternalEvent(Event("result", None, [None]))
-        self.registered_metamodel[self.parameters[0]] = self.parameters[1]
     
     def _initialized_behaviour_operations_model_overwrite_send_model_0_guard(self, parameters):
         return self.expect_response('Success')