소스 검색

Added exception tests for read_attrs

Yentl Van Tendeloo 7 년 전
부모
커밋
9b7def1754
1개의 변경된 파일97개의 추가작업 그리고 0개의 파일을 삭제
  1. 97 0
      unit/test_all.py

+ 97 - 0
unit/test_all.py

@@ -863,6 +863,7 @@ class TestModelverse(unittest.TestCase):
             pass
 
     def test_op_read_attrs(self):
+        # Basic behaviour
         model_add("users/user/test/a", "formalisms/SimpleClassDiagrams", """
             SimpleAttribute Natural {
                 name = "natural"
@@ -922,6 +923,27 @@ class TestModelverse(unittest.TestCase):
         assert read_attrs("users/user/test/b", "p2t") == {"weight": 4}
         assert read_attrs("users/user/test/b", "t2p") == {"weight": 10}
 
+        # Non-existing model
+        try:
+            read_attrs("users/afa", "p1")
+            self.fail()
+        except UnknownModel:
+            pass
+
+        # Non-existing element
+        try:
+            read_attrs("users/user/test/a", "PPPPPPP")
+            self.fail()
+        except UnknownElement:
+            pass
+
+        # No read permissions
+        try:
+            read_attrs("administration/core", "formalisms")
+            self.fail()
+        except ReadPermissionDenied:
+            pass
+
     def test_op_attr_assign(self):
         model_add("users/user/test/a", "formalisms/SimpleClassDiagrams", """
             SimpleAttribute Natural {
@@ -994,6 +1016,81 @@ class TestModelverse(unittest.TestCase):
         assert attr_assign("users/user/test/b", "p2t", "weight", 0) == None
         assert read_attrs("users/user/test/b", "p2t") == {"weight": 0}
 
+    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 read_attrs("users/user/test/a", "Place") == {"constraint": {"AL": ""}, "name": None, "abstract": False, "lower_cardinality": None, "upper_cardinality": None}
+
+        try:
+            # Cannot delete action language attributes
+            attr_delete("users/user/test/a", "Place", "constraint")
+        except:
+            raise
+            pass
+
+        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 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 3", "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}
+
     """
     def test_op_model_render(self):
     def test_op_transformation_between(self):