public void Context()
        {
            packages = new List <Package>();
            elements = new List <Element>();

            var eaRepository = new EARepository();

            var model = eaRepository.AddModel("Model", m => { });

            packages.Add(model);

            var otherPackage = CreatePackage(model, "other package");

            var bInformationV = CreatePackage(model, Stereotype.bInformationV);

            bLibrary = CreatePackage(bInformationV, Stereotype.bLibrary);

            CreatePackage(bLibrary, Stereotype.PRIMLibrary);
            CreatePackage(bLibrary, Stereotype.ENUMLibrary);
            CreatePackage(bLibrary, Stereotype.CDTLibrary);
            CreatePackage(bLibrary, Stereotype.CCLibrary);
            CreatePackage(bLibrary, Stereotype.BDTLibrary);
            CreatePackage(bLibrary, Stereotype.BIELibrary);
            CreatePackage(bLibrary, Stereotype.DOCLibrary);

            CreateElement(otherPackage, "other element");

            contentLoader = new RepositoryContentLoader(eaRepository);
        }
        public void Context()
        {
            eaRepository = new EARepository();
            bLibrary     = null;
            eaRepository.AddModel("Model", model => { bLibrary = ABLibraryWithoutIssues("bLibrary", model); });

            validatingCCRepository = new ValidatingCCRepository(eaRepository);
            issueHandler           = new ValidationIssueHandler();
            validatingCCRepository.ValidationIssuesUpdated += issueHandler.ValidationIssuesUpdated;
            validatingCCRepository.LoadRepositoryContent();
            issueHandler.AssertReceivedIssuesTotal(0);
            issueHandler.Reset();
        }
Ejemplo n.º 3
0
        public void TestEAMock()
        {
            EAMetaModel meta = new EAMetaModel();

            EARepository rep = EARepository.Repository;

            EAElement metaAPI = new EAElement();

            metaAPI.Name = "API";

            EAElement api = new EAElement();

            api.Name         = "api";
            api.Type         = "Class";
            api.Stereotype   = "stereotype";
            api.ClassifierID = metaAPI.ElementID;

            api.RunState = "runstate";

            EAElement resource = new EAElement();

            resource.Name = "/resource";

            EA.Collection connectors = api.Connectors;
            object        con        = connectors.AddNew("", RoundTripAddIn.RoundTripAddInClass.EA_TYPE_ASSOCIATION);

            EAConnector c = (EAConnector)con;

            c.ClientID   = api.ElementID;
            c.SupplierID = resource.ElementID;

            c.SupplierEnd.Role = "SupplierRole";

            Assert.AreEqual(1, api.Connectors.Count);


            EAElement metaAPI2 = (EAElement)rep.GetElementByID(metaAPI.ElementID);

            Assert.AreEqual(metaAPI.ElementID, metaAPI2.ElementID);

            EAElement api2      = (EAElement)rep.GetElementByID(c.ClientID);
            EAElement resource2 = (EAElement)rep.GetElementByID(c.SupplierID);

            Assert.AreEqual(api.ElementID, api2.ElementID);
            Assert.AreEqual(resource.ElementID, resource2.ElementID);

            Assert.IsNotNull(c.SupplierEnd);
            Assert.IsNotNull(c.SupplierEnd.Role);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Функция проверки, что текущая диаграмма установлена
        /// Могут быть установлены параметры, для авто открытия текущей или устанавливающий открытую на экране как текующую
        /// </summary>
        /// <param name="autoOpenLibDiagram"></param>///
        /// <param name="showUI"></param>
        /// <returns></returns>
        public static bool CheckCurrentDiagram(bool autoOpenLibDiagram = false, bool showUI = true)
        {
            bool result = false;

            EA.Diagram currentOpenedDiagram = EARepository.GetCurrentDiagram();
            EA.Diagram currentLibDiagram    = Context.CurrentDiagram;

            if (currentOpenedDiagram == null && currentLibDiagram != null)
            {
                if (autoOpenLibDiagram)
                {
                    EARepository.ActivateDiagram(currentLibDiagram.DiagramID);
                    result = true;
                }
                else if (showUI)
                {
                    if (MessageBox.Show("Текущая библиотечная диаграмма не открыта. Открыть?", "", MessageBoxButtons.YesNo) == DialogResult.Yes)
                    {
                        EARepository.ActivateDiagram(currentLibDiagram.DiagramID);
                        result = true;
                    }
                }
            }
            else if (currentOpenedDiagram != null && currentLibDiagram != null && currentOpenedDiagram.DiagramID != currentLibDiagram.DiagramID)
            {
                if (autoOpenLibDiagram)
                {
                    Context.CurrentDiagram = currentOpenedDiagram;
                    result = true;
                }
                else if (showUI)
                {
                    DialogResult dr = MessageBox.Show("Текущая Открытая диаграмма не библиотечная библиотечная диаграмма не открыта. Назначить текущей открытую (Да) /Открыть библиотечную (Нет)? ", "", MessageBoxButtons.YesNoCancel);
                    if (dr == DialogResult.Yes)
                    {
                        Context.CurrentDiagram = currentOpenedDiagram;
                        result = true;
                    }
                }
            }
            else if (currentOpenedDiagram != null && currentLibDiagram != null && currentOpenedDiagram.DiagramID == currentLibDiagram.DiagramID)
            {
                result = true;
            }

            return(result);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Функция записывает в эанные ElementData идентификаторы коннекторов (на основе обработки ConnectorData)
        /// </summary>
        private static void SyncElementConnectorData()
        {
            foreach (ElementData elementData in ElementData.Values)
            {
                elementData._ConnectorDataIDs = null;
            }

            foreach (ConnectorData connectorData  in ConnectorData.Values)
            {
                ElementData sourceElementData;
                if (ElementData.ContainsKey(connectorData.SourceElementID))
                {
                    sourceElementData = ElementData[connectorData.SourceElementID];
                }
                else // небиблиотечный элемент
                {
                    EA.Element element = EARepository.GetElementByID(connectorData.SourceElementID);
                    sourceElementData = new ElementData(element);
                }
                if (sourceElementData._ConnectorDataIDs == null)
                {
                    sourceElementData._ConnectorDataIDs = new List <int>();
                }
                sourceElementData._ConnectorDataIDs.Add(connectorData.ConnectorID);


                ElementData targetElementData;
                if (ElementData.ContainsKey(connectorData.TargetElementID))
                {
                    targetElementData = ElementData[connectorData.TargetElementID];
                }
                else
                {
                    EA.Element element = EARepository.GetElementByID(connectorData.TargetElementID);
                    targetElementData = new ElementData(element);
                }
                if (targetElementData._ConnectorDataIDs == null)
                {
                    targetElementData._ConnectorDataIDs = new List <int>();
                }
                targetElementData._ConnectorDataIDs.Add(connectorData.ConnectorID);
            }
        }
Ejemplo n.º 6
0
        private static IImporterContext CreateContext(string testCase)
        {
            XmlSchema bdtSchema = XmlSchema.Read(XmlReader.Create(TestUtils.RelativePathToTestResource(typeof(BDTXsdImporterTests), string.Format(@"BDTImporterTestResources\BusinessDataType_{0}.xsd", testCase))), null);

            var eaRepository = new EARepository();

            eaRepository.AddModel("Model", m => m.AddPackage("bLibrary", bLibrary =>
            {
                bLibrary.Element.Stereotype = Stereotype.bLibrary;
                bLibrary.AddPackage("PRIMLibrary", primLib =>
                {
                    primLib.Element.Stereotype = Stereotype.PRIMLibrary;
                    primLib.AddPRIM("String");
                    primLib.AddPRIM("Decimal");
                    primLib.AddPRIM("Date");
                });
                bLibrary.AddPackage("CDTLibrary", cdtLib =>
                {
                    cdtLib.Element.Stereotype = Stereotype.CDTLibrary;
                    cdtLib.AddCDT("Text");
                });
                bLibrary.AddPackage("BDTLibrary", bdtLib => { bdtLib.Element.Stereotype = Stereotype.BDTLibrary; });
            }));
            ICctsRepository cctsRepository = CctsRepositoryFactory.CreateCctsRepository(eaRepository);
            var             primLibrary    = cctsRepository.GetPrimLibraryByPath((Path)"Model" / "bLibrary" / "PRIMLibrary");
            var             bdtLibrary     = cctsRepository.GetBdtLibraryByPath((Path)"Model" / "bLibrary" / "BDTLibrary");
            var             cdtLibrary     = cctsRepository.GetCdtLibraryByPath((Path)"Model" / "bLibrary" / "CDTLibrary");

            var contextMock = new Mock <IImporterContext>();

            contextMock.SetupGet(c => c.PRIMLibrary).Returns(primLibrary);
            contextMock.SetupGet(c => c.CDTLibrary).Returns(cdtLibrary);
            contextMock.SetupGet(c => c.BDTLibrary).Returns(bdtLibrary);
            contextMock.SetupGet(c => c.BDTSchema).Returns(bdtSchema);

            return(contextMock.Object);
        }
        public void Context()
        {
            var eaRepository = new EARepository();

            eaRepository.AddModel("Model", model =>
            {
                model.AddPackage("Package 1", package_1 =>
                {
                    package_1.Element.Stereotype = Stereotype.bLibrary;
                    package_1.AddPackage("Package 1.1", package_1_1 =>
                    {
                        package_1_1.Element.Stereotype = Stereotype.bLibrary;
                        package_1_1.AddPackage("Package 1.1.1", p => { p.Element.Stereotype = Stereotype.PRIMLibrary; });
                        package_1_1.AddPackage("Package 1.1.2", p => { p.Element.Stereotype = Stereotype.ENUMLibrary; });
                        package_1_1.AddPackage("Package 1.1.3", p => { p.Element.Stereotype = Stereotype.CDTLibrary; });
                        package_1_1.AddPackage("Package 1.1.4", p => { p.Element.Stereotype = Stereotype.CCLibrary; });
                        package_1_1.AddPackage("Package 1.1.5", p => { p.Element.Stereotype = Stereotype.BDTLibrary; });
                        package_1_1.AddPackage("Package 1.1.6", p => { p.Element.Stereotype = Stereotype.BIELibrary; });
                        package_1_1.AddPackage("Package 1.1.7", p => { p.Element.Stereotype = Stereotype.DOCLibrary; });
                    });
                    package_1.AddPackage("Package 1.2", package_1_2 => { package_1_2.Element.Stereotype = "Foo bar 1"; });
                });
                model.AddPackage("Package 2", package_2 => { package_2.Element.Stereotype = "Foo bar 2"; });
                model.AddPackage("Package 3", package_3 =>
                {
                    package_3.Element.Stereotype = Stereotype.bInformationV;
                    package_3.AddPackage("Package 3.1", package_3_1 =>
                    {
                        package_3_1.Element.Stereotype = Stereotype.bLibrary;
                        package_3_1.AddPackage("Package 3.1.1", package_3_1_1 => { package_3_1_1.Element.Stereotype = Stereotype.bLibrary; });
                        package_3_1.AddPackage("Package 3.1.2", package_3_1_2 => { package_3_1_2.Element.Stereotype = "Foo bar 3"; });
                    });
                });
            });
            validatingCcRepository = new ValidatingCCRepository(eaRepository);
        }
Ejemplo n.º 8
0
 public EntityAttributeController()
 {
     eaRep = new EARepository();
 }
Ejemplo n.º 9
0
 public static void UpdateRepository(Repository repository)
 {
     EARepository.UpdateRepository(repository);
 }
Ejemplo n.º 10
0
 public ProductAttributeController()
 {
     pRep  = new ProductRepository();
     paRep = new PARepository();
     eaRep = new EARepository();
 }
        public void Test_exporting_subset_of_complex_type_mapped_to_multiple_accs()
        {
            string schemaFileComplete = TestUtils.PathToTestResource(@"XSDExporterTest\mapping\SubsetExporter\exporting_subset_of_complex_type_mapped_to_multiple_accs\source.xsd");
            string schemaFileSubset   = TestUtils.PathToTestResource(@"XSDExporterTest\mapping\SubsetExporter\exporting_subset_of_complex_type_mapped_to_multiple_accs\subset\");

            EARepository eaRepository         = new EARepository();
            Element      bdtStringText        = null;
            Element      primString           = null;
            Element      abiePersonTypePerson = null;
            Element      abiePersonTypeNote   = null;

            #region EA Repository Subset

            eaRepository.AddModel(
                "Test Model Subset", m => m.AddPackage("bLibrary", bLibrary =>
            {
                bLibrary.Element.Stereotype = Stereotype.bLibrary;

                bLibrary.AddPackage("PRIMLibrary", package =>
                {
                    package.Element.Stereotype = Stereotype.PRIMLibrary;

                    primString = package.AddPRIM("String");
                });

                bLibrary.AddPackage("BDTLibrary", package =>
                {
                    package.Element.Stereotype = Stereotype.BDTLibrary;
                    bdtStringText = package.AddBDT("String_Text").With(e =>
                    {
                        e.Stereotype = Stereotype.BDT;
                        e.AddCON(primString);
                    });
                });


                bLibrary.AddPackage("BIELibrary", package =>
                {
                    package.Element.Stereotype     = Stereotype.BIELibrary;
                    Element abieAddressTypeAddress = package.AddClass("AddressType_Address").With(e =>
                    {
                        e.Stereotype = Stereotype.ABIE;
                        e.AddBBIE(bdtStringText, "City_CityName");
                    });
                    abiePersonTypePerson = package.AddClass("PersonType_Person").With(e =>
                    {
                        e.Stereotype = Stereotype.ABIE;
                        e.AddBBIE(bdtStringText, "Name_Name");
                        e.AddASBIE(abieAddressTypeAddress, "Address_Residence", EaAggregationKind.Composite);
                    });
                    abiePersonTypeNote = package.AddClass("PersonType_Note").With(e =>
                    {
                        e.Stereotype = Stereotype.ABIE;
                    });
                });

                bLibrary.AddPackage("DOCLibrary", package =>
                {
                    package.Element.Stereotype = Stereotype.DOCLibrary;

                    Element maPersonType = package.AddClass("PersonType").With(e =>
                    {
                        e.Stereotype = Stereotype.MA;
                        e.AddASMA(abiePersonTypePerson, "Person");
                        e.AddASMA(abiePersonTypeNote, "Note");
                    });

                    Element maPassportType = package.AddClass("PassportType").With(e =>
                    {
                        e.Stereotype = Stereotype.MA;
                        e.AddASMA(maPersonType, "Person");
                    });

                    package.AddClass("Austrian_Passport").With(e =>
                    {
                        e.Stereotype = Stereotype.MA;
                        e.AddASMA(maPassportType, "Passport");
                    });
                });
            }));

            #endregion

            ICctsRepository cctsRepository = CctsRepositoryFactory.CreateCctsRepository(eaRepository);

            IDocLibrary docLibrary = cctsRepository.GetDocLibraryByPath((Path)"Test Model Subset" / "bLibrary" / "DOCLibrary");

            SubsetExporter.ExportSubset(docLibrary, schemaFileComplete, schemaFileSubset);
        }
        public void Test_calculate_remaining_xsd_types_from_document_model()
        {
            EARepository eaRepository         = new EARepository();
            Element      bdtStringText        = null;
            Element      primString           = null;
            Element      abiePersonTypePerson = null;
            Element      abiePersonTypeNote   = null;

            #region EA Repository Subset

            eaRepository.AddModel(
                "Test Model Subset", m => m.AddPackage("bLibrary", bLibrary =>
            {
                bLibrary.Element.Stereotype = Stereotype.bLibrary;

                bLibrary.AddPackage("PRIMLibrary", package =>
                {
                    package.Element.Stereotype = Stereotype.PRIMLibrary;

                    primString = package.AddPRIM("String");
                });

                bLibrary.AddPackage("BDTLibrary", package =>
                {
                    package.Element.Stereotype = Stereotype.BDTLibrary;
                    bdtStringText = package.AddBDT("String_Text").With(e =>
                    {
                        e.Stereotype = Stereotype.BDT;
                        e.AddCON(primString);
                    });
                });


                bLibrary.AddPackage("BIELibrary", package =>
                {
                    package.Element.Stereotype     = Stereotype.BIELibrary;
                    Element abieAddressTypeAddress = package.AddClass("AddressType_Address").With(e =>
                    {
                        e.Stereotype = Stereotype.ABIE;
                        e.AddBBIE(bdtStringText, "City_CityName");
                    });
                    abiePersonTypePerson = package.AddClass("PersonType_Person").With(e =>
                    {
                        e.Stereotype = Stereotype.ABIE;
                        e.AddBBIE(bdtStringText, "Name_Name");
                        e.AddASBIE(abieAddressTypeAddress, "Address_Residence", EaAggregationKind.Composite);
                    });
                    abiePersonTypeNote = package.AddClass("PersonType_Note").With(e =>
                    {
                        e.Stereotype = Stereotype.ABIE;
                    });
                });

                bLibrary.AddPackage("DOCLibrary", package =>
                {
                    package.Element.Stereotype = Stereotype.DOCLibrary;

                    Element maPersonType = package.AddClass("PersonType").With(e =>
                    {
                        e.Stereotype = Stereotype.MA;
                        e.AddASMA(abiePersonTypePerson, "Person");
                        e.AddASMA(abiePersonTypeNote, "Note");
                    });

                    Element maPassportType = package.AddClass("PassportType").With(e =>
                    {
                        e.Stereotype = Stereotype.MA;
                        e.AddASMA(maPersonType, "Person");
                    });

                    package.AddClass("Austrian_Passport").With(e =>
                    {
                        e.Stereotype = Stereotype.MA;
                        e.AddASMA(maPassportType, "Passport");
                    });
                });
            }));

            #endregion

            ICctsRepository cctsRepository = CctsRepositoryFactory.CreateCctsRepository(eaRepository);

            IDocLibrary docLibrarySubset = cctsRepository.GetDocLibraryByPath((Path)"Test Model Subset" / "bLibrary" / "DOCLibrary");

            UpccModelXsdTypes existingXsdTypes = new UpccModelXsdTypes(docLibrarySubset);

            // Positive Assertions
            Assert.That(existingXsdTypes.Count, Is.EqualTo(4));

            Assert.That(existingXsdTypes.ContainsXsdType("String"), Is.True);
            Assert.That(existingXsdTypes.ContainsXsdType("AddressType"), Is.True);
            Assert.That(existingXsdTypes.ContainsXsdType("PersonType"), Is.True);
            Assert.That(existingXsdTypes.ContainsXsdType("PassportType"), Is.True);

            Assert.That(existingXsdTypes.NumberOfChildren("String"), Is.EqualTo(0));
            Assert.That(existingXsdTypes.NumberOfChildren("AddressType"), Is.EqualTo(1));
            Assert.That(existingXsdTypes.NumberOfChildren("PersonType"), Is.EqualTo(2));
            Assert.That(existingXsdTypes.NumberOfChildren("PassportType"), Is.EqualTo(1));

            Assert.That(existingXsdTypes.XsdTypeContainsChild("AddressType", "City"), Is.True);
            Assert.That(existingXsdTypes.XsdTypeContainsChild("PersonType", "Name"), Is.True);
            Assert.That(existingXsdTypes.XsdTypeContainsChild("PersonType", "Address"), Is.True);
            Assert.That(existingXsdTypes.XsdTypeContainsChild("PassportType", "Person"), Is.True);

            //Negative Assertions
            Assert.That(existingXsdTypes.ContainsXsdType("SuperDooperNonExistingType"), Is.False);

            Assert.That(existingXsdTypes.NumberOfChildren("SuperDooperNonExistingType"), Is.EqualTo(0));

            Assert.That(existingXsdTypes.XsdTypeContainsChild("AddressType", "NonExistingChild"), Is.False);
        }
        public void Test_model_diff()
        {
            EARepository eaRepository           = new EARepository();
            Element      cdtText                = null;
            Element      bdtStringText          = null;
            Element      primString             = null;
            Element      accAddress             = null;
            Element      accPerson              = null;
            Element      abieAddressTypeAddress = null;
            Element      abieAddressTypePerson  = null;

            #region EA Repository Complete

            eaRepository.AddModel(
                "Test Model Complete", m => m.AddPackage("bLibrary", bLibrary =>
            {
                bLibrary.Element.Stereotype = Stereotype.bLibrary;

                bLibrary.AddPackage("PRIMLibrary", package =>
                {
                    package.Element.Stereotype = Stereotype.PRIMLibrary;

                    primString = package.AddPRIM("String");
                });

                bLibrary.AddPackage("CDTLibrary", package =>
                {
                    package.Element.Stereotype = Stereotype.CDTLibrary;

                    cdtText = package.AddCDT("Text").With(e =>
                    {
                        e.Stereotype = Stereotype.CDT;
                        e.AddCON(primString);
                        e.AddSUPs(primString, "Language", "LanguageLocale");
                    });
                });

                bLibrary.AddPackage("CCLibrary", package =>
                {
                    package.Element.Stereotype = Stereotype.CCLibrary;

                    accAddress = package.AddClass("Address")
                                 .With(e => e.Stereotype = Stereotype.ACC)
                                 .With(e => e.AddBCCs(cdtText, "StreetName", "CityName", "AttentionOf"));

                    accPerson = package.AddClass("Person")
                                .With(e => e.Stereotype = Stereotype.ACC)
                                .With(e => e.AddBCCs(cdtText, "Name", "Title", "Salutation"));
                });

                bLibrary.AddPackage("BDTLibrary", package =>
                {
                    package.Element.Stereotype = Stereotype.BDTLibrary;
                    bdtStringText = package.AddBDT("String_Text").With(e =>
                    {
                        e.Stereotype = Stereotype.BDT;
                        e.AddBasedOnDependency(cdtText);
                        e.AddCON(primString);
                    });
                });


                bLibrary.AddPackage("BIELibrary", package =>
                {
                    package.Element.Stereotype = Stereotype.BIELibrary;
                    abieAddressTypeAddress     = package.AddClass("AddressType_Address").With(e =>
                    {
                        e.Stereotype = Stereotype.ABIE;
                        e.AddBasedOnDependency(accAddress);
                        e.AddBBIE(bdtStringText, "Town_CityName");
                    });
                    abieAddressTypePerson = package.AddClass("AddressType_Person").With(e =>
                    {
                        e.Stereotype = Stereotype.ABIE;
                        e.AddBasedOnDependency(accPerson);
                        e.AddBBIE(bdtStringText, "PersonName_Name");
                    });
                });

                bLibrary.AddPackage("DOCLibrary", package =>
                {
                    package.Element.Stereotype = Stereotype.DOCLibrary;

                    Element maAddressType = package.AddClass("AddressType").With(e =>
                    {
                        e.Stereotype = Stereotype.MA;
                        e.AddASMA(abieAddressTypeAddress, "Address");
                        e.AddASMA(abieAddressTypePerson, "Person");
                    });

                    Element maInvoiceType = package.AddClass("InvoiceType").With(e =>
                    {
                        e.Stereotype = Stereotype.MA;
                        e.AddASMA(maAddressType, "Address");
                    });

                    package.AddClass("Test_Invoice").With(e =>
                    {
                        e.Stereotype = Stereotype.MA;
                        e.AddASMA(maInvoiceType, "Invoice");
                    });
                });
            }));

            #endregion

            #region EA Repository Subset

            eaRepository.AddModel(
                "Test Model Subset", m => m.AddPackage("bLibrary", bLibrary =>
            {
                bLibrary.Element.Stereotype = Stereotype.bLibrary;

                bLibrary.AddPackage("PRIMLibrary", package =>
                {
                    package.Element.Stereotype = Stereotype.PRIMLibrary;

                    primString = package.AddPRIM("String");
                });

                bLibrary.AddPackage("CDTLibrary", package =>
                {
                    package.Element.Stereotype = Stereotype.CDTLibrary;

                    cdtText = package.AddCDT("Text").With(e =>
                    {
                        e.Stereotype = Stereotype.CDT;
                        e.AddCON(primString);
                        e.AddSUPs(primString, "Language", "LanguageLocale");
                    });
                });

                bLibrary.AddPackage("CCLibrary", package =>
                {
                    package.Element.Stereotype = Stereotype.CCLibrary;

                    accAddress = package.AddClass("Address")
                                 .With(e => e.Stereotype = Stereotype.ACC)
                                 .With(e => e.AddBCCs(cdtText, "StreetName", "CityName", "AttentionOf"));

                    accPerson = package.AddClass("Person")
                                .With(e => e.Stereotype = Stereotype.ACC)
                                .With(e => e.AddBCCs(cdtText, "Name", "Title", "Salutation"));
                });

                bLibrary.AddPackage("BDTLibrary", package =>
                {
                    package.Element.Stereotype = Stereotype.BDTLibrary;
                    bdtStringText = package.AddBDT("String_Text").With(e =>
                    {
                        e.Stereotype = Stereotype.BDT;
                        e.AddBasedOnDependency(cdtText);
                        e.AddCON(primString);
                    });
                });


                bLibrary.AddPackage("BIELibrary", package =>
                {
                    package.Element.Stereotype = Stereotype.BIELibrary;
                    abieAddressTypeAddress     = package.AddClass("AddressType_Address").With(e =>
                    {
                        e.Stereotype = Stereotype.ABIE;
                        e.AddBasedOnDependency(accAddress);
                        e.AddBBIE(bdtStringText, "Town_CityName");
                    });
                    abieAddressTypePerson = package.AddClass("AddressType_Person").With(e =>
                    {
                        e.Stereotype = Stereotype.ABIE;
                        e.AddBasedOnDependency(accPerson);
                    });
                });

                bLibrary.AddPackage("DOCLibrary", package =>
                {
                    package.Element.Stereotype = Stereotype.DOCLibrary;

                    Element maAddressType = package.AddClass("AddressType").With(e =>
                    {
                        e.Stereotype = Stereotype.MA;
                        e.AddASMA(abieAddressTypeAddress, "Address");
                        e.AddASMA(abieAddressTypePerson, "Person");
                    });

                    Element maInvoiceType = package.AddClass("InvoiceType").With(e =>
                    {
                        e.Stereotype = Stereotype.MA;
                        e.AddASMA(maAddressType, "Address");
                    });

                    package.AddClass("Test_Invoice").With(e =>
                    {
                        e.Stereotype = Stereotype.MA;
                        e.AddASMA(maInvoiceType, "Invoice");
                    });
                });
            }));

            #endregion

            ICctsRepository cctsRepository = CctsRepositoryFactory.CreateCctsRepository(eaRepository);

            IDocLibrary docLibraryComplete = cctsRepository.GetDocLibraryByPath((Path)"Test Model Complete" / "bLibrary" / "DOCLibrary");
            IDocLibrary docLibrarySubset   = cctsRepository.GetDocLibraryByPath((Path)"Test Model Subset" / "bLibrary" / "DOCLibrary");

            Dictionary <string, List <string> > mutatedComplexTypes = new UpccModelDiff(docLibraryComplete, docLibrarySubset).CalculateDiff();

            Dictionary <string, List <string> > expectedMutatedComplexTypes = new Dictionary <string, List <string> >();
            expectedMutatedComplexTypes.Add("AddressType", new List <string> {
                "PersonName"
            });

            Assert.That(mutatedComplexTypes.Keys, Is.EquivalentTo(expectedMutatedComplexTypes.Keys), "Defective Complex Type Mutation.");

            foreach (string complexTypeName in expectedMutatedComplexTypes.Keys)
            {
                Assert.That(mutatedComplexTypes[complexTypeName], Is.EquivalentTo(expectedMutatedComplexTypes[complexTypeName]), "Difference between Complex Type Mutation and expected Complex Type Mutation: " + complexTypeName + ".");
            }
        }