Преглед на файлове

Add test for define_attribute

Yentl Van Tendeloo преди 7 години
родител
ревизия
5b57887267
променени са 1 файла, в които са добавени 85 реда и са изтрити 2 реда
  1. 85 2
      unit/test_all.py

+ 85 - 2
unit/test_all.py

@@ -1869,7 +1869,89 @@ class TestModelverse(unittest.TestCase):
 
         # No write permissions, but can query
         assert connections_between("formalisms/SimpleClassDiagrams", "Association", "Association") == set(["Association", "Inheritance"])
-        
+
+    def test_op_define_attribute(self):
+        model_add("users/user/test/a", "formalisms/SimpleClassDiagrams", """
+            SimpleAttribute String {}
+            SimpleAttribute Natural {}
+            Class A {}
+            Class B {}
+            Association C (A, B) {}
+            Association D (C, A) {}
+            """)
+        assert read_defined_attrs("users/user/test/a", "A") == ({}, {})
+
+        # Test normal operation
+        define_attribute("users/user/test/a", "A", "my_attr", "String")
+        assert read_defined_attrs("users/user/test/a", "A") == ({"my_attr": "String"}, {})
+
+        # Test second attribute of same type
+        define_attribute("users/user/test/a", "A", "my_second_attr", "String")
+        assert read_defined_attrs("users/user/test/a", "A") == ({"my_attr": "String", "my_second_attr": "String"}, {})
+
+        # Test third attribute with different type
+        define_attribute("users/user/test/a", "A", "a_third_one", "Natural")
+        assert read_defined_attrs("users/user/test/a", "A") == ({"my_attr": "String", "my_second_attr": "String", "a_third_one": "Natural"}, {})
+
+        # Test same on associations
+        define_attribute("users/user/test/a", "C", "my_attr", "String")
+        assert read_defined_attrs("users/user/test/a", "C") == ({"my_attr": "String"}, {})
+
+        # Test second attribute of same type
+        define_attribute("users/user/test/a", "C", "my_second_attr", "String")
+        assert read_defined_attrs("users/user/test/a", "C") == ({"my_attr": "String", "my_second_attr": "String"}, {})
+
+        # Test third attribute with different type
+        define_attribute("users/user/test/a", "C", "a_third_one", "Natural")
+        assert read_defined_attrs("users/user/test/a", "C") == ({"my_attr": "String", "my_second_attr": "String", "a_third_one": "Natural"}, {})
+
+        # Non-existing model
+        try:
+            define_attribute("users/afa", "A", "B", "C")
+            self.fail()
+        except UnknownModel:
+            pass
+
+        # Non-existing element (1)
+        before = element_list("users/user/test/a")
+        try:
+            define_attribute("users/user/test/a", "AA", "B", "Natural")
+            self.fail()
+        except UnknownElement:
+            assert element_list("users/user/test/a") == before
+
+        # Non-existing element (2)
+        before = element_list("users/user/test/a")
+        try:
+            define_attribute("users/user/test/a", "A", "B", "Natural2")
+            self.fail()
+        except UnknownElement:
+            assert element_list("users/user/test/a") == before
+
+        # Attribute exists
+        before = element_list("users/user/test/a")
+        try:
+            define_attribute("users/user/test/a", "A", "my_attr", "Natural")
+            self.fail()
+        except AttributeExists:
+            assert element_list("users/user/test/a") == before
+
+        # No read permissions
+        before = element_list("users/user/test/a")
+        try:
+            define_attribute("administration/core", "formalisms", "name", "A")
+            self.fail()
+        except ReadPermissionDenied:
+            assert element_list("users/user/test/a") == before
+
+        # No write permissions
+        before = element_list("users/user/test/a")
+        try:
+            define_attribute("formalisms/SimpleClassDiagrams", "Association", "new_name", "String")
+            self.fail()
+        except WritePermissionDenied:
+            assert element_list("users/user/test/a") == before
+
     """
     def test_op_model_render(self):
     def test_op_transformation_between(self):
@@ -1890,9 +1972,10 @@ class TestModelverse(unittest.TestCase):
     def test_op_group_join(self):
     def test_op_group_kick(self):
     def test_op_group_list(self):
+    def test_op_undefine_attribute(self):
+    def test_op_read_defined_attrs(self):
     def test_op_conformance_delete(self):
     def test_op_conformance_add(self):
-    def test_op_define_attribute(self):
     """
 
     def test_modelling(self):