Ver código fonte

Even more fixes for the model constructors

Yentl Van Tendeloo 9 anos atrás
pai
commit
21d7f23d3c

+ 3 - 1
integration/code/several_petrinets.mvc

@@ -149,7 +149,9 @@ PetriNets invalid_petrinet_7 {
         tokens = 3
     }
     Transition t1 {}
-    P2T (p1, t1) {}
+    P2T (p1, t1) {
+        weight = 1
+    }
     T2P (t1, p2) {
         weight = 2
     }

+ 31 - 31
integration/test_constructors_models_compiled.py

@@ -11,71 +11,71 @@ def model_compile(filename):
 
 def conformance_call(operation, model, metamodel):
     return [
-            '"output"',
-                '"call"',
-                    '"access"', '"resolve"', '"%s"' % operation,
-                    '3',
-                    '"call"', '"access"', '"resolve"', '"import_node"', '1', '"const"', '"models/example_M"', 'false',
-                    '"const"', '"%s"' % model,
-                    '"const"', '"%s"' % metamodel,
-                'false',
-            'true',
+            "output",
+                "call",
+                    "access", "resolve", str(operation),
+                    3,
+                    "call", "access", "resolve", "import_node", 1, "const", "models/example_M", False,
+                    "const", str(model),
+                    "const", str(metamodel),
+                False,
+            True,
             ]
 
 def conformance_check(node):
     return [
-            '"output"',
-                '"call"',
-                    '"access"', '"resolve"', '"conformance_scd"',
-                    '1',
-                    '"call"', '"access"', '"resolve"', '"import_node"', '1', '"const"', '"%s"' % (node), 'false',
-                    'false',
-                'true',
+            "output",
+                "call",
+                    "access", "resolve", "conformance_scd",
+                    1,
+                    "call", "access", "resolve", "import_node", 1, "const", str(node), False,
+                    False,
+                True,
             ]
 
 class TestConstructorsModelsCompiled(unittest.TestCase):
     def test_constructors_petrinets(self):
-        commands = ['"initialize_SCD"', '"models/SimpleClassDiagrams"'] + \
+        commands = ["initialize_SCD", "models/SimpleClassDiagrams"] + \
                    model_compile("integration/code/petrinets.mvc") + \
-                   ['"exit"', '1'] + conformance_check("models/PetriNets") + ['"return"', 'false']
+                   ["exit", 1] + conformance_check("models/PetriNets") + ["return", False]
         self.assertTrue(run_barebone(commands, ["OK"], 4))
 
     def test_constructors_petrinet_instance(self):
-        commands = ['"initialize_SCD"', '"models/SimpleClassDiagrams"'] + \
+        commands = ["initialize_SCD", "models/SimpleClassDiagrams"] + \
                    model_compile("integration/code/petrinets.mvc") + \
                    model_compile("integration/code/my_petrinet.mvc") + \
-                   ['"exit"', '1'] + conformance_check("models/my_petrinet") + ['"return"', 'false']
+                   ["exit", 1] + conformance_check("models/my_petrinet") + ["return", False]
         self.assertTrue(run_barebone(commands, ["OK"], 4))
 
     def test_constructors_petrinet_full(self):
-        commands = ['"initialize_SCD"', '"models/SimpleClassDiagrams"'] + \
+        commands = ["initialize_SCD", "models/SimpleClassDiagrams"] + \
                    model_compile("integration/code/my_petrinet_with_MM.mvc") + \
-                   ['"exit"', '1'] + conformance_check("models/my_petrinet") + ['"return"', 'false']
+                   ["exit", 1] + conformance_check("models/my_petrinet") + ["return", False]
         self.assertTrue(run_barebone(commands, ["OK"], 4))
 
     def test_constructors_petrinets_constraints(self):
-        commands = ['"initialize_SCD"', '"models/SimpleClassDiagrams"'] + \
+        commands = ["initialize_SCD", "models/SimpleClassDiagrams"] + \
                    model_compile("integration/code/petrinets_constraints.mvc") + \
-                   ['"exit"', '1'] + conformance_check("models/PetriNets") + ['"return"', 'false']
+                   ["exit", 1] + conformance_check("models/PetriNets") + ["return", False]
         self.assertTrue(run_barebone(commands, ["OK"], 4))
 
     def test_constructors_petrinet_instance_constraints(self):
-        commands = ['"initialize_SCD"', '"models/SimpleClassDiagrams"'] + \
+        commands = ["initialize_SCD", "models/SimpleClassDiagrams"] + \
                    model_compile("integration/code/petrinets_constraints.mvc") + \
                    model_compile("integration/code/my_petrinet.mvc") + \
-                   ['"exit"', '1'] + conformance_check("models/my_petrinet") + ['"return"', 'false']
+                   ["exit", 1] + conformance_check("models/my_petrinet") + ["return", False]
         self.assertTrue(run_barebone(commands, ["OK"], 4))
 
     def test_constructors_petrinet_full_constraints(self):
-        commands = ['"initialize_SCD"', '"models/SimpleClassDiagrams"'] + \
+        commands = ["initialize_SCD", "models/SimpleClassDiagrams"] + \
                    model_compile("integration/code/my_petrinet_with_MM_and_constraints.mvc") + \
-                   ['"exit"', '1'] + conformance_check("models/my_petrinet") + ['"return"', 'false']
+                   ["exit", 1] + conformance_check("models/my_petrinet") + ["return", False]
         self.assertTrue(run_barebone(commands, ["OK"], 4))
 
     def test_constructors_petrinet_invalids(self):
-        commands = ['"initialize_SCD"', '"models/SimpleClassDiagrams"'] + \
+        commands = ["initialize_SCD", "models/SimpleClassDiagrams"] + \
                    model_compile("integration/code/several_petrinets.mvc") + \
-                   ['"exit"', '1'] + \
+                   ["exit", 1] + \
                    conformance_check("models/valid_petrinet") + \
                    conformance_check("models/invalid_petrinet_1") + \
                    conformance_check("models/invalid_petrinet_2") + \
@@ -84,7 +84,7 @@ class TestConstructorsModelsCompiled(unittest.TestCase):
                    conformance_check("models/invalid_petrinet_5") + \
                    conformance_check("models/invalid_petrinet_6") + \
                    conformance_check("models/invalid_petrinet_7") + \
-                   ['"return"', 'false']
+                   ["return", False]
         self.assertTrue(run_barebone(commands, ["OK", 
                     "Natural does not have a positive or zero value at p1.tokens",
                     "Natural does not have a positive or zero value at p2t.weight",

+ 3 - 10
interface/HUTN/hutn_compiler/model_object_visitor.py

@@ -5,9 +5,6 @@ import urllib2
 import urllib
 import json
 
-def jsonstr(s):
-    return '"%s"' % s
-
 def empty(s):
     return None
 
@@ -21,18 +18,14 @@ class ModelObjectVisitor(ModelVisitor):
 
     def dump(self):
         v = ModelVisitor.dump(self)
-        data = []
-        data.append(["V", '4'])
-        for i in v:
-            data.append(["V", i])
-        data.append(["V", '"exit"'])
+        data = [4] + v + ["exit"]
 
         # Wait for kernel to signal that it finished
-        data.append(["V", '2'])
+        data.append(2)
 
         urllib2.urlopen(urllib2.Request(self.address, urllib.urlencode({"op": "set_input", "data": json.dumps(data), "username": self.username}))).read()
         v = urllib2.urlopen(urllib2.Request(self.address, urllib.urlencode({"op": "get_output", "username": self.username}))).read()
-        v = v.split("=", 2)[2]
+        v = json.loads(v)
         if v == "DONE":
             return True
         else: