public void CopyAndPasteInSingleDiagramTest() { var shapeColor = Color.Red; ChangeEntityTypesFillColorTest( "CopyAndPasteSingle", shapeColor, (artifact, commandProcessor) => { var entityDesignerDiagram = GetDocData(commandProcessor.EditingContext).GetEntityDesignerDiagram(); Assert.IsNotNull(entityDesignerDiagram, "Could not get an instance of EntityDesignerDiagram from editingcontext."); var author = entityDesignerDiagram.GetShape("author"); Assert.IsNotNull(author, "Could not get DSL entity type shape instance of 'author'."); var titleAuthor = entityDesignerDiagram.GetShape("titleauthor"); Assert.IsNotNull(titleAuthor, "Could not get DSL entity type shape instance of 'titleauthor'."); entityDesignerDiagram.SelectDiagramItems(new[] { author, titleAuthor }); DesignerUtilities.Copy(Dte); DesignerUtilities.Paste(Dte); var authorCopy = entityDesignerDiagram.GetShape("author1"); Assert.IsNotNull(authorCopy, "Entity: 'author1' should have been created."); var authorCopyModel = (EntityType) authorCopy.TypedModelElement.EntityDesignerViewModel.ModelXRef.GetExisting(authorCopy.TypedModelElement); Assert.IsNotNull( authorCopyModel.GetAntiDependenciesOfType <AssociationEnd>().FirstOrDefault(), "The association between author1 and titleauthor1 should have been created."); Assert.AreEqual(shapeColor, authorCopy.FillColor); var titleAuthorCopy = entityDesignerDiagram.GetShape("titleauthor1"); Assert.IsNotNull(titleAuthorCopy, "Entity: 'titleauthor1' should have been created."); Assert.AreEqual(shapeColor, titleAuthorCopy.FillColor); }); }
public void CopyAndPasteInMultipleDiagramsTest() { var shapeColor = Color.Brown; ChangeEntityTypesFillColorTest( "CopyAndPasteMulti", shapeColor, (artifact, commandProcessorContext) => { var docData = GetDocData(commandProcessorContext.EditingContext); var entityDesignerDiagram = docData.GetEntityDesignerDiagram(); Assert.IsNotNull(entityDesignerDiagram, "Could not get an instance of EntityDesignerDiagram from editingcontext."); var author = entityDesignerDiagram.GetShape("author"); Assert.IsNotNull(author, "Could not get DSL entity type shape instance of 'author'."); var titleAuthor = entityDesignerDiagram.GetShape("titleauthor"); Assert.IsNotNull(titleAuthor, "Could not get DSL entity type shape instance of 'titleauthor'."); entityDesignerDiagram.SelectDiagramItems(new[] { author, titleAuthor }); DesignerUtilities.Copy(Dte); var diagram = CreateDiagramCommand.CreateDiagramWithDefaultName(commandProcessorContext); docData.OpenDiagram(diagram.Id.Value); DesignerUtilities.Paste(Dte); // Get the newly created diagram. entityDesignerDiagram = docData.GetEntityDesignerDiagram(diagram.Id.Value); author = entityDesignerDiagram.GetShape("author"); Assert.IsNotNull(author, "Entity: 'author' should exists in diagram:" + diagram.Name); titleAuthor = entityDesignerDiagram.GetShape("titleauthor"); Assert.IsNotNull(titleAuthor, "Entity: 'titleauthor' should exists in diagram:" + diagram.Name); var associationConnector = entityDesignerDiagram.NestedChildShapes.OfType <EntityDesignerView.AssociationConnector>().FirstOrDefault(); Assert.IsNotNull( associationConnector, "There should have been association connector created between entities 'author' and 'titleauthor'."); var entityDesignerViewModel = entityDesignerDiagram.ModelElement; Assert.IsNotNull(entityDesignerViewModel, "Diagram's ModelElement is not a type of EntityDesignerViewModel"); var association = (Association)entityDesignerViewModel.ModelXRef.GetExisting(associationConnector.ModelElement); Assert.IsNotNull( association, "Could not find association for associationConnector" + associationConnector.AccessibleName + " from Model Xref."); var entityTypesInAssociation = association.AssociationEnds().Select(ae => ae.Type.Target).Distinct().ToList(); Assert.AreEqual(2, entityTypesInAssociation.Count); Assert.IsFalse( entityTypesInAssociation.Any(et => et.LocalName.Value != "author" && et.LocalName.Value != "titleauthor"), "The association between author and title-author is not created in diagram: " + diagram.Name); Assert.AreEqual(shapeColor, author.FillColor); Assert.AreEqual(shapeColor, titleAuthor.FillColor); }); }