package org.eclipse.uml2.diagram.clazz.tests.tool; import java.util.List; import org.eclipse.draw2d.geometry.Point; import org.eclipse.emf.ecore.EObject; import org.eclipse.gmf.runtime.diagram.ui.editparts.ConnectionEditPart; import org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramEditPart; import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; import org.eclipse.uml2.diagram.clazz.edit.parts.AssociationClass2EditPart; import org.eclipse.uml2.diagram.clazz.edit.parts.Class2EditPart; import org.eclipse.uml2.diagram.clazz.edit.parts.Generalization2EditPart; import org.eclipse.uml2.diagram.clazz.edit.parts.GeneralizationEditPart; import org.eclipse.uml2.diagram.clazz.edit.parts.GeneralizationGeneralEditPart; import org.eclipse.uml2.diagram.clazz.edit.parts.GeneralizationSetEditPart; import org.eclipse.uml2.diagram.clazz.edit.parts.PrimitiveType2EditPart; import org.eclipse.uml2.diagram.clazz.part.CreateGeneralizationLinkTool; import org.eclipse.uml2.diagram.clazz.part.UMLVisualIDRegistry; import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; import org.eclipse.uml2.diagram.common.tests.UMLDiagramFacade; import org.eclipse.uml2.uml.Generalization; import org.eclipse.uml2.uml.GeneralizationSet; import org.eclipse.uml2.uml.UMLPackage; public class GeneralizationSetCreationToolTest extends ClassDiagramCreationToolTest{ private IGraphicalEditPart mySource1EP; private IGraphicalEditPart myTargetEP; private ConnectionEditPart myGeneralizationEP; private IGraphicalEditPart mySource2EP; private IGraphicalEditPart myGeneralizationSetEP; public GeneralizationSetCreationToolTest(String name) { super(name); // TODO Auto-generated constructor stub } @Override protected void setUp() throws Exception { super.setUp(); DiagramEditPart diagram = getDiagramEditPart(); createNodeByTool(UMLElementTypes.PrimitiveType_2005, 10, 200); mySource2EP = diagram.getChildBySemanticHint(UMLVisualIDRegistry.getType(PrimitiveType2EditPart.VISUAL_ID)); assertNotNull("ClassEditPart was not created.", mySource2EP); createNodeByTool(UMLElementTypes.Class_2001, 10, 10); mySource1EP = diagram.getChildBySemanticHint(UMLVisualIDRegistry.getType(Class2EditPart.VISUAL_ID)); assertNotNull("ClassEditPart was not created.", mySource1EP); createNodeByTool(UMLElementTypes.AssociationClass_2007, 10, 100); myTargetEP = diagram.getChildBySemanticHint(UMLVisualIDRegistry.getType(AssociationClass2EditPart.VISUAL_ID)); assertNotNull("ClassEditPart was not created.", myTargetEP); UMLDiagramFacade.flushEventQueue(); createConnectionByTool(new CreateGeneralizationLinkTool(), mySource2EP, myTargetEP); myGeneralizationEP = findConnection(diagram, GeneralizationEditPart.VISUAL_ID); assertNotNull("GeneralizationEditPart was not created.", myGeneralizationEP); myGeneralizationSetEP = createGeneralizationSet(mySource1EP, myGeneralizationEP); assertNotNull("GeneralizationSetEditPart was not created.", myGeneralizationSetEP); } protected IGraphicalEditPart createGeneralizationSet(IGraphicalEditPart sourceEP, ConnectionEditPart targetEP) { UMLDiagramFacade.flushEventQueue(); Point source = sourceEP.getFigure().getBounds().getTopLeft(); Point target1 = targetEP.getConnectionFigure().getPoints().getFirstPoint(); Point target2 = targetEP.getConnectionFigure().getPoints().getLastPoint(); Point target = new Point((target1.x + target2.x)/2, (target1.y + target2.y)/2); createConnectionByTool(new CreateGeneralizationLinkTool(), source.x, source.y, target.x, target.y); UMLDiagramFacade.flushEventQueue(); return getDiagramEditPart().getChildBySemanticHint(UMLVisualIDRegistry.getType(GeneralizationSetEditPart.VISUAL_ID)); } public void testGeneralizationSetCreation() { } public void testGeneralizationSetGeneralCreation1() { ConnectionEditPart general = findConnection(getDiagramEditPart(), GeneralizationGeneralEditPart.VISUAL_ID); assertNotNull("Generalization_General should be created.", general); } public void testGeneralizationSetGeneralCreation2() { ConnectionEditPart general = findConnection(getDiagramEditPart(), GeneralizationGeneralEditPart.VISUAL_ID); assertNotNull(general); assertEquals("Incorrect GeneralizationGeneralEditPart source.", myGeneralizationSetEP, general.getSource()); } public void testGeneralizationSetGeneralCreation3() { ConnectionEditPart general = findConnection(getDiagramEditPart(), GeneralizationGeneralEditPart.VISUAL_ID); assertNotNull(general); assertEquals("Incorrect GeneralizationGeneralEditPart target.", myTargetEP, general.getTarget()); } public void testGeneralizationEditPartCreation1() { List<ConnectionEditPart> generalizations = findAllConnections(getDiagramEditPart(), GeneralizationEditPart.VISUAL_ID); assertEquals("GeneralizationEditPart shouldn't be on diagram afer GeneralizationSet creation", 0, generalizations.size()); } public void testGeneralization2EditPartCreation1() { List<ConnectionEditPart> generalizations2 = findAllConnections(getDiagramEditPart(), Generalization2EditPart.VISUAL_ID); assertEquals("Two Generalization2EditPart should be created.", 2, generalizations2.size()); } public void testGeneralizationTarget1() { List<ConnectionEditPart> generalizations2 = findAllConnections(getDiagramEditPart(), Generalization2EditPart.VISUAL_ID); assertEquals("Two Generalization2EditPart should be created.", 2, generalizations2.size()); ConnectionEditPart first = generalizations2.get(0); assertEquals("GeneralizationSet should be target for the created Generalization.", myGeneralizationSetEP, first.getTarget()); } public void testGeneralizationTarget2() { List<ConnectionEditPart> generalizations2 = findAllConnections(getDiagramEditPart(), Generalization2EditPart.VISUAL_ID); assertEquals("Two Generalization2EditPart should be created", 2, generalizations2.size()); ConnectionEditPart second = generalizations2.get(1); assertEquals("GeneralizationSet should be target for the created Generalization.", myGeneralizationSetEP, second.getTarget()); } public void testGeneralizationSource() { List<ConnectionEditPart> generalizations2 = findAllConnections(getDiagramEditPart(), Generalization2EditPart.VISUAL_ID); assertEquals("Two Generalization2EditPart should be created.", 2, generalizations2.size()); ConnectionEditPart first = generalizations2.get(0); ConnectionEditPart second = generalizations2.get(1); boolean directOrder = mySource1EP.equals(first.getSource()); if (directOrder) { assertEquals("", mySource2EP, second.getSource()); } else { assertEquals(mySource1EP, second.getSource()); assertEquals(mySource2EP, first.getSource()); } } public void testGeneralizationSetCreationInSemanticModel() { EObject generalizationSet = myGeneralizationSetEP.getNotationView().getElement(); assertEquals("GeneralizationSet should be created fot GeneralizationSetEditPart in semantic model. ", UMLPackage.eINSTANCE.getGeneralizationSet(), generalizationSet.eClass()); } public void testGeneralizationCreationInSemanticModel1() { List<ConnectionEditPart> generalizations2 = findAllConnections(getDiagramEditPart(), Generalization2EditPart.VISUAL_ID); assertEquals("Two Generalization2EditPart should be created", 2, generalizations2.size()); EObject generalization = generalizations2.get(0).getNotationView().getElement(); assertEquals("Generalization should be created in Semantic model for the first found GeneralizationEditPart", UMLPackage.eINSTANCE.getGeneralization(), generalization.eClass()); } public void testGeneralizationCreationInSemanticModel2() { List<ConnectionEditPart> generalizations2 = findAllConnections(getDiagramEditPart(), Generalization2EditPart.VISUAL_ID); assertEquals("Two Generalization2EditPart should be created", 2, generalizations2.size()); EObject generalization = generalizations2.get(1).getNotationView().getElement(); assertEquals("Generalization should be created in Semantic model for the second found GeneralizationEditPart", UMLPackage.eINSTANCE.getGeneralization(), generalization.eClass()); } public void testGeneralizationGeneralCreationInSemanticModel1() { List<ConnectionEditPart> generalizations2 = findAllConnections(getDiagramEditPart(), Generalization2EditPart.VISUAL_ID); assertEquals("Two Generalization2EditParts should be created", 2, generalizations2.size()); EObject generalization = generalizations2.get(0).getNotationView().getElement(); assertEquals("Generalization should be created in Semantic model for the first found GeneralizationEditPart", UMLPackage.eINSTANCE.getGeneralization(), generalization.eClass()); assertEquals("GeneralizationSet should be set for first created Generalization", 1, ((Generalization)generalization).getGeneralizationSets().size()); } public void testGeneralizationGeneralCreationInSemanticModel2() { List<ConnectionEditPart> generalizations2 = findAllConnections(getDiagramEditPart(), Generalization2EditPart.VISUAL_ID); assertEquals("Two Generalization2EditParts should be created", 2, generalizations2.size()); EObject generalization = generalizations2.get(1).getNotationView().getElement(); assertEquals("Generalization should be created in Semantic model for the second found GeneralizationEditPart", UMLPackage.eINSTANCE.getGeneralization(), generalization.eClass()); assertEquals("GeneralizationSet should be set for second created Generalization", 1, ((Generalization)generalization).getGeneralizationSets().size()); } public void testGeneralizationGeneralTargetInSemanticModel1() { GeneralizationSet generalizationSet = (GeneralizationSet) myGeneralizationSetEP.getNotationView().getElement(); List<ConnectionEditPart> generalizations2 = findAllConnections(getDiagramEditPart(), Generalization2EditPart.VISUAL_ID); assertEquals("Two Generalization2EditParts should be created", 2, generalizations2.size()); EObject generalization = generalizations2.get(0).getNotationView().getElement(); assertEquals("Generalization should be created in Semantic model for the first found GeneralizationEditPart", UMLPackage.eINSTANCE.getGeneralization(), generalization.eClass()); assertEquals("GeneralizationSet should be set for first created Generalization", 1, ((Generalization)generalization).getGeneralizationSets().size()); GeneralizationSet actualTarget = ((Generalization)generalization).getGeneralizationSets().get(0); assertEquals("", generalizationSet, actualTarget); } public void testGeneralizationGeneralTargetInSemanticModel2() { GeneralizationSet generalizationSet = (GeneralizationSet) myGeneralizationSetEP.getNotationView().getElement(); List<ConnectionEditPart> generalizations2 = findAllConnections(getDiagramEditPart(), Generalization2EditPart.VISUAL_ID); assertEquals("Two Generalization2EditParts should be created", 2, generalizations2.size()); EObject generalization = generalizations2.get(1).getNotationView().getElement(); assertEquals("Generalization should be created in Semantic model for the second found GeneralizationEditPart", UMLPackage.eINSTANCE.getGeneralization(), generalization.eClass()); assertEquals("GeneralizationSet should be set for second created Generalization", 1, ((Generalization)generalization).getGeneralizationSets().size()); GeneralizationSet actualTarget = ((Generalization)generalization).getGeneralizationSets().get(0); assertEquals("", generalizationSet, actualTarget); } }