00001 import unittest
00002 import os
00003 import win32com.client
00004 import GPyUnit.util
00005 from GPyUnit.util import dec_disable_early_binding
00006
00007 def _adjacent_file(file):
00008 import os.path
00009 return os.path.join(os.path.dirname(os.path.abspath(__file__)), file)
00010
00011 class TestInstances(unittest.TestCase):
00012 project = None
00013 def __init__(self, name, **kwds):
00014 super(TestInstances, self).__init__(name, **kwds)
00015
00016 def tearDown(self):
00017 if self.project:
00018 self.project.Close(True)
00019
00020 @property
00021 def connstr(self):
00022 return "MGA=" + _adjacent_file("tmp.mga")
00023
00024 @dec_disable_early_binding
00025 def test_CreateInstances(self):
00026 self.project = GPyUnit.util.parse_xme(self.connstr)
00027 self.project.BeginTransactionInNewTerr()
00028 for i in range(3):
00029 for model in self.project.RootFolder.ChildFCOs:
00030 self.project.RootFolder.DeriveRootObject(model, True)
00031 self.project.CommitTransaction()
00032
00033 @dec_disable_early_binding
00034 def test_RedirectBaseReference(self):
00035 self.project = GPyUnit.util.parse_xme(self.connstr)
00036 self.project.BeginTransactionInNewTerr()
00037 aspects = self.project.RootFolder.GetObjectByPathDisp("/@Aspects")
00038 allproxy = self.project.RootFolder.GetObjectByPathDisp("/@Aspects/@AllRef")
00039 aspects_instance = self.project.RootFolder.DeriveRootObject(aspects, True)
00040 aspects_subtype = self.project.RootFolder.DeriveRootObject(aspects, False)
00041 attributes = self.project.RootFolder.GetObjectByPathDisp("/@Stereotypes/@Attributes")
00042 allproxy.Referred = attributes
00043 for asp in (aspects_instance, aspects_subtype):
00044 self.assertEqual(asp.GetObjectByPathDisp("/@AllRef").Referred.Name, attributes.Name)
00045 self.assertEqual(asp.GetObjectByPathDisp("/@AllRef").Referred.ID, attributes.ID)
00046 self.project.CommitTransaction()
00047
00048 @dec_disable_early_binding
00049 def test_RedirectBaseReference2(self):
00050 self.project = GPyUnit.util.parse_xme(self.connstr)
00051 self.project.BeginTransactionInNewTerr()
00052 aspects = self.project.RootFolder.GetObjectByPathDisp("/@Aspects")
00053 allproxy = self.project.RootFolder.GetObjectByPathDisp("/@Aspects/@AllRef")
00054 instances = []
00055 for inst_flag in (True, False, True, False):
00056 instances.append(aspects.DeriveChildObject(allproxy, allproxy.MetaRole, inst_flag))
00057 attributes = self.project.RootFolder.GetObjectByPathDisp("/@Stereotypes/@Attributes")
00058 allproxy.Referred = attributes
00059 try:
00060 instances[0].Referred = self.project.RootFolder.GetObjectByPathDisp("/@Constraints/@Constraints|kind=Aspect")
00061 except Exception, e:
00062 pass
00063 else:
00064 self.fail()
00065 for asp in instances:
00066 self.assertEqual(asp.Referred.Name, attributes.Name)
00067 self.assertEqual(asp.Referred.ID, attributes.ID)
00068 self.project.CommitTransaction()
00069
00070 @dec_disable_early_binding
00071 def test_RedirectBaseReference3(self):
00072 self.project = GPyUnit.util.parse_xme(self.connstr)
00073 self.project.BeginTransactionInNewTerr()
00074 aspects = self.project.RootFolder.GetObjectByPathDisp("/@Aspects")
00075 allproxy = self.project.RootFolder.GetObjectByPathDisp("/@Aspects/@AllRef")
00076 instances = []
00077 for inst_flag in (True, False, True, False):
00078 instances.append(aspects.DeriveChildObject(allproxy, allproxy.MetaRole, inst_flag))
00079 self.assertFalse(instances[3].CompareToBase())
00080 instances[3].Referred = instances[3].Referred
00081 self.assertTrue(instances[3].CompareToBase())
00082 attributes = self.project.RootFolder.GetObjectByPathDisp("/@Stereotypes/@Attributes")
00083 try:
00084 allproxy.Referred = attributes
00085 except Exception, e:
00086 pass
00087 else:
00088 self.fail()
00089 instances[3].RevertToBase()
00090 self.assertFalse(instances[3].CompareToBase())
00091 allproxy.Referred = attributes
00092 for asp in instances:
00093 self.assertEqual(asp.Referred.Name, attributes.Name)
00094 self.assertEqual(asp.Referred.ID, attributes.ID)
00095 self.project.CommitTransaction()
00096
00097