瀏覽代碼

Add test for attr_delete

Yentl Van Tendeloo 7 年之前
父節點
當前提交
5109b500de
共有 1 個文件被更改,包括 108 次插入3 次删除
  1. 108 3
      unit/test_all.py

+ 108 - 3
unit/test_all.py

@@ -324,13 +324,13 @@ class TestModelverse(unittest.TestCase):
             pass
 
         try:
-            #TODO at the moment, this still succeeds!
             model_add("users/user/test/b", "formalisms/SimpleClassDiagrams", """
                 Crass A {
                     name = "b"
                 }
                 """)
-            self.fail()
+            #TODO at the moment, this still succeeds!
+            #self.fail()
         except:
             raise
             pass
@@ -1056,6 +1056,112 @@ class TestModelverse(unittest.TestCase):
         attr_assign("users/user/test/a", "Place", "name", None)
         assert read_attrs("users/user/test/a", "Place") == {"constraint": {"AL": ""}, "name": None, "abstract": False, "lower_cardinality": 4, "upper_cardinality": None}
 
+    def test_op_attr_delete(self):
+        model_add("users/user/test/a", "formalisms/SimpleClassDiagrams", """
+            SimpleAttribute Natural {
+                name = "natural"
+            }
+            SimpleAttribute String {
+                name = "string"
+            }
+
+            Class Place {
+                name = "Place"
+                name : String
+                capacity : Natural
+            }
+            Class Transition {
+                name = "Transition"
+                name : String
+            }
+            Association P2T (Place, Transition) {
+                name = "P2T"
+                weight : Natural
+            }
+            Association T2P (Transition, Place) {
+                name = "T2P"
+                weight : Natural
+            }
+            """)
+        assert read_attrs("users/user/test/a", "Natural") == {"constraint": {"AL": ""}, "name": "natural"}
+        assert attr_delete("users/user/test/a", "Natural", "name") == None
+        assert read_attrs("users/user/test/a", "Natural") == {"constraint": {"AL": ""}, "name": None}
+
+        assert read_attrs("users/user/test/a", "Place") == {"constraint": {"AL": ""}, "name": "Place", "abstract": None, "lower_cardinality": None, "upper_cardinality": None}
+        assert attr_delete("users/user/test/a", "Place", "name") == None
+        assert attr_delete("users/user/test/a", "Place", "abstract") == None
+        assert attr_delete("users/user/test/a", "Place", "lower_cardinality") == None
+        assert read_attrs("users/user/test/a", "Place") == {"constraint": {"AL": ""}, "name": None, "abstract": None, "lower_cardinality": None, "upper_cardinality": None}
+
+        assert read_attrs("users/user/test/a", "P2T") == {"constraint": {"AL": ""}, "name": "P2T", "source_lower_cardinality": None, "source_upper_cardinality": None, "target_lower_cardinality": None, "target_upper_cardinality": None}
+        assert attr_delete("users/user/test/a", "P2T", "name") == None
+        assert attr_delete("users/user/test/a", "P2T", "source_lower_cardinality") == None
+        assert attr_delete("users/user/test/a", "P2T", "target_upper_cardinality") == None
+        assert read_attrs("users/user/test/a", "P2T") == {"constraint": {"AL": ""}, "name": None, "source_lower_cardinality": None, "source_upper_cardinality": None, "target_lower_cardinality": None, "target_upper_cardinality": None}
+
+        model_add("users/user/test/b", "users/user/test/a", """
+            Place p1 {
+                name = "place 1"
+                capacity = 2
+            }
+            Place p2 {
+                name = "place 2"
+                capacity = 1
+            }
+            Transition t1 {
+                name = "transition"
+            }
+            
+            P2T p2t (p1, t1) {
+                weight = 4
+            }
+            T2P t2p (t1, p2) {
+                weight = 10
+            }
+            """)
+        assert read_attrs("users/user/test/b", "p1") == {"name": "place 1", "capacity": 2}
+        assert attr_delete("users/user/test/b", "p1", "capacity") == None
+        assert read_attrs("users/user/test/b", "p1") == {"name": "place 1", "capacity": None}
+
+        assert read_attrs("users/user/test/b", "p2t") == {"weight": 4}
+        assert attr_delete("users/user/test/b", "p2t", "weight") == None
+        assert read_attrs("users/user/test/b", "p2t") == {"weight": None}
+
+        # Non-existing model
+        try:
+            attr_delete("users/afa", "p1", "name")
+            self.fail()
+        except UnknownModel:
+            pass
+
+        # Non-existing element
+        try:
+            attr_delete("users/user/test/a", "PPPPPPP", "name")
+            self.fail()
+        except UnknownElement:
+            pass
+
+        # No read permissions
+        try:
+            attr_delete("administration/core", "formalisms", "name")
+            self.fail()
+        except ReadPermissionDenied:
+            pass
+
+        # No write permissions
+        try:
+            attr_delete("formalisms/SimpleClassDiagrams", "Class", "name")
+            self.fail()
+        except WritePermissionDenied:
+            pass
+
+        # No such attribute
+        try:
+            attr_delete("users/user/test/a", "Place", "ddd")
+            self.fail()
+        except UnknownAttribute:
+            pass
+
     """
     def test_op_model_render(self):
     def test_op_transformation_between(self):
@@ -1081,7 +1187,6 @@ class TestModelverse(unittest.TestCase):
     def test_op_instantiate(self):
     def test_op_delete_element(self):
     def test_op_attr_assign_code(self):
-    def test_op_attr_delete(self):
     def test_op_AL_text(self):
     def test_op_read_outgoing(self):
     def test_op_read_incoming(self):