Explorar o código

Test for garbage input (e.g., a tuple as ID)

Yentl Van Tendeloo %!s(int64=7) %!d(string=hai) anos
pai
achega
5d6f00c07a
Modificáronse 2 ficheiros con 34 adicións e 3 borrados
  1. 2 0
      kernel/modelverse_kernel/main.py
  2. 32 3
      unit/test_all.py

+ 2 - 0
kernel/modelverse_kernel/main.py

@@ -534,6 +534,8 @@ class ModelverseKernel(object):
                                    ("CN", []),
                                    ("CNV", [value]),
                                   ]
+        if new_value == None:
+            new_value = self.root
         _, _, _, _ =        yield [("CD", [task_root, "last_input", new_input]),
                                    ("CD", [old_input, "next", new_input]),
                                    ("CD", [old_input, "value", new_value]),

+ 32 - 3
unit/test_all.py

@@ -1426,6 +1426,30 @@ class TestModelverse(unittest.TestCase):
         except ElementExists:
             assert element_list("users/user/test/a") == before
 
+        # Garbage type
+        before = element_list("users/user/test/a")
+        try:
+            instantiate("users/user/test/a", ("a", "b"))
+            self.fail()
+        except UnknownElement:
+            assert element_list("users/user/test/a") == before
+
+        # Garbage edge src
+        before = element_list("users/user/test/a")
+        try:
+            instantiate("users/user/test/a", "Association", edge=(('a', 'b'), "non-existing2"))
+            self.fail()
+        except UnknownElement:
+            assert element_list("users/user/test/a") == before
+
+        # Garbage edge dst
+        before = element_list("users/user/test/a")
+        try:
+            instantiate("users/user/test/a", "Association", edge=("non-existing", ('a', 'b')))
+            self.fail()
+        except UnknownElement:
+            assert element_list("users/user/test/a") == before
+
     def test_op_delete_element(self):
         model_add("users/user/test/a", "formalisms/SimpleClassDiagrams", """
             Class A {}
@@ -1464,13 +1488,11 @@ class TestModelverse(unittest.TestCase):
             }
             """)
 
-        """
         # Test delete of a "hidden" element
         assert element_list_nice("users/user/test/d") == [{"__type" : "Class", "__id": "A", "lower_cardinality": None, "upper_cardinality": None, "constraint": {"AL": ""}, "name": "A", "abstract": None}]
-        ID = [i for i in element_list("users/user/test/d") if i[1] == "Class_name"][0]
+        ID = [i for i in element_list("users/user/test/d") if i[1] == "Class_name"][0][0]
         assert delete_element("users/user/test/d", ID) == None
         assert element_list_nice("users/user/test/d") == [{"__type" : "Class", "__id": "A", "lower_cardinality": None, "upper_cardinality": None, "constraint": {"AL": ""}, "name": None, "abstract": None}]
-        """
 
         # Non-existing model
         try:
@@ -1502,6 +1524,13 @@ class TestModelverse(unittest.TestCase):
         except WritePermissionDenied:
             assert element_list("formalisms/SimpleClassDiagrams") == before
 
+        # Give garbage
+        assert element_list_nice("users/user/test/d") == [{"__type" : "Class", "__id": "A", "lower_cardinality": None, "upper_cardinality": None, "constraint": {"AL": ""}, "name": None, "abstract": None}]
+        try:
+            delete_element("users/user/test/d", ('abc', 'def'))
+        except UnknownElement:
+            assert element_list_nice("users/user/test/d") == [{"__type" : "Class", "__id": "A", "lower_cardinality": None, "upper_cardinality": None, "constraint": {"AL": ""}, "name": None, "abstract": None}]
+
     """
     def test_op_model_render(self):
     def test_op_transformation_between(self):