|
@@ -0,0 +1,487 @@
|
|
|
+import unittest
|
|
|
+from modelverse_kernel.generated import ModelverseKernel
|
|
|
+from utils import execute_until_finished, MvSWrapper, get_inst, get_phase, get_returnvalue, get_phase_ref
|
|
|
+
|
|
|
+class Testcall(unittest.TestCase):
|
|
|
+ def setUp(self):
|
|
|
+ self.mvs = MvSWrapper()
|
|
|
+ self.root = self.mvs.execute("RR", [])
|
|
|
+ self.mvk = ModelverseKernel(self.root)
|
|
|
+
|
|
|
+ self.task_root = self.mvs.execute("CN", [])
|
|
|
+ self.task_frame = self.mvs.execute("CN", [])
|
|
|
+ self.symbols = self.mvs.execute("CN", [])
|
|
|
+ self.evalstack = self.mvs.execute("CN", [])
|
|
|
+ self.returnvalue = self.mvs.execute("CN", [])
|
|
|
+ self.phase = self.mvs.execute("CNV", ["init"])
|
|
|
+
|
|
|
+ self.mvs.execute("CD", [self.root, "task_1", self.task_root])
|
|
|
+ self.mvs.execute("CD", [self.task_root, "frame", self.task_frame])
|
|
|
+ self.mvs.execute("CD", [self.task_frame, "symbols", self.symbols])
|
|
|
+ self.mvs.execute("CD", [self.task_frame, "evalstack", self.evalstack])
|
|
|
+ self.mvs.execute("CD", [self.task_frame, "phase", self.phase])
|
|
|
+ self.mvs.execute("CD", [self.task_frame, "returnvalue", self.returnvalue])
|
|
|
+
|
|
|
+ def test_no_params(self):
|
|
|
+ """
|
|
|
+ Test the code:
|
|
|
+ def function_A():
|
|
|
+ return
|
|
|
+
|
|
|
+ function_A()
|
|
|
+ a
|
|
|
+ """
|
|
|
+ self.params = self.mvs.execute("CN", [])
|
|
|
+ self.var_function = self.mvs.execute("CN", [])
|
|
|
+ self.signature = self.mvs.execute("CN", [])
|
|
|
+ self.val_function = self.mvs.execute("CN", [])
|
|
|
+
|
|
|
+ self.inst = self.mvs.execute("CNV", [{"value":"call"}])
|
|
|
+ self.access = self.mvs.execute("CNV", [{"value":"access"}])
|
|
|
+ self.resolve = self.mvs.execute("CNV", [{"value":"resolve"}])
|
|
|
+ self.ret = self.mvs.execute("CNV", [{"value":"return"}])
|
|
|
+
|
|
|
+ self.const_a = self.mvs.execute("CNV", [{"value":"constant"}])
|
|
|
+ self.value_a = self.mvs.execute("CNV", ["a"])
|
|
|
+
|
|
|
+ self.mvs.execute("CD", [self.task_frame, "IP", self.inst])
|
|
|
+ self.mvs.execute("CD", [self.inst, "func", self.access])
|
|
|
+ self.mvs.execute("CD", [self.inst, "next", self.const_a])
|
|
|
+ self.mvs.execute("CD", [self.access, "var", self.resolve])
|
|
|
+ self.mvs.execute("CD", [self.resolve, "var", self.var_function])
|
|
|
+ self.mvs.execute("CD", [self.val_function, "value", self.signature])
|
|
|
+ self.mvs.execute("CD", [self.signature, "body", self.ret])
|
|
|
+ self.mvs.execute("CD", [self.signature, "params", self.params])
|
|
|
+ self.mvs.execute("CD", [self.const_a, "node", self.value_a])
|
|
|
+ t = self.mvs.execute("CE", [self.symbols, self.val_function])
|
|
|
+ self.mvs.execute("CE", [t, self.var_function])
|
|
|
+
|
|
|
+ ### Execute rules
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "call")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "init")
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "access")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "init")
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "resolve")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "init")
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "resolve")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "finish")
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "access")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "eval")
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "access")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "finish")
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "call")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "call")
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "return")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "init")
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "call")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "finish")
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "constant")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "init")
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "constant")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "finish")
|
|
|
+ self.assertEquals(get_returnvalue(self.root, self.mvs), "a")
|
|
|
+
|
|
|
+ def test_single_param(self):
|
|
|
+ """
|
|
|
+ Test the code:
|
|
|
+ def function_A(abc):
|
|
|
+ return
|
|
|
+
|
|
|
+ function_A(abc="def")
|
|
|
+ a
|
|
|
+ """
|
|
|
+ self.params = self.mvs.execute("CN", [])
|
|
|
+ self.var_function = self.mvs.execute("CN", [])
|
|
|
+ self.signature = self.mvs.execute("CN", [])
|
|
|
+ self.val_function = self.mvs.execute("CN", [])
|
|
|
+ self.var_abc = self.mvs.execute("CN", [])
|
|
|
+ self.actual_arg = self.mvs.execute("CN", [])
|
|
|
+
|
|
|
+ self.inst = self.mvs.execute("CNV", [{"value":"call"}])
|
|
|
+ self.access = self.mvs.execute("CNV", [{"value":"access"}])
|
|
|
+ self.resolve = self.mvs.execute("CNV", [{"value":"resolve"}])
|
|
|
+ self.ret = self.mvs.execute("CNV", [{"value":"return"}])
|
|
|
+
|
|
|
+ self.const_a = self.mvs.execute("CNV", [{"value":"constant"}])
|
|
|
+ self.const_def = self.mvs.execute("CNV", [{"value":"constant"}])
|
|
|
+ self.value_a = self.mvs.execute("CNV", ["a"])
|
|
|
+ self.value_abc = self.mvs.execute("CNV", ["abc"])
|
|
|
+ self.value_def = self.mvs.execute("CNV", ["def"])
|
|
|
+
|
|
|
+ self.mvs.execute("CD", [self.task_frame, "IP", self.inst])
|
|
|
+ self.mvs.execute("CD", [self.inst, "func", self.access])
|
|
|
+ self.mvs.execute("CD", [self.inst, "next", self.const_a])
|
|
|
+ self.mvs.execute("CD", [self.inst, "params", self.actual_arg])
|
|
|
+ self.mvs.execute("CD", [self.inst, "last_param", self.actual_arg])
|
|
|
+ self.mvs.execute("CD", [self.actual_arg, "value", self.const_def])
|
|
|
+ self.mvs.execute("CD", [self.actual_arg, "name", self.mvs.execute("CNV", ["abc"])])
|
|
|
+ self.mvs.execute("CD", [self.const_def, "node", self.value_def])
|
|
|
+ self.mvs.execute("CD", [self.access, "var", self.resolve])
|
|
|
+ self.mvs.execute("CD", [self.resolve, "var", self.var_function])
|
|
|
+ self.mvs.execute("CD", [self.val_function, "value", self.signature])
|
|
|
+ self.mvs.execute("CD", [self.signature, "body", self.ret])
|
|
|
+ self.mvs.execute("CD", [self.signature, "params", self.params])
|
|
|
+ self.mvs.execute("CD", [self.const_a, "node", self.value_a])
|
|
|
+ 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")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "init")
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "access")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "init")
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "resolve")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "init")
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "resolve")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "finish")
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "access")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "eval")
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "access")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "finish")
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "call")
|
|
|
+ self.assertEquals(get_phase_ref(self.root, self.mvs), self.actual_arg)
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "constant")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "init")
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "constant")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "finish")
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "call")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "call")
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "return")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "init")
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "call")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "finish")
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "constant")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "init")
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "constant")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "finish")
|
|
|
+ self.assertEquals(get_returnvalue(self.root, self.mvs), "a")
|
|
|
+
|
|
|
+ def test_two_params(self):
|
|
|
+ """
|
|
|
+ Test the code:
|
|
|
+ def function_A(a, b):
|
|
|
+ return
|
|
|
+
|
|
|
+ function_A(a="d", b="e")
|
|
|
+ f
|
|
|
+ """
|
|
|
+ self.params = self.mvs.execute("CN", [])
|
|
|
+ self.var_function = self.mvs.execute("CN", [])
|
|
|
+ self.signature = self.mvs.execute("CN", [])
|
|
|
+ self.val_function = self.mvs.execute("CN", [])
|
|
|
+ self.var_a = self.mvs.execute("CN", [])
|
|
|
+ self.var_b = self.mvs.execute("CN", [])
|
|
|
+ self.actual_arg_a = self.mvs.execute("CN", [])
|
|
|
+ self.actual_arg_b = self.mvs.execute("CN", [])
|
|
|
+
|
|
|
+ self.inst = self.mvs.execute("CNV", [{"value":"call"}])
|
|
|
+ self.access = self.mvs.execute("CNV", [{"value":"access"}])
|
|
|
+ self.resolve = self.mvs.execute("CNV", [{"value":"resolve"}])
|
|
|
+ self.ret = self.mvs.execute("CNV", [{"value":"return"}])
|
|
|
+
|
|
|
+ self.const_a = self.mvs.execute("CNV", [{"value":"constant"}])
|
|
|
+ self.const_b = self.mvs.execute("CNV", [{"value":"constant"}])
|
|
|
+ self.const_d = self.mvs.execute("CNV", [{"value":"constant"}])
|
|
|
+ self.const_e = self.mvs.execute("CNV", [{"value":"constant"}])
|
|
|
+ self.const_f = self.mvs.execute("CNV", [{"value":"constant"}])
|
|
|
+ self.value_a = self.mvs.execute("CNV", ["a"])
|
|
|
+ self.value_b = self.mvs.execute("CNV", ["b"])
|
|
|
+ self.value_d = self.mvs.execute("CNV", ["d"])
|
|
|
+ self.value_e = self.mvs.execute("CNV", ["e"])
|
|
|
+ self.value_f = self.mvs.execute("CNV", ["f"])
|
|
|
+
|
|
|
+ self.mvs.execute("CD", [self.task_frame, "IP", self.inst])
|
|
|
+ self.mvs.execute("CD", [self.inst, "func", self.access])
|
|
|
+ self.mvs.execute("CD", [self.inst, "next", self.const_a])
|
|
|
+ self.mvs.execute("CD", [self.inst, "params", self.actual_arg_a])
|
|
|
+ self.mvs.execute("CD", [self.actual_arg_a, "next_param", self.actual_arg_b])
|
|
|
+ self.mvs.execute("CD", [self.inst, "last_param", self.actual_arg_b])
|
|
|
+ self.mvs.execute("CD", [self.actual_arg_a, "value", self.const_d])
|
|
|
+ self.mvs.execute("CD", [self.actual_arg_a, "name", self.mvs.execute("CNV", ["a"])])
|
|
|
+ self.mvs.execute("CD", [self.actual_arg_b, "value", self.const_e])
|
|
|
+ self.mvs.execute("CD", [self.actual_arg_b, "name", self.mvs.execute("CNV", ["b"])])
|
|
|
+ self.mvs.execute("CD", [self.const_a, "node", self.value_a])
|
|
|
+ self.mvs.execute("CD", [self.const_b, "node", self.value_b])
|
|
|
+ self.mvs.execute("CD", [self.const_d, "node", self.value_d])
|
|
|
+ self.mvs.execute("CD", [self.const_e, "node", self.value_e])
|
|
|
+ self.mvs.execute("CD", [self.const_f, "node", self.value_f])
|
|
|
+ self.mvs.execute("CD", [self.access, "var", self.resolve])
|
|
|
+ self.mvs.execute("CD", [self.resolve, "var", self.var_function])
|
|
|
+ self.mvs.execute("CD", [self.val_function, "value", self.signature])
|
|
|
+ self.mvs.execute("CD", [self.signature, "body", self.ret])
|
|
|
+ self.mvs.execute("CD", [self.signature, "params", self.params])
|
|
|
+ t = self.mvs.execute("CE", [self.symbols, self.val_function])
|
|
|
+ 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")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "init")
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "access")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "init")
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "resolve")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "init")
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "resolve")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "finish")
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "access")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "eval")
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "access")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "finish")
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "call")
|
|
|
+ self.assertEquals(get_phase_ref(self.root, self.mvs), self.actual_arg_a)
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "constant")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "init")
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "constant")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "finish")
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "call")
|
|
|
+ self.assertEquals(get_phase_ref(self.root, self.mvs), self.actual_arg_b)
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "constant")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "init")
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "constant")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "finish")
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "call")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "call")
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "return")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "init")
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "call")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "finish")
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "constant")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "init")
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "constant")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "finish")
|
|
|
+ self.assertEquals(get_returnvalue(self.root, self.mvs), "a")
|
|
|
+
|
|
|
+ def test_three_params(self):
|
|
|
+ """
|
|
|
+ Test the code:
|
|
|
+ def function_A(a, b, c):
|
|
|
+ return
|
|
|
+
|
|
|
+ function_A(a="d", b="e", c="f")
|
|
|
+ f
|
|
|
+ """
|
|
|
+ self.params = self.mvs.execute("CN", [])
|
|
|
+ self.var_function = self.mvs.execute("CN", [])
|
|
|
+ self.signature = self.mvs.execute("CN", [])
|
|
|
+ self.val_function = self.mvs.execute("CN", [])
|
|
|
+ self.var_a = self.mvs.execute("CN", [])
|
|
|
+ self.var_b = self.mvs.execute("CN", [])
|
|
|
+ self.var_c = self.mvs.execute("CN", [])
|
|
|
+ self.actual_arg_a = self.mvs.execute("CN", [])
|
|
|
+ self.actual_arg_b = self.mvs.execute("CN", [])
|
|
|
+ self.actual_arg_c = self.mvs.execute("CN", [])
|
|
|
+
|
|
|
+ self.inst = self.mvs.execute("CNV", [{"value":"call"}])
|
|
|
+ self.access = self.mvs.execute("CNV", [{"value":"access"}])
|
|
|
+ self.resolve = self.mvs.execute("CNV", [{"value":"resolve"}])
|
|
|
+ self.ret = self.mvs.execute("CNV", [{"value":"return"}])
|
|
|
+
|
|
|
+ self.const_a = self.mvs.execute("CNV", [{"value":"constant"}])
|
|
|
+ self.const_b = self.mvs.execute("CNV", [{"value":"constant"}])
|
|
|
+ self.const_c = self.mvs.execute("CNV", [{"value":"constant"}])
|
|
|
+ self.const_d = self.mvs.execute("CNV", [{"value":"constant"}])
|
|
|
+ self.const_e = self.mvs.execute("CNV", [{"value":"constant"}])
|
|
|
+ self.const_f = self.mvs.execute("CNV", [{"value":"constant"}])
|
|
|
+ self.value_a = self.mvs.execute("CNV", ["a"])
|
|
|
+ self.value_b = self.mvs.execute("CNV", ["b"])
|
|
|
+ self.value_c = self.mvs.execute("CNV", ["c"])
|
|
|
+ self.value_d = self.mvs.execute("CNV", ["d"])
|
|
|
+ self.value_e = self.mvs.execute("CNV", ["e"])
|
|
|
+ self.value_f = self.mvs.execute("CNV", ["f"])
|
|
|
+
|
|
|
+ self.mvs.execute("CD", [self.task_frame, "IP", self.inst])
|
|
|
+ self.mvs.execute("CD", [self.inst, "func", self.access])
|
|
|
+ self.mvs.execute("CD", [self.inst, "next", self.const_a])
|
|
|
+ self.mvs.execute("CD", [self.inst, "params", self.actual_arg_a])
|
|
|
+ self.mvs.execute("CD", [self.actual_arg_a, "next_param", self.actual_arg_b])
|
|
|
+ self.mvs.execute("CD", [self.actual_arg_b, "next_param", self.actual_arg_c])
|
|
|
+ self.mvs.execute("CD", [self.inst, "last_param", self.actual_arg_c])
|
|
|
+ self.mvs.execute("CD", [self.actual_arg_a, "value", self.const_d])
|
|
|
+ self.mvs.execute("CD", [self.actual_arg_a, "name", self.mvs.execute("CNV", ["a"])])
|
|
|
+ self.mvs.execute("CD", [self.actual_arg_b, "value", self.const_e])
|
|
|
+ self.mvs.execute("CD", [self.actual_arg_b, "name", self.mvs.execute("CNV", ["b"])])
|
|
|
+ self.mvs.execute("CD", [self.actual_arg_c, "value", self.const_f])
|
|
|
+ self.mvs.execute("CD", [self.actual_arg_c, "name", self.mvs.execute("CNV", ["c"])])
|
|
|
+ self.mvs.execute("CD", [self.const_a, "node", self.value_a])
|
|
|
+ self.mvs.execute("CD", [self.const_b, "node", self.value_b])
|
|
|
+ self.mvs.execute("CD", [self.const_c, "node", self.value_c])
|
|
|
+ self.mvs.execute("CD", [self.const_d, "node", self.value_d])
|
|
|
+ self.mvs.execute("CD", [self.const_e, "node", self.value_e])
|
|
|
+ self.mvs.execute("CD", [self.const_f, "node", self.value_f])
|
|
|
+ self.mvs.execute("CD", [self.access, "var", self.resolve])
|
|
|
+ self.mvs.execute("CD", [self.resolve, "var", self.var_function])
|
|
|
+ self.mvs.execute("CD", [self.val_function, "value", self.signature])
|
|
|
+ self.mvs.execute("CD", [self.signature, "body", self.ret])
|
|
|
+ self.mvs.execute("CD", [self.signature, "params", self.params])
|
|
|
+ t = self.mvs.execute("CE", [self.symbols, self.val_function])
|
|
|
+ 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.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")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "init")
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "access")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "init")
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "resolve")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "init")
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "resolve")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "finish")
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "access")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "eval")
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "access")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "finish")
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "call")
|
|
|
+ self.assertEquals(get_phase_ref(self.root, self.mvs), self.actual_arg_a)
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "constant")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "init")
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "constant")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "finish")
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "call")
|
|
|
+ self.assertEquals(get_phase_ref(self.root, self.mvs), self.actual_arg_b)
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "constant")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "init")
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "constant")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "finish")
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "call")
|
|
|
+ self.assertEquals(get_phase_ref(self.root, self.mvs), self.actual_arg_c)
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "constant")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "init")
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "constant")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "finish")
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "call")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "call")
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "return")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "init")
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "call")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "finish")
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "constant")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "init")
|
|
|
+ execute_until_finished(self.mvk, self.mvs)
|
|
|
+
|
|
|
+ self.assertEquals(get_inst(self.root, self.mvs), "constant")
|
|
|
+ self.assertEquals(get_phase(self.root, self.mvs), "finish")
|
|
|
+ self.assertEquals(get_returnvalue(self.root, self.mvs), "a")
|