Skip to main content
aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorCamille Letavernier2014-02-03 15:29:31 +0000
committerCamille Letavernier2014-02-03 15:30:14 +0000
commitb220448a1832ba23a36390e02a59eab4a576746b (patch)
tree777865717c63814b34ce4bbb8e322064a89e6bc1 /tests
parent62afbe8931dcc27e9a516bf31cb0fcc42c25c6d5 (diff)
parentee60cb4fcf072a73cdb3e58c143f8829de9f8e8b (diff)
downloadorg.eclipse.papyrus-b220448a1832ba23a36390e02a59eab4a576746b.tar.gz
org.eclipse.papyrus-b220448a1832ba23a36390e02a59eab4a576746b.tar.xz
org.eclipse.papyrus-b220448a1832ba23a36390e02a59eab4a576746b.zip
Merge sequence diagram improvements to master
Diffstat (limited to 'tests')
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/META-INF/MANIFEST.MF3
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/org.eclipse.papyrus.uml.diagram.sequence.tests.launch2
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/AllTests.java3
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/m7/TestGateNameOnCombinedFragment.java8
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/m7/TestGraphicalGate_389531.java9
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/m7/TestMakeSameHeightForLifelines_402978.java10
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/AllTests_20130916.java28
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/BaseStereotypesTest.java473
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/CombinedFragmentStereotypesTest.java58
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/ContinuationStereotypesTest.java66
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/DurationConstraintStereotypesTest.java58
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/DurationObservationStereotypesTest.java57
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/ExecutionSpecificationStereotypesTest.java64
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/Fixbug_EditorCrashesWhenMovingGeneralOrdering_417373.java58
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/Fixbug_LifelineManagement_417365.java316
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/Fixbug_OrderFragmentsAfterMessageReconnection_417375.java150
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/Fixbug_OrderFragmentsAfterResizeExecutions_417374.java93
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/GateStereotypesTest.java104
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/GeneralOrderingStereotypesTest.java62
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/InteractionOperandStereotypesTest.java63
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/InteractionStereotypesTest.java95
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/InteractionUseStereotypesTest.java58
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/LifelineStereotypesTest.java69
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/MessageStereotypesTest.java124
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/New_DisplayBehaviorForBehaviorExecutionSpecification_417376.java158
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/New_DisplayInvariantForStateInvariant_417377.java179
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/StateInvariantStereotypesTest.java59
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/TimeConstraintStereotypesTest.java72
-rw-r--r--tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/TimeObservationStereotypesTest.java66
29 files changed, 2554 insertions, 11 deletions
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/META-INF/MANIFEST.MF b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/META-INF/MANIFEST.MF
index b710378db47..e228450e321 100644
--- a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/META-INF/MANIFEST.MF
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/META-INF/MANIFEST.MF
@@ -16,7 +16,8 @@ Require-Bundle: org.eclipse.ui,
org.eclipse.ui.ide;bundle-version="3.9.0",
org.eclipse.papyrus.infra.core.log;bundle-version="1.0.0",
org.eclipse.papyrus.uml.tools.utils;bundle-version="1.0.0",
- org.eclipse.papyrus.infra.emf.appearance;bundle-version="1.0.0"
+ org.eclipse.papyrus.infra.emf.appearance;bundle-version="1.0.0",
+ org.eclipse.papyrus.uml.appearance;bundle-version="1.0.0"
Export-Package: org.eclipse.papyrus.uml.diagram.sequence.tests
Bundle-Vendor: %Bundle-Vendor
Bundle-ActivationPolicy: lazy
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/org.eclipse.papyrus.uml.diagram.sequence.tests.launch b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/org.eclipse.papyrus.uml.diagram.sequence.tests.launch
index d49cc5a0e83..348a22d17b4 100644
--- a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/org.eclipse.papyrus.uml.diagram.sequence.tests.launch
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/org.eclipse.papyrus.uml.diagram.sequence.tests.launch
@@ -29,7 +29,7 @@
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.papyrus.uml.diagram.sequence.tests"/>
<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dosgi.requiredJavaVersion=1.5 -Xms256m -Xmx1024m -XX:MaxPermSize=512M"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dosgi.requiredJavaVersion=1.6 -Xms40m -Xmx2048m -XX:MaxPermSize=2048m"/>
<stringAttribute key="pde.version" value="3.3"/>
<stringAttribute key="product" value="org.eclipse.sdk.ide"/>
<booleanAttribute key="run_in_ui_thread" value="true"/>
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/AllTests.java b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/AllTests.java
index 1d9ecdda777..ed252562149 100644
--- a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/AllTests.java
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/AllTests.java
@@ -16,6 +16,7 @@ package org.eclipse.papyrus.uml.diagram.sequence.tests;
import org.eclipse.papyrus.uml.diagram.sequence.tests.bug.BugTests;
import org.eclipse.papyrus.uml.diagram.sequence.tests.bug.BugTests2;
import org.eclipse.papyrus.uml.diagram.sequence.tests.bug.m7.BugTest_m7;
+import org.eclipse.papyrus.uml.diagram.sequence.tests.bug.pro20130916.AllTests_20130916;
import org.eclipse.papyrus.uml.diagram.sequence.tests.canonical.AllCanonicalTests;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
@@ -25,6 +26,6 @@ import org.junit.runners.Suite.SuiteClasses;
* All tests together.
*/
@RunWith(Suite.class)
-@SuiteClasses({ AllCanonicalTests.class, BugTests.class, BugTests2.class, BugTest_m7.class })
+@SuiteClasses({ AllCanonicalTests.class, BugTests.class, BugTests2.class, BugTest_m7.class, AllTests_20130916.class })
public class AllTests {
}
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/m7/TestGateNameOnCombinedFragment.java b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/m7/TestGateNameOnCombinedFragment.java
index b10eaec987f..b6cccace00c 100644
--- a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/m7/TestGateNameOnCombinedFragment.java
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/m7/TestGateNameOnCombinedFragment.java
@@ -37,6 +37,7 @@ import org.eclipse.papyrus.uml.diagram.sequence.providers.UMLElementTypes;
import org.eclipse.papyrus.uml.diagram.sequence.util.GateHelper;
import org.eclipse.papyrus.uml.diagram.sequence.util.SequenceRequestConstant;
import org.eclipse.papyrus.uml.diagram.sequence.util.SequenceUtil;
+import org.eclipse.swt.widgets.Control;
import org.eclipse.uml2.uml.CombinedFragment;
import org.eclipse.uml2.uml.Gate;
import org.eclipse.uml2.uml.Lifeline;
@@ -206,12 +207,15 @@ public class TestGateNameOnCombinedFragment extends AbstractNodeTest {
label.translateToAbsolute(b);
req.setLocation(b.getCenter());
req.getExtendedData().put(SequenceRequestConstant.DIRECT_EDIT_AFTER_CREATION, true);
- messageEditPart.performRequest(req);
+// messageEditPart.performRequest(req);
waitForComplete();
//Deactive the Popup Editor.
- messageEditPart.getViewer().getControl().setFocus();
+ Control control = messageEditPart.getViewer().getControl();
+ control.setFocus();
+ Control focusControl = control.getDisplay().getFocusControl();
+
waitForComplete();
}
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/m7/TestGraphicalGate_389531.java b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/m7/TestGraphicalGate_389531.java
index 76d4c0c65a9..2ce78589404 100644
--- a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/m7/TestGraphicalGate_389531.java
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/m7/TestGraphicalGate_389531.java
@@ -15,6 +15,7 @@ package org.eclipse.papyrus.uml.diagram.sequence.tests.bug.m7;
import java.util.List;
+import org.eclipse.draw2d.IFigure;
import org.eclipse.draw2d.geometry.Dimension;
import org.eclipse.draw2d.geometry.Point;
import org.eclipse.draw2d.geometry.Rectangle;
@@ -27,6 +28,7 @@ import org.eclipse.gef.requests.CreationFactory;
import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;
import org.eclipse.gmf.runtime.emf.type.core.IElementType;
+import org.eclipse.papyrus.uml.diagram.common.figure.node.ILabelFigure;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.AbstractExecutionSpecificationEditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.AbstractMessageEditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.CombinedFragmentEditPart;
@@ -143,7 +145,12 @@ public class TestGraphicalGate_389531 extends AbstractNodeTest {
protected String getGateName(GateEditPart gateEditPart) {
IGraphicalEditPart label = gateEditPart.getChildBySemanticHint(GateNameEditPart.GATE_NAME_TYPE);
if(label != null) {
- return ((WrappingLabel)label.getFigure()).getText();
+ IFigure figure = label.getFigure();
+ if(figure instanceof WrappingLabel) {
+ return ((WrappingLabel)figure).getText();
+ } else if(figure instanceof ILabelFigure) {
+ return ((ILabelFigure)figure).getText();
+ }
}
return null;
}
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/m7/TestMakeSameHeightForLifelines_402978.java b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/m7/TestMakeSameHeightForLifelines_402978.java
index 00a98c92974..32f902306ec 100644
--- a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/m7/TestMakeSameHeightForLifelines_402978.java
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/m7/TestMakeSameHeightForLifelines_402978.java
@@ -48,7 +48,7 @@ public class TestMakeSameHeightForLifelines_402978 extends AbstractNodeTest {
protected String getFileName() {
return ISequenceDiagramTestsConstants.FILE_NAME;
}
-
+
@Test
public void testLifelinesSameSizeHeight() {
LifelineEditPart lifeline1 = (LifelineEditPart)createNode(UMLElementTypes.Lifeline_3001, getRootEditPart(), new Point(100, 100), new Dimension(80, 100));
@@ -62,8 +62,8 @@ public class TestMakeSameHeightForLifelines_402978 extends AbstractNodeTest {
assertNotNull("Same size height action", sameSizeHeight);
executeAction(sameSizeHeight);
waitForComplete();
- assertEquals("lifeline1 height", 200, getAbsoluteBounds(lifeline1).height);
- assertEquals("lifeline2 height", 200, getAbsoluteBounds(lifeline2).height);
+ assertTrue("lifeline1 height", Math.abs(200 - getAbsoluteBounds(lifeline1).height) <= 1);//From CSS plugin, there is 1 pixel missing.
+ assertTrue("lifeline2 height", Math.abs(200 - getAbsoluteBounds(lifeline2).height) <= 1);//From CSS plugin, there is 1 pixel missing.
}
@Test
@@ -79,8 +79,8 @@ public class TestMakeSameHeightForLifelines_402978 extends AbstractNodeTest {
assertNotNull("Same size both action", sameSizeBoth);
executeAction(sameSizeBoth);
waitForComplete();
- assertEquals("lifeline1 height", 300, getAbsoluteBounds(lifeline1).height);
- assertEquals("lifeline2 height", 300, getAbsoluteBounds(lifeline2).height);
+ assertTrue("lifeline1 height", Math.abs(300 - getAbsoluteBounds(lifeline1).height) <= 1);//From CSS plugin, there is 1 pixel missing.
+ assertTrue("lifeline2 height", Math.abs(300 - getAbsoluteBounds(lifeline2).height) <= 1);//From CSS plugin, there is 1 pixel missing.
}
private void executeAction(final IContributionItem action) {
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/AllTests_20130916.java b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/AllTests_20130916.java
new file mode 100644
index 00000000000..de64c7d6067
--- /dev/null
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/AllTests_20130916.java
@@ -0,0 +1,28 @@
+/*****************************************************************************
+ * Copyright (c) 2013 CEA
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Soyatec - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.uml.diagram.sequence.tests.bug.pro20130916;
+
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+import org.junit.runners.Suite.SuiteClasses;
+
+
+/**
+ * @author Jin Liu (jin.liu@soyatec.com)
+ */
+@RunWith(Suite.class)
+@SuiteClasses({ CombinedFragmentStereotypesTest.class, ContinuationStereotypesTest.class, DurationConstraintStereotypesTest.class, DurationObservationStereotypesTest.class, ExecutionSpecificationStereotypesTest.class, Fixbug_EditorCrashesWhenMovingGeneralOrdering_417373.class, Fixbug_OrderFragmentsAfterMessageReconnection_417375.class, Fixbug_OrderFragmentsAfterResizeExecutions_417374.class, GateStereotypesTest.class, GeneralOrderingStereotypesTest.class, InteractionOperandStereotypesTest.class, InteractionStereotypesTest.class, InteractionUseStereotypesTest.class, LifelineStereotypesTest.class, MessageStereotypesTest.class, New_DisplayBehaviorForBehaviorExecutionSpecification_417376.class, New_DisplayInvariantForStateInvariant_417377.class, StateInvariantStereotypesTest.class, TimeConstraintStereotypesTest.class, TimeObservationStereotypesTest.class, Fixbug_LifelineManagement_417365.class })
+public class AllTests_20130916 {
+
+}
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/BaseStereotypesTest.java b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/BaseStereotypesTest.java
new file mode 100644
index 00000000000..a226a2b133e
--- /dev/null
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/BaseStereotypesTest.java
@@ -0,0 +1,473 @@
+/*****************************************************************************
+ * Copyright (c) 2013 CEA
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Soyatec - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.uml.diagram.sequence.tests.bug.pro20130916;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.StringTokenizer;
+
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.Label;
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.draw2d.text.TextFlow;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EModelElement;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.gef.EditPart;
+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.ConnectionNodeEditPart;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramEditPart;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart;
+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;
+import org.eclipse.gmf.runtime.notation.Edge;
+import org.eclipse.gmf.runtime.notation.Node;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.papyrus.infra.gmfdiag.common.editpart.IPapyrusEditPart;
+import org.eclipse.papyrus.uml.appearance.helper.AppliedStereotypeHelper;
+import org.eclipse.papyrus.uml.appearance.helper.UMLVisualInformationPapyrusConstant;
+import org.eclipse.papyrus.uml.diagram.common.Activator;
+import org.eclipse.papyrus.uml.diagram.common.figure.node.ILabelFigure;
+import org.eclipse.papyrus.uml.diagram.common.figure.node.IPapyrusNodeUMLElementFigure;
+import org.eclipse.papyrus.uml.diagram.sequence.tests.bug.m7.AbstractNodeTest;
+import org.eclipse.papyrus.uml.diagram.sequence.util.SequenceUtil;
+import org.eclipse.papyrus.uml.tools.utils.PackageUtil;
+import org.eclipse.papyrus.uml.tools.utils.StereotypeUtil;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Model;
+import org.eclipse.uml2.uml.PackageableElement;
+import org.eclipse.uml2.uml.Profile;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Stereotype;
+
+
+/**
+ * @author Jin Liu (jin.liu@soyatec.com)
+ */
+public class BaseStereotypesTest extends AbstractNodeTest {
+
+ private static final URI SYSML_PROFILE = URI.createURI("pathmap://SysML_PROFILES/SysML.profile.uml");
+
+ private static final String COMPARTMENT = UMLVisualInformationPapyrusConstant.STEREOTYPE_COMPARTMENT_LOCATION;
+
+ private static final String COMMENT = UMLVisualInformationPapyrusConstant.STEREOTYPE_COMMENT_LOCATION;
+
+ private static final String BRACE = UMLVisualInformationPapyrusConstant.STEREOTYPE_BRACE_LOCATION;
+
+ protected void prepareStereotypes(EditPart editPart) {
+ assertNotNull("editPart", editPart);
+ View view = getDiagramElement(editPart);
+ assertNotNull("view", view);
+ Element element = getElement(editPart);
+ assertNotNull("element", element);
+ Stereotype appliedStereotype = applyStereotype(editPart);
+ assertNotNull("appliedStereotype", appliedStereotype);
+ waitForComplete();
+ }
+
+ protected void doTestDisplayStereotypeInCompartment(EditPart editPart, EditPart stereotypeEditPart) {
+ if(stereotypeEditPart == null) {
+ stereotypeEditPart = editPart;
+ }
+ prepareStereotypes(editPart);
+ final View diagramElement = getDiagramElement(editPart);
+ setDisplayPlaceValue(diagramElement, COMPARTMENT);
+ //doCheck
+ //1. Check Compartment
+ final boolean displayInCompartment = AppliedStereotypeHelper.hasAppliedStereotypesPropertiesToDisplay(diagramElement, UMLVisualInformationPapyrusConstant.STEREOTYPE_COMPARTMENT_LOCATION);
+ assertTrue("displayInCompartment", displayInCompartment);
+ final View node = ((GraphicalEditPart)editPart).getNotationView();
+ int i = 0;
+ //we go through all sub nodes
+ Node compartmentNode = null;
+ while(i < node.getChildren().size()) {
+ if((node.getChildren().get(i)) instanceof Node) {
+ final Node currentNode = (Node)(node.getChildren().get(i));
+ if(currentNode.getType().equals("AppliedStereotypeCompartement")) {
+ if(currentNode.isVisible()) {
+ compartmentNode = currentNode;
+ break;
+ }
+ }
+ }
+ i++;
+ }
+ String stereotypesToDisplay = stereotypesOnlyToDisplay(diagramElement, getElement(editPart));
+ if(compartmentNode != null) {
+ EditPart compartmentEditPart = null;
+ List children = editPart.getChildren();
+ for(Object object : children) {
+ if(compartmentNode == ((EditPart)object).getModel()) {
+ compartmentEditPart = (EditPart)object;
+ break;
+ }
+ }
+ if(compartmentEditPart != null) {
+ IFigure figure = findLabelFigure(((org.eclipse.gef.GraphicalEditPart)compartmentEditPart).getFigure(), stereotypesToDisplay);
+ if(figure != null) {
+ return;
+ }
+ }
+ }
+ //2. check on main/external figure.
+ IFigure stereotypeFigure = null;
+ IFigure primaryShape = null;
+ if(stereotypeEditPart instanceof IPapyrusEditPart) {
+ primaryShape = ((IPapyrusEditPart)stereotypeEditPart).getPrimaryShape();
+ } else if(stereotypeEditPart instanceof org.eclipse.gef.GraphicalEditPart) {
+ primaryShape = ((org.eclipse.gef.GraphicalEditPart)stereotypeEditPart).getFigure();
+ }
+ if(primaryShape instanceof IPapyrusNodeUMLElementFigure) {
+ stereotypeFigure = ((IPapyrusNodeUMLElementFigure)primaryShape).getStereotypesLabel();
+ }
+ assertNotNull(stereotypeFigure);
+ String actualValue = getFigureText(stereotypeFigure);
+ assertEquals("stereotype displayed in Compartment", stereotypesToDisplay, actualValue);
+ }
+
+ protected String stereotypesOnlyToDisplay(View diagramElement, Element element) {
+ // list of stereotypes to display
+ String stereotypesToDisplay = AppliedStereotypeHelper.getStereotypesToDisplay(diagramElement);
+ // Kind of the representation
+ String stereotypespresentationKind = AppliedStereotypeHelper.getAppliedStereotypePresentationKind(diagramElement);
+
+ // check the presentation kind. if only icon => do not display
+ // stereotypes
+ if(UMLVisualInformationPapyrusConstant.ICON_STEREOTYPE_PRESENTATION.equals(stereotypespresentationKind)) {
+ return ""; // empty string, so stereotype label should not be
+ // displayed
+ }
+
+ // stereotypes with qualified name to display
+ String stereotypesToDisplayWithQN = AppliedStereotypeHelper.getStereotypesQNToDisplay(diagramElement);
+
+ // the set is empty
+ if(stereotypesToDisplayWithQN.length() == 0 && stereotypesToDisplay.length() == 0) {
+ return "";
+ }
+ // vertical representation
+ if(UMLVisualInformationPapyrusConstant.STEREOTYPE_TEXT_VERTICAL_PRESENTATION.equals(stereotypespresentationKind)) {
+ return Activator.ST_LEFT + stereotypesToDisplay(element, Activator.ST_RIGHT + "\n" + Activator.ST_LEFT, stereotypesToDisplay, stereotypesToDisplayWithQN) + Activator.ST_RIGHT;
+ } else {// horizontal representation
+ return Activator.ST_LEFT + stereotypesToDisplay(element, ", ", stereotypesToDisplay, stereotypesToDisplayWithQN) + Activator.ST_RIGHT;
+
+ }
+ }
+
+ protected String stereotypesToDisplay(Element element, String separator, String stereotypesToDisplay, String stereotypeWithQualifiedName) {
+
+ // AL Changes Feb. 07 - Beg
+ // Style Handling for STEREOTYPE_NAME_APPEARANCE from
+ // ProfileApplicationPreferencePage
+ // Stereotype displayed according to UML standard (first letter forced
+ // to lower case) -
+ // default -
+ // or kept as entered by user (user controlled)
+
+ // Get the preference from PreferenceStore. there should be an assert
+ final IPreferenceStore store = Activator.getDefault().getPreferenceStore();
+ assert store != null : "The preference store was not found";
+ if(store == null) {
+ return "";
+ }
+ String sNameAppearance = store.getString(UMLVisualInformationPapyrusConstant.P_STEREOTYPE_NAME_APPEARANCE);
+
+ StringTokenizer strQualifiedName = new StringTokenizer(stereotypesToDisplay, ",");
+ String out = "";
+ while(strQualifiedName.hasMoreElements()) {
+ String currentStereotype = strQualifiedName.nextToken();
+
+ // check if current stereotype is applied
+ final Element umlElement = element;
+ Stereotype stereotype = umlElement.getAppliedStereotype(currentStereotype);
+ if(stereotype != null) {
+ String name = currentStereotype;
+ if((stereotypeWithQualifiedName.indexOf(currentStereotype)) == -1) {
+ // property value contains qualifiedName ==> extract name
+ // from it
+ StringTokenizer strToken = new StringTokenizer(currentStereotype, "::");
+
+ while(strToken.hasMoreTokens()) {
+ name = strToken.nextToken();
+ }
+ }
+ // AL Changes Feb. 07 - Beg
+ // Handling STEREOTYPE_NAME_APPEARANCE preference (from
+ // ProfileApplicationPreferencePage)
+ // Previously lowercase forced onto first letter (standard UML)
+ // stereotypesToDisplay = stereotypesToDisplay+name.substring(0,
+ // 1).toLowerCase()+name.substring(1,
+ // name.length())+","+separator;
+
+ // check that the name has not already been added to the
+ // displayed string
+ if(sNameAppearance.equals(UMLVisualInformationPapyrusConstant.P_STEREOTYPE_NAME_DISPLAY_USER_CONTROLLED)) {
+ if(out.indexOf(name) == -1) {
+ out = out + name + separator;
+ }
+ } else { // VisualInformationPapyrusConstants.P_STEREOTYPE_NAME_DISPLAY_UML_CONFORM))
+ // {
+ name = name.substring(0, 1).toLowerCase() + name.substring(1, name.length());
+ if(out.indexOf(name) == -1) {
+ out = out + name + separator;
+ }
+ }
+ }
+ }
+ if(out.endsWith(",")) {
+ return out.substring(0, out.length() - 1);
+ }
+ if(out.endsWith(separator)) {
+ return out.substring(0, out.length() - separator.length());
+ }
+ return out;
+ }
+
+ protected String getFigureText(IFigure figure) {
+ if(figure instanceof Label) {
+ return ((Label)figure).getText();
+ } else if(figure instanceof WrappingLabel) {
+ return ((WrappingLabel)figure).getText();
+ } else if(figure instanceof ILabelFigure) {
+ return ((ILabelFigure)figure).getText();
+ } else if(figure instanceof TextFlow) {
+ return ((TextFlow)figure).getText();
+ }
+ return null;
+ }
+
+ protected void doTestDisplayStereotypeWithBrace(EditPart editPart, EditPart stereotypeEditPart) {
+ if(stereotypeEditPart == null) {
+ stereotypeEditPart = editPart;
+ }
+ prepareStereotypes(editPart);
+ final View diagramElement = getDiagramElement(editPart);
+ setDisplayPlaceValue(diagramElement, BRACE);
+ //doCheck
+ final boolean displayInBrace = AppliedStereotypeHelper.hasAppliedStereotypesPropertiesToDisplay(diagramElement, UMLVisualInformationPapyrusConstant.STEREOTYPE_BRACE_LOCATION);
+ assertTrue("displayInBrace", displayInBrace);
+ final String stereotypesPropertiesToDisplay = AppliedStereotypeHelper.getAppliedStereotypesPropertiesToDisplay(diagramElement);
+ String todisplay = StereotypeUtil.getPropertiesValuesInBrace(stereotypesPropertiesToDisplay, getElement(editPart));
+ String stereotypeInBrace = "{" + todisplay + "}";
+ IFigure label = findLabelFigure(getFigure(stereotypeEditPart), stereotypeInBrace);
+ assertNotNull("Stereotype displayed with brace", label);
+ }
+
+ private IFigure findLabelFigure(IFigure figure, String labelText) {
+ if(figure == null || labelText == null) {
+ return null;
+ }
+ String value = getFigureText(figure);
+ if(labelText.equals(value)) {
+ return figure;
+ }
+ List children = figure.getChildren();
+ for(Object object : children) {
+ IFigure child = (IFigure)object;
+ IFigure fig = findLabelFigure(child, labelText);
+ if(fig != null) {
+ return fig;
+ }
+ }
+ return null;
+ }
+
+ private IFigure getFigure(EditPart editPart) {
+ if(editPart instanceof org.eclipse.gef.GraphicalEditPart) {
+ return ((org.eclipse.gef.GraphicalEditPart)editPart).getFigure();
+ }
+ return null;
+ }
+
+ protected void doTestDisplayStereotypeComment(EditPart editPart) {
+ prepareStereotypes(editPart);
+ final View diagramElement = getDiagramElement(editPart);
+ setDisplayPlaceValue(diagramElement, COMMENT);
+ //doCheck
+ waitForComplete();
+ Node commentNode = getAppliedStereotypeCommentNode(diagramElement);
+ assertNotNull("commentNode", commentNode);
+ }
+
+ protected Node getAppliedStereotypeCommentNode(View semanticView) {
+ if(semanticView == null) {
+ return null;
+ }
+ Edge appliedStereotypeLink = null;
+ //look for all links with the id AppliedStereotypesCommentLinkEditPart.ID
+ @SuppressWarnings("unchecked")
+ Iterator<Edge> edgeIterator = semanticView.getSourceEdges().iterator();
+ while(edgeIterator.hasNext()) {
+ Edge edge = (Edge)edgeIterator.next();
+ if(edge.getType().equals("AppliedStereotypesCommentLink")) {
+ appliedStereotypeLink = edge;
+ }
+
+ }
+ if(appliedStereotypeLink == null) {
+ return null;
+ }
+ return (Node)appliedStereotypeLink.getTarget();
+
+ }
+
+ protected Stereotype applyStereotype(EditPart editPart) {
+ assertNotNull("editPart", editPart);
+ final Element element = getElement(editPart);
+ assertNotNull("element", element);
+ Model model = getModel(element);
+ assertNotNull("model", model);
+ Profile profile = applyProfile(model);
+ assertNotNull("profile", profile);
+ final View diagramElement = getDiagramElement(editPart);
+ EList<PackageableElement> packagedElements = profile.getPackagedElements();
+ for(PackageableElement elt : packagedElements) {
+ if(elt instanceof Stereotype) {
+ final Stereotype stereotype = (Stereotype)elt;
+ if(!element.isStereotypeApplicable(stereotype)) {
+ continue;
+ }
+ Stereotype appliedStereotype = element.getAppliedStereotype(stereotype.getQualifiedName());
+ if(appliedStereotype == null) {
+ //Apply the stereotype if possible.
+ getCommandStack().execute(new RecordingCommand(getEditingDomain()) {
+
+ @Override
+ protected void doExecute() {
+ element.applyStereotype(stereotype);
+ }
+ });
+ appliedStereotype = element.getAppliedStereotype(stereotype.getQualifiedName());
+ //Display current stereotype
+ String presentationKind = AppliedStereotypeHelper.getAppliedStereotypePresentationKind(diagramElement);
+ getCommandStack().execute(AppliedStereotypeHelper.getAddAppliedStereotypeCommand(getEditingDomain(), diagramElement, appliedStereotype.getQualifiedName(), presentationKind));
+ if(appliedStereotype != null) {
+ //Display all properties of it.
+ Iterator<Property> propIt = appliedStereotype.getAllAttributes().iterator();
+ while(propIt.hasNext()) {
+ final Property currentProp = propIt.next();
+ boolean adding = false;
+ // Select authorized properties
+ if(currentProp.getAssociation() != null) {
+ if(!currentProp.getName().startsWith("base_")) {
+ adding = true;
+ }
+ } else {
+ adding = true;
+ }
+ if(adding) {
+ String appliedStereotypeListToAdd = stereotype.getQualifiedName() + "." + currentProp.getName();
+ RecordingCommand command = AppliedStereotypeHelper.getAddAppliedStereotypePropertiesCommand(getEditingDomain(), diagramElement, appliedStereotypeListToAdd);
+ getCommandStack().execute(command);
+ }
+ }
+ }
+ }
+ return appliedStereotype;
+ }
+ }
+ return null;
+ }
+
+ protected Profile applyProfile(final Model model) {
+ ResourceSet resourceSet = model.eResource().getResourceSet();
+ Resource resource = resourceSet.getResource(SYSML_PROFILE, true);
+ Profile profileToApply = null;
+ if(!resource.getContents().isEmpty()) {
+ EObject eObject = resource.getContents().get(0);
+ if(eObject instanceof Profile) {
+ profileToApply = (Profile)eObject;
+ }
+ }
+ assertNotNull("profileToApply", profileToApply);
+ final Profile allocationsProfile = (Profile)profileToApply.getPackagedElement("Allocations");
+ assertNotNull("allocationsProfile", allocationsProfile);
+ getCommandStack().execute(new RecordingCommand(getEditingDomain()) {
+
+ @Override
+ protected void doExecute() {
+ PackageUtil.applyProfile(model, allocationsProfile, true);
+ }
+ });
+ return allocationsProfile;
+ }
+
+ protected View getDiagramElement(EditPart editPart) {
+ if(editPart == null) {
+ return null;
+ }
+ Object model = editPart.getModel();
+ if(model instanceof View) {
+ return (View)model;
+ }
+ return null;
+ }
+
+ protected Element getElement(EditPart editPart) {
+ View diagramElement = getDiagramElement(editPart);
+ if(diagramElement == null) {
+ return null;
+ }
+ return (Element)ViewUtil.resolveSemanticElement(diagramElement);
+ }
+
+ protected Model getModel(EObject obj) {
+ if(obj instanceof Model) {
+ return (Model)obj;
+ }
+ EObject parent = obj.eContainer();
+ while(parent != null && !(parent instanceof Model)) {
+ parent = parent.eContainer();
+ }
+ return (Model)parent;
+ }
+
+ protected void setDisplayPlaceValue(EModelElement diagramElement, String stereotypePlacePresentation) {
+ assertNotNull("DiagramElement", diagramElement);
+ assertNotNull("Stereotype placement", stereotypePlacePresentation);
+ String oldDisplayPlace = AppliedStereotypeHelper.getAppliedStereotypesPropertiesLocalization(diagramElement);
+ TransactionalEditingDomain domain = getDiagramEditPart().getEditingDomain();
+ RecordingCommand command = AppliedStereotypeHelper.getSetAppliedStereotypePropertiesLocalizationCommand(domain, diagramElement, stereotypePlacePresentation);
+ domain.getCommandStack().execute(command);
+ assertEquals("Stereotype placement", stereotypePlacePresentation, AppliedStereotypeHelper.getAppliedStereotypesPropertiesLocalization(diagramElement));
+ domain.getCommandStack().undo();
+ assertEquals("Stereotype placement undo", oldDisplayPlace, AppliedStereotypeHelper.getAppliedStereotypesPropertiesLocalization(diagramElement));
+ domain.getCommandStack().redo();
+ assertEquals("Stereotype placement redo", stereotypePlacePresentation, AppliedStereotypeHelper.getAppliedStereotypesPropertiesLocalization(diagramElement));
+ }
+
+ /**
+ * test apply profile to model and apply stereotype to a EditPart.
+ */
+ protected void innerTestApplyProfile() {
+ DiagramEditPart diagram = getDiagramEditPart();
+ assertNotNull("diagram", diagram);
+ Stereotype stereotype = applyStereotype(diagram);
+ assertNotNull("appliedStereotype", stereotype);
+ }
+
+ public void checkConnectionHorizontally(ConnectionNodeEditPart conn, int tolerance) {
+ assertNotNull("connection", conn);
+ Point start = SequenceUtil.getAbsoluteEdgeExtremity(conn, true);
+ Point end = SequenceUtil.getAbsoluteEdgeExtremity(conn, false);
+ int distance = Math.abs(start.y - end.y);
+ assertTrue("connection horizontally (" + distance + ")", distance <= tolerance);
+ }
+
+}
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/CombinedFragmentStereotypesTest.java b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/CombinedFragmentStereotypesTest.java
new file mode 100644
index 00000000000..f732e4828f0
--- /dev/null
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/CombinedFragmentStereotypesTest.java
@@ -0,0 +1,58 @@
+/*****************************************************************************
+ * Copyright (c) 2013 CEA
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Soyatec - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.uml.diagram.sequence.tests.bug.pro20130916;
+
+import org.eclipse.draw2d.geometry.Dimension;
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.CombinedFragmentEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.providers.UMLElementTypes;
+import org.junit.Test;
+
+
+/**
+ * @author Jin Liu (jin.liu@soyatec.com)
+ */
+public class CombinedFragmentStereotypesTest extends BaseStereotypesTest {
+
+ private CombinedFragmentEditPart combinedFragment;
+
+ /**
+ * @see org.eclipse.papyrus.uml.diagram.sequence.tests.bug.m7.AbstractNodeTest#setUp()
+ *
+ * @throws Exception
+ */
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ combinedFragment = (CombinedFragmentEditPart)createNode(UMLElementTypes.CombinedFragment_3004, getRootEditPart(), new Point(100, 100), new Dimension(200, 100));
+ assertNotNull(combinedFragment);
+ }
+
+ @Test
+ public void testDisplayStereotypeComment() {
+ doTestDisplayStereotypeComment(combinedFragment);
+ }
+
+ @Test
+ public void testDisplayStereotypeInCompartment() {
+ doTestDisplayStereotypeInCompartment(combinedFragment, combinedFragment);
+ }
+
+ @Test
+ public void testDisplayStereotypeWithBrace() {
+ doTestDisplayStereotypeWithBrace(combinedFragment, combinedFragment);
+ }
+
+}
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/ContinuationStereotypesTest.java b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/ContinuationStereotypesTest.java
new file mode 100644
index 00000000000..dbcdf693db5
--- /dev/null
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/ContinuationStereotypesTest.java
@@ -0,0 +1,66 @@
+/*****************************************************************************
+ * Copyright (c) 2013 CEA
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Soyatec - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.uml.diagram.sequence.tests.bug.pro20130916;
+
+import org.eclipse.draw2d.geometry.Dimension;
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.CombinedFragmentCombinedFragmentCompartmentEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.CombinedFragmentEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.ContinuationEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.InteractionOperandEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.providers.UMLElementTypes;
+import org.eclipse.papyrus.uml.diagram.sequence.util.SequenceUtil;
+import org.eclipse.uml2.uml.CombinedFragment;
+import org.eclipse.uml2.uml.InteractionOperatorKind;
+import org.junit.Test;
+
+
+/**
+ * @author Jin Liu (jin.liu@soyatec.com)
+ */
+public class ContinuationStereotypesTest extends BaseStereotypesTest {
+
+ private ContinuationEditPart continuation;
+
+ /**
+ * @see org.eclipse.papyrus.uml.diagram.sequence.tests.bug.m7.AbstractNodeTest#setUp()
+ *
+ * @throws Exception
+ */
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ CombinedFragmentEditPart cf = (CombinedFragmentEditPart)createNode(UMLElementTypes.CombinedFragment_3004, getRootEditPart(), new Point(100, 100), new Dimension(200, 100));
+ CombinedFragmentCombinedFragmentCompartmentEditPart compartment = (CombinedFragmentCombinedFragmentCompartmentEditPart)cf.getChildBySemanticHint("" + CombinedFragmentCombinedFragmentCompartmentEditPart.VISUAL_ID);
+ InteractionOperandEditPart operand = (InteractionOperandEditPart)compartment.getChildBySemanticHint("" + InteractionOperandEditPart.VISUAL_ID);
+ final CombinedFragment element = (CombinedFragment)cf.resolveSemanticElement();
+ getCommandStack().execute(new RecordingCommand(getEditingDomain()) {
+
+ @Override
+ protected void doExecute() {
+ element.setInteractionOperator(InteractionOperatorKind.ALT_LITERAL);
+ }
+ });
+ continuation = (ContinuationEditPart)createNode(UMLElementTypes.Continuation_3016, operand, SequenceUtil.getAbsoluteBounds(operand).getCenter(), null);
+ assertNotNull(continuation);
+ }
+
+ @Test
+ public void testDisplayStereotypeComment() {
+ doTestDisplayStereotypeComment(continuation);
+ }
+
+}
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/DurationConstraintStereotypesTest.java b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/DurationConstraintStereotypesTest.java
new file mode 100644
index 00000000000..6dfd99ac2d1
--- /dev/null
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/DurationConstraintStereotypesTest.java
@@ -0,0 +1,58 @@
+/*****************************************************************************
+ * Copyright (c) 2013 CEA
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Soyatec - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.uml.diagram.sequence.tests.bug.pro20130916;
+
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.DurationConstraintAppliedStereotypeEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.DurationConstraintEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.providers.UMLElementTypes;
+import org.junit.Test;
+
+
+/**
+ * @author Jin Liu (jin.liu@soyatec.com)
+ */
+public class DurationConstraintStereotypesTest extends BaseStereotypesTest {
+
+ private DurationConstraintEditPart durationConstraint;
+
+ /**
+ * @see org.eclipse.papyrus.uml.diagram.sequence.tests.bug.m7.AbstractNodeTest#setUp()
+ *
+ * @throws Exception
+ */
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ durationConstraint = (DurationConstraintEditPart)createNode(UMLElementTypes.DurationConstraint_3021, getRootEditPart(), new Point(100, 100), null);
+ assertNotNull(durationConstraint);
+ }
+
+ @Test
+ public void testDisplayStereotypeComment() {
+ doTestDisplayStereotypeComment(durationConstraint);
+ }
+
+ @Test
+ public void testDisplayStereotypeInCompartment() {
+ doTestDisplayStereotypeInCompartment(durationConstraint, durationConstraint.getChildBySemanticHint("" + DurationConstraintAppliedStereotypeEditPart.VISUAL_ID));
+ }
+
+ @Test
+ public void testDisplayStereotypeWithBrace() {
+ doTestDisplayStereotypeWithBrace(durationConstraint, durationConstraint.getChildBySemanticHint("" + DurationConstraintAppliedStereotypeEditPart.VISUAL_ID));
+ }
+
+}
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/DurationObservationStereotypesTest.java b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/DurationObservationStereotypesTest.java
new file mode 100644
index 00000000000..77b841c362c
--- /dev/null
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/DurationObservationStereotypesTest.java
@@ -0,0 +1,57 @@
+/*****************************************************************************
+ * Copyright (c) 2013 CEA
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Soyatec - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.uml.diagram.sequence.tests.bug.pro20130916;
+
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.DurationObservationAppliedStereotypeEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.DurationObservationEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.providers.UMLElementTypes;
+import org.junit.Test;
+
+
+/**
+ * @author Jin Liu (jin.liu@soyatec.com)
+ */
+public class DurationObservationStereotypesTest extends BaseStereotypesTest {
+
+ private DurationObservationEditPart durationObservation;
+
+ /**
+ * @see org.eclipse.papyrus.uml.diagram.sequence.tests.bug.m7.AbstractNodeTest#setUp()
+ *
+ * @throws Exception
+ */
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ durationObservation = (DurationObservationEditPart)createNode(UMLElementTypes.DurationObservation_3024, getRootEditPart(), new Point(100, 100), null);
+ assertNotNull(durationObservation);
+ }
+
+ @Test
+ public void testDisplayStereotypeComment() {
+ doTestDisplayStereotypeComment(durationObservation);
+ }
+
+ @Test
+ public void testDisplayStereotypeInCompartment() {
+ doTestDisplayStereotypeInCompartment(durationObservation, durationObservation.getChildBySemanticHint("" + DurationObservationAppliedStereotypeEditPart.VISUAL_ID));
+ }
+
+ @Test
+ public void testDisplayStereotypeWithBrace() {
+ doTestDisplayStereotypeWithBrace(durationObservation, durationObservation.getChildBySemanticHint("" + DurationObservationAppliedStereotypeEditPart.VISUAL_ID));
+ }
+}
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/ExecutionSpecificationStereotypesTest.java b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/ExecutionSpecificationStereotypesTest.java
new file mode 100644
index 00000000000..ecca1d5af99
--- /dev/null
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/ExecutionSpecificationStereotypesTest.java
@@ -0,0 +1,64 @@
+/*****************************************************************************
+ * Copyright (c) 2013 CEA
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Soyatec - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.uml.diagram.sequence.tests.bug.pro20130916;
+
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.gef.EditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.LifelineEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.providers.UMLElementTypes;
+import org.junit.Test;
+
+
+/**
+ * @author Jin Liu (jin.liu@soyatec.com)
+ */
+public class ExecutionSpecificationStereotypesTest extends BaseStereotypesTest {
+
+ private LifelineEditPart lifeline;
+
+ /**
+ * @see org.eclipse.papyrus.uml.diagram.sequence.tests.bug.m7.AbstractNodeTest#setUp()
+ *
+ * @throws Exception
+ */
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ lifeline = (LifelineEditPart)createNode(UMLElementTypes.Lifeline_3001, getRootEditPart(), new Point(100, 300), null);
+ assertNotNull(lifeline);
+ }
+
+ @Test
+ public void testDisplayStereotypeComment_ActionExecutionSpecification() {
+ EditPart es = createNode(UMLElementTypes.ActionExecutionSpecification_3006, lifeline, new Point(131, 150), null);
+ assertNotNull("actionExecutionSpecification", es);
+ doTestDisplayStereotypeComment(es);
+ }
+
+ @Test
+ public void testDisplayStereotypeComment_BehaviorExecutionSpecification() {
+ EditPart es = createNode(UMLElementTypes.BehaviorExecutionSpecification_3003, lifeline, new Point(131, 220), null);
+ assertNotNull("behaviorExecutionSpecification", es);
+ doTestDisplayStereotypeComment(es);
+ }
+
+ @Test
+ public void testDisplayStereotypeComment_DestructionExecutionSpecification() {
+ EditPart es = createNode(UMLElementTypes.DestructionOccurrenceSpecification_3022, lifeline, new Point(131, 250), null);
+ assertNotNull("destructionExecutionSpecification", es);
+ doTestDisplayStereotypeComment(es);
+ }
+
+}
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/Fixbug_EditorCrashesWhenMovingGeneralOrdering_417373.java b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/Fixbug_EditorCrashesWhenMovingGeneralOrdering_417373.java
new file mode 100644
index 00000000000..b5099c3e4f9
--- /dev/null
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/Fixbug_EditorCrashesWhenMovingGeneralOrdering_417373.java
@@ -0,0 +1,58 @@
+/*****************************************************************************
+ * Copyright (c) 2013 CEA
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Soyatec - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.uml.diagram.sequence.tests.bug.pro20130916;
+
+import org.eclipse.draw2d.geometry.Dimension;
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.gef.EditPart;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.AbstractMessageEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.providers.UMLElementTypes;
+import org.eclipse.papyrus.uml.diagram.sequence.tests.bug.m7.AbstractNodeTest;
+import org.eclipse.papyrus.uml.diagram.sequence.util.SequenceUtil;
+import org.junit.Test;
+
+
+/**
+ * Fixed bug: https://bugs.eclipse.org/bugs/show_bug.cgi?id=417373
+ *
+ * @author Jin Liu (jin.liu@soyatec.com)
+ */
+public class Fixbug_EditorCrashesWhenMovingGeneralOrdering_417373 extends AbstractNodeTest {
+
+ @Test
+ public void test() {
+ EditPart lifeline1 = createNode(UMLElementTypes.Lifeline_3001, getRootEditPart(), new Point(100, 400), new Dimension(100, 400));
+ EditPart lifeline2 = createNode(UMLElementTypes.Lifeline_3001, getRootEditPart(), new Point(350, 400), new Dimension(100, 400));
+ Point startLocation = SequenceUtil.getAbsoluteBounds((IGraphicalEditPart)lifeline1).getCenter().getCopy();
+ Point endLocation = SequenceUtil.getAbsoluteBounds((IGraphicalEditPart)lifeline2).getCenter().getCopy();
+ AbstractMessageEditPart message1 = (AbstractMessageEditPart)createLink(UMLElementTypes.Message_4004, lifeline1.getViewer(), startLocation, lifeline1, endLocation, lifeline2);
+ AbstractMessageEditPart message2 = (AbstractMessageEditPart)createLink(UMLElementTypes.Message_4004, lifeline1.getViewer(), endLocation.getTranslated(0, 79), lifeline2, startLocation.getTranslated(0, 80), lifeline1);
+ //create General Ordering
+ startLocation = SequenceUtil.getAbsoluteEdgeExtremity(message1, false);
+ endLocation = SequenceUtil.getAbsoluteEdgeExtremity(message2, false);
+ EditPart generalOrdering = createLink(UMLElementTypes.GeneralOrdering_4012, lifeline1.getViewer(), startLocation, lifeline2, endLocation, lifeline1);
+ assertNotNull("generalOrdering", generalOrdering);
+
+ //Move down the end of message2 10 times.
+ Point pt = endLocation.getCopy();
+ for(int i = 1; i <= 10; i++) {
+ Point p = pt.getTranslated(0, i * 10);
+ reconnectTarget(message2, message2.getTarget(), p);
+ getDiagramCommandStack().undo();
+ waitForComplete();
+ }
+
+ }
+}
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/Fixbug_LifelineManagement_417365.java b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/Fixbug_LifelineManagement_417365.java
new file mode 100644
index 00000000000..3ff1d8e2b54
--- /dev/null
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/Fixbug_LifelineManagement_417365.java
@@ -0,0 +1,316 @@
+/*****************************************************************************
+ * Copyright (c) 2013 CEA
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Soyatec - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.uml.diagram.sequence.tests.bug.pro20130916;
+
+import org.eclipse.draw2d.Connection;
+import org.eclipse.draw2d.PositionConstants;
+import org.eclipse.draw2d.RectangleFigure;
+import org.eclipse.draw2d.geometry.Dimension;
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.draw2d.geometry.PointList;
+import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.gmf.runtime.diagram.core.commands.SetPropertyCommand;
+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.AbstractExecutionSpecificationEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.AbstractMessageEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.CombinedFragmentCombinedFragmentCompartmentEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.CombinedFragmentEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.InteractionEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.InteractionOperandEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.LifelineEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.figures.LifelineFigure;
+import org.eclipse.papyrus.uml.diagram.sequence.providers.UMLElementTypes;
+import org.eclipse.papyrus.uml.diagram.sequence.util.SequenceUtil;
+import org.eclipse.uml2.uml.Message;
+import org.junit.Test;
+
+
+/**
+ * @author Jin Liu (jin.liu@soyatec.com)
+ */
+public class Fixbug_LifelineManagement_417365 extends BaseStereotypesTest {
+
+ private LifelineEditPart lifeline1;
+
+ private LifelineEditPart lifeline2;
+
+ private LifelineEditPart lifeline3;
+
+ private LifelineEditPart lifeline4;
+
+ private AbstractMessageEditPart message1;
+
+ private AbstractMessageEditPart message2;
+
+ private AbstractMessageEditPart message3;
+
+ private AbstractMessageEditPart message4;
+
+ private AbstractMessageEditPart message5;
+
+ private AbstractMessageEditPart message6;
+
+ private AbstractMessageEditPart message7;
+
+ private AbstractMessageEditPart message8;
+
+ private AbstractMessageEditPart message9;
+
+ private AbstractMessageEditPart message10;
+
+ private AbstractMessageEditPart message11;
+
+ private AbstractMessageEditPart message12;
+
+ private AbstractMessageEditPart message13;
+
+ private static final int[] FONT_HEIGHTS = { 9, 10, 12, 14, 17, 21, 28, 36, 48, 72 };
+
+ /**
+ * @see org.eclipse.papyrus.uml.diagram.sequence.tests.bug.m7.AbstractNodeTest#setUp()
+ *
+ * @throws Exception
+ */
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ prepareDiagram();
+ }
+
+ /**
+ * Create Test Diagram.
+ */
+ protected void prepareDiagram() {
+ //Create Lifelines
+ lifeline1 = (LifelineEditPart)createNode(UMLElementTypes.Lifeline_3001, getRootEditPart(), new Point(100, 100), new Dimension(100, 800));
+ lifeline2 = (LifelineEditPart)createNode(UMLElementTypes.Lifeline_3001, getRootEditPart(), new Point(300, 100), new Dimension(100, 800));
+ lifeline3 = (LifelineEditPart)createNode(UMLElementTypes.Lifeline_3001, getRootEditPart(), new Point(500, 100), null);
+
+ int y = 120;
+ //Create message from Interaction to Lifeline1.
+ InteractionEditPart interaction = (InteractionEditPart)getRootEditPart().getParent();
+ Rectangle interactionBounds = SequenceUtil.getAbsoluteBounds(interaction);
+ Rectangle lifeline1Bounds = SequenceUtil.getAbsoluteBounds(lifeline1);
+ Point pt = lifeline1Bounds.getCenter();
+ message1 = (AbstractMessageEditPart)createLink(UMLElementTypes.Message_4004, lifeline1.getViewer(), new Point(0, y - 1), interaction, new Point(pt.x, y), lifeline1);
+
+ //Create ExecutionSpecification on lifeline1 and Lifeline2
+ y += 20;
+ AbstractExecutionSpecificationEditPart execution1 = (AbstractExecutionSpecificationEditPart)createNode(UMLElementTypes.ActionExecutionSpecification_3006, lifeline1, new Point(pt.x, y), null);
+ AbstractExecutionSpecificationEditPart execution2 = (AbstractExecutionSpecificationEditPart)createNode(UMLElementTypes.ActionExecutionSpecification_3006, lifeline2, SequenceUtil.getAbsoluteBounds(lifeline2).getCenter().setY(y), null);
+
+ //Create Message between execution1 and execution2.
+ message2 = (AbstractMessageEditPart)createLink(UMLElementTypes.Message_4003, lifeline1.getViewer(), SequenceUtil.getAbsoluteBounds(execution1).getTop(), execution1, SequenceUtil.getAbsoluteBounds(execution2).getTop(), execution2);
+ message3 = (AbstractMessageEditPart)createLink(UMLElementTypes.Message_4004, lifeline1.getViewer(), SequenceUtil.getAbsoluteBounds(execution2).getBottom(), execution2, SequenceUtil.getAbsoluteBounds(execution1).getBottom(), execution1);
+
+ //Create Message from execution2 to Lifeline3
+ y = SequenceUtil.getAbsoluteBounds(execution2).getCenter().y;
+ message4 = (AbstractMessageEditPart)createLink(UMLElementTypes.Message_4004, lifeline1.getViewer(), SequenceUtil.getAbsoluteBounds(execution2).getCenter(), execution2, SequenceUtil.getAbsoluteBounds(lifeline3).getCenter().translate(0, 1), lifeline3);
+
+ lifeline4 = (LifelineEditPart)createNode(UMLElementTypes.Lifeline_3001, getRootEditPart(), new Point(650, 100), new Dimension(70, 100));
+ //Create Message Create from lifeline3 to lifeline4
+ y += 20;
+ message5 = (AbstractMessageEditPart)createLink(UMLElementTypes.Message_4006, lifeline1.getViewer(), SequenceUtil.getAbsoluteBounds(lifeline3).getCenter().setY(y), lifeline3, SequenceUtil.getAbsoluteBounds(lifeline4).getTop(), lifeline4);
+
+ //Create message from interaction to lifeline4
+ y += 40;
+ message6 = (AbstractMessageEditPart)createLink(UMLElementTypes.Message_4004, lifeline1.getViewer(), interactionBounds.getRight().setY(y).translate(0, -1), interaction, SequenceUtil.getAbsoluteBounds(lifeline4).getCenter().setY(y), lifeline4);
+
+ //Create message found and message lost
+ y += 20;
+ message7 = (AbstractMessageEditPart)createLink(UMLElementTypes.Message_4009, lifeline1.getViewer(), SequenceUtil.getAbsoluteBounds(lifeline3).getCenter().setY(y).getTranslated(-80, 0), interaction, SequenceUtil.getAbsoluteBounds(lifeline3).getCenter().setY(y), lifeline3);
+ y += 20;
+ message8 = (AbstractMessageEditPart)createLink(UMLElementTypes.Message_4008, lifeline1.getViewer(), SequenceUtil.getAbsoluteBounds(lifeline3).getCenter().setY(y), lifeline3, SequenceUtil.getAbsoluteBounds(lifeline3).getCenter().setY(y).getTranslated(80, 1), interaction);
+
+ //Create CombinedFragment
+ CombinedFragmentEditPart combinedFragment = (CombinedFragmentEditPart)createNode(UMLElementTypes.CombinedFragment_3004, getRootEditPart(), new Point(50, 300), new Dimension(500, 200));
+ CombinedFragmentCombinedFragmentCompartmentEditPart compartment = (CombinedFragmentCombinedFragmentCompartmentEditPart)combinedFragment.getChildBySemanticHint(CombinedFragmentCombinedFragmentCompartmentEditPart.VISUAL_ID + "");
+ InteractionOperandEditPart firstOperand = (InteractionOperandEditPart)compartment.getPrimaryChildEditPart();
+ InteractionOperandEditPart secondOperand = (InteractionOperandEditPart)createNode(UMLElementTypes.InteractionOperand_3005, compartment, SequenceUtil.getAbsoluteBounds(combinedFragment).getCenter(), null);
+
+ //create message in firstOperand
+ y = SequenceUtil.getAbsoluteBounds(firstOperand).getCenter().y;
+ AbstractExecutionSpecificationEditPart execution3 = (AbstractExecutionSpecificationEditPart)createNode(UMLElementTypes.ActionExecutionSpecification_3006, lifeline1, new Point(pt.x, y), null);
+ AbstractExecutionSpecificationEditPart execution4 = (AbstractExecutionSpecificationEditPart)createNode(UMLElementTypes.ActionExecutionSpecification_3006, lifeline2, SequenceUtil.getAbsoluteBounds(lifeline2).getCenter().setY(y), null);
+ //Create Message between execution1 and execution2.
+ message9 = (AbstractMessageEditPart)createLink(UMLElementTypes.Message_4003, lifeline1.getViewer(), SequenceUtil.getAbsoluteBounds(execution3).getTop(), execution3, SequenceUtil.getAbsoluteBounds(execution4).getTop(), execution4);
+ message10 = (AbstractMessageEditPart)createLink(UMLElementTypes.Message_4004, lifeline1.getViewer(), SequenceUtil.getAbsoluteBounds(execution4).getBottom(), execution4, SequenceUtil.getAbsoluteBounds(execution3).getBottom(), execution3);
+
+ //create message in secondOperand
+ y = SequenceUtil.getAbsoluteBounds(secondOperand).getCenter().y;
+ message11 = (AbstractMessageEditPart)createLink(UMLElementTypes.Message_4004, lifeline1.getViewer(), SequenceUtil.getAbsoluteBounds(lifeline1).getCenter().setY(y), lifeline1, SequenceUtil.getAbsoluteBounds(lifeline2).getCenter().setY(y + 1), lifeline2);
+
+ //Create message between Interaction and CombinedFragment
+ y = SequenceUtil.getAbsoluteBounds(combinedFragment).getLeft().y;
+ message12 = (AbstractMessageEditPart)createLink(UMLElementTypes.Message_4004, lifeline1.getViewer(), new Point(0, y - 1), interaction, SequenceUtil.getAbsoluteBounds(combinedFragment).getLeft(), combinedFragment);
+
+ y = SequenceUtil.getAbsoluteBounds(combinedFragment).getRight().y;
+ message13 = (AbstractMessageEditPart)createLink(UMLElementTypes.Message_4004, lifeline1.getViewer(), new Point(interactionBounds.right(), y - 1), interaction, SequenceUtil.getAbsoluteBounds(combinedFragment).getRight(), combinedFragment);
+
+ waitForComplete();
+ validateMessageHorizontally();
+ }
+
+ /**
+ * Validate all messages has same position horizontally.
+ */
+ private void validateMessageHorizontally() {
+ validateMessageHorizontally(message1);
+ validateMessageHorizontally(message2);
+ validateMessageHorizontally(message3);
+ validateMessageHorizontally(message4);
+ validateMessageHorizontally(message5);
+ validateMessageHorizontally(message6);
+ validateMessageHorizontally(message7);
+ validateMessageHorizontally(message8);
+ validateMessageHorizontally(message9);
+ validateMessageHorizontally(message10);
+ validateMessageHorizontally(message11);
+ validateMessageHorizontally(message12);
+ validateMessageHorizontally(message13);
+ }
+
+ private void validateMessageHorizontally(AbstractMessageEditPart message) {
+ assertNotNull("message", message);
+ // waitForComplete();
+ // message.refresh();
+ // waitForComplete();
+ Connection conn = message.getConnectionFigure();
+ PointList points = conn.getPoints();
+ int start = points.getFirstPoint().y;
+ int end = points.getLastPoint().y;
+ EObject obj = message.resolveSemanticElement();
+ String name = "";
+ if(obj instanceof Message) {
+ name = ((Message)obj).getName();
+ }
+ assertEquals("message horizontal position<" + name + ">", end, start);
+ }
+
+ private void validateAll() {
+ validateLifelineHeadBottom();
+ validateMessageHorizontally();
+ }
+
+ /**
+ * Validate lifelife head's bottom.
+ */
+ private void validateLifelineHeadBottom() {
+ int b1 = getLifelineHeadBottom(lifeline1);
+ int b2 = getLifelineHeadBottom(lifeline2);
+ int b3 = getLifelineHeadBottom(lifeline3);
+ assertTrue("Lifeline head bottom", Math.abs(b1 - b2) <= 1);
+ assertTrue("Lifeline head bottom", Math.abs(b1 - b3) <= 1);
+ }
+
+ private int getLifelineHeadBottom(LifelineEditPart lifeline) {
+ LifelineFigure figure = lifeline.getPrimaryShape();
+ RectangleFigure figureLifelineNameContainerFigure = figure.getFigureLifelineNameContainerFigure();
+ return figureLifelineNameContainerFigure.getBounds().bottom();
+ }
+
+ @Test
+ public void testFontChanged() {
+ //Increase height of font for lifeline1
+ for(int i = 1; i < FONT_HEIGHTS.length; i++) {
+ int height = FONT_HEIGHTS[i];
+ testChangeFontHeight(lifeline1, height);
+ }
+ //Decrease height of font for lifeline1
+ for(int i = FONT_HEIGHTS.length - 2; i >= 0; i--) {
+ int height = FONT_HEIGHTS[i];
+ testChangeFontHeight(lifeline1, height);
+ }
+ //Increase height of font for lifeline2
+ for(int i = 1; i < FONT_HEIGHTS.length; i++) {
+ int height = FONT_HEIGHTS[i];
+ testChangeFontHeight(lifeline2, height);
+ }
+ //Decrease height of font for lifeline2
+ for(int i = FONT_HEIGHTS.length - 2; i >= 0; i--) {
+ int height = FONT_HEIGHTS[i];
+ testChangeFontHeight(lifeline2, height);
+ }
+ //Increase height of font for lifeline3
+ for(int i = 1; i < FONT_HEIGHTS.length; i++) {
+ int height = FONT_HEIGHTS[i];
+ testChangeFontHeight(lifeline3, height);
+ }
+ //Decrease height of font for lifeline3
+ for(int i = FONT_HEIGHTS.length - 2; i >= 0; i--) {
+ int height = FONT_HEIGHTS[i];
+ testChangeFontHeight(lifeline3, height);
+ }
+ //Increase height of font for lifeline4
+ for(int i = 1; i < FONT_HEIGHTS.length; i++) {
+ int height = FONT_HEIGHTS[i];
+ testChangeFontHeight(lifeline4, height);
+ }
+ //Decrease height of font for lifeline4
+ for(int i = FONT_HEIGHTS.length - 2; i >= 0; i--) {
+ int height = FONT_HEIGHTS[i];
+ testChangeFontHeight(lifeline4, height);
+ }
+ }
+
+ /**
+ * @param lifeline
+ * @param height
+ */
+ private void testChangeFontHeight(LifelineEditPart lifeline, int height) {
+ assertNotNull("lifeline", lifeline);
+ SetPropertyCommand command = new SetPropertyCommand(getEditingDomain(), lifeline, "notation.FontStyle.fontHeight", "Font Size", height);
+ executeOnUIThread(new ICommandProxy(command));
+ waitForComplete();
+ validateAll();
+ }
+
+ @Test
+ public void testStereotypeChanged() {
+ //Applied stereotype on lifeline1
+ doTestDisplayStereotypeInCompartment(lifeline1, lifeline1);
+ waitForComplete();
+ validateAll();
+
+ //Applied stereotype on lifeline2
+ doTestDisplayStereotypeInCompartment(lifeline2, lifeline2);
+ waitForComplete();
+ validateAll();
+
+ //Applied stereotype on lifeline3
+ doTestDisplayStereotypeInCompartment(lifeline3, lifeline3);
+ waitForComplete();
+ validateAll();
+
+ //Applied stereotype on lifeline4
+ doTestDisplayStereotypeInCompartment(lifeline4, lifeline4);
+ waitForComplete();
+ validateAll();
+ }
+
+ @Test
+ public void testResizeLifelineAfterStereotypeApplied() {
+ //Applied stereotype on lifeline1
+ doTestDisplayStereotypeInCompartment(lifeline4, lifeline4);
+ //resize down/up from bottom
+ resize(lifeline4, SequenceUtil.getAbsoluteBounds(lifeline4).getLocation(), PositionConstants.SOUTH, new Dimension(0, 30));
+ resize(lifeline4, SequenceUtil.getAbsoluteBounds(lifeline4).getLocation(), PositionConstants.NORTH, new Dimension(0, 30));
+
+ //resize west
+ resize(lifeline4, SequenceUtil.getAbsoluteBounds(lifeline4).getLocation(), PositionConstants.WEST, new Dimension(30, 0));
+ //resize east
+ resize(lifeline4, SequenceUtil.getAbsoluteBounds(lifeline4).getLocation(), PositionConstants.EAST, new Dimension(30, 0));
+ }
+}
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/Fixbug_OrderFragmentsAfterMessageReconnection_417375.java b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/Fixbug_OrderFragmentsAfterMessageReconnection_417375.java
new file mode 100644
index 00000000000..0def0237bdc
--- /dev/null
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/Fixbug_OrderFragmentsAfterMessageReconnection_417375.java
@@ -0,0 +1,150 @@
+/*****************************************************************************
+ * Copyright (c) 2013 CEA
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Soyatec - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.uml.diagram.sequence.tests.bug.pro20130916;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.draw2d.geometry.Dimension;
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.gef.EditPart;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.AbstractMessageEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.ActionExecutionSpecificationEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.BehaviorExecutionSpecificationEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.providers.UMLElementTypes;
+import org.eclipse.papyrus.uml.diagram.sequence.tests.bug.m7.AbstractNodeTest;
+import org.eclipse.papyrus.uml.diagram.sequence.util.SequenceUtil;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.uml2.uml.ActionExecutionSpecification;
+import org.eclipse.uml2.uml.BehaviorExecutionSpecification;
+import org.eclipse.uml2.uml.Interaction;
+import org.eclipse.uml2.uml.InteractionFragment;
+import org.eclipse.uml2.uml.Message;
+import org.eclipse.uml2.uml.OccurrenceSpecification;
+import org.junit.Test;
+
+
+/**
+ * Fixed bug: https://bugs.eclipse.org/bugs/show_bug.cgi?id=417375
+ *
+ * @author Jin Liu (jin.liu@soyatec.com)
+ */
+public class Fixbug_OrderFragmentsAfterMessageReconnection_417375 extends AbstractNodeTest {
+
+ @Test
+ public void test() {
+ EditPart lifeline1 = createNode(UMLElementTypes.Lifeline_3001, getRootEditPart(), new Point(100, 100), new Dimension(100, 500));
+ EditPart lifeline2 = createNode(UMLElementTypes.Lifeline_3001, getRootEditPart(), new Point(300, 100), new Dimension(100, 500));
+
+ final Interaction interaction = (Interaction)getRootEditPart().resolveSemanticElement();
+
+ ActionExecutionSpecificationEditPart execution1 = (ActionExecutionSpecificationEditPart)createNode(UMLElementTypes.ActionExecutionSpecification_3006, lifeline1, new Point(131, 200), new Dimension(16, 150));
+ ActionExecutionSpecification actionES = (ActionExecutionSpecification)execution1.resolveSemanticElement();
+ waitForComplete();
+ //validate after create action
+ List<InteractionFragment> actualList = new ArrayList<InteractionFragment>();
+ actualList.add(actionES.getStart());
+ actualList.add(actionES);
+ actualList.add(actionES.getFinish());
+ validateOrders(interaction.getFragments(), actualList);
+
+ BehaviorExecutionSpecificationEditPart execution2 = (BehaviorExecutionSpecificationEditPart)createNode(UMLElementTypes.BehaviorExecutionSpecification_3003, lifeline1, new Point(148, 230), new Dimension(16, 80));
+ BehaviorExecutionSpecification behaviorES = (BehaviorExecutionSpecification)execution2.resolveSemanticElement();
+ waitForComplete();
+ //validate after create behavior
+ actualList = new ArrayList<InteractionFragment>();
+ actualList.add(actionES.getStart());
+ actualList.add(actionES);
+ actualList.add(behaviorES.getStart());
+ actualList.add(behaviorES);
+ actualList.add(behaviorES.getFinish());
+ actualList.add(actionES.getFinish());
+ validateOrders(interaction.getFragments(), actualList);
+
+ Point endLocation = SequenceUtil.getAbsoluteBounds(execution2).getCenter().getCopy().getTranslated(0, 20);
+ Point startLocation = SequenceUtil.getAbsoluteBounds((IGraphicalEditPart)lifeline2).getCenter().setY(endLocation.y - 1);
+ AbstractMessageEditPart messageEditPart = (AbstractMessageEditPart)createLink(UMLElementTypes.Message_4004, lifeline1.getViewer(), startLocation, lifeline2, endLocation, execution2);
+ Message message = (Message)messageEditPart.resolveSemanticElement();
+ waitForComplete();
+ //validate after create message
+ actualList = new ArrayList<InteractionFragment>();
+ actualList.add(actionES.getStart());
+ actualList.add(actionES);
+ actualList.add(behaviorES.getStart());
+ actualList.add(behaviorES);
+ actualList.add((InteractionFragment)message.getSendEvent());
+ actualList.add((InteractionFragment)message.getReceiveEvent());
+ actualList.add(behaviorES.getFinish());
+ actualList.add(actionES.getFinish());
+ validateOrders(interaction.getFragments(), actualList);
+
+ //reconnect message target to the end of the behavior execution.
+ OccurrenceSpecification finish = behaviorES.getFinish();
+ IGraphicalEditPart finishEditPart = null;
+ List children = execution2.getChildren();
+ for(Object object : children) {
+ if(object instanceof IGraphicalEditPart) {
+ EObject element = ((IGraphicalEditPart)object).resolveSemanticElement();
+ if(finish == element) {
+ finishEditPart = (IGraphicalEditPart)object;
+ break;
+ }
+ }
+ }
+ assertNotNull("finishEditPart", finishEditPart);
+ reconnectTarget(messageEditPart, finishEditPart, SequenceUtil.getAbsoluteBounds(finishEditPart).getCenter());
+ //validate
+ actualList = new ArrayList<InteractionFragment>();
+ actualList.add(actionES.getStart());
+ actualList.add(actionES);
+ actualList.add(behaviorES.getStart());
+ actualList.add(behaviorES);
+ actualList.add((InteractionFragment)message.getSendEvent());
+ actualList.add((InteractionFragment)message.getReceiveEvent());
+ actualList.add(actionES.getFinish());
+ validateOrders(interaction.getFragments(), actualList);
+
+ //reconnect back
+ reconnectTarget(messageEditPart, execution2, SequenceUtil.getAbsoluteBounds(execution2).getCenter().setY(SequenceUtil.getAbsoluteEdgeExtremity(messageEditPart, true).y - 1));
+ //validate
+ actualList = new ArrayList<InteractionFragment>();
+ actualList.add(actionES.getStart());
+ actualList.add(actionES);
+ actualList.add(behaviorES.getStart());
+ actualList.add(behaviorES);
+ actualList.add((InteractionFragment)message.getSendEvent());
+ actualList.add((InteractionFragment)message.getReceiveEvent());
+ actualList.add(behaviorES.getFinish());
+ actualList.add(actionES.getFinish());
+ final List<InteractionFragment> fragments = new ArrayList<InteractionFragment>(actualList);
+ Display.getDefault().asyncExec(new Runnable() {
+
+ public void run() {
+ validateOrders(interaction.getFragments(), fragments);
+ }
+ });
+ }
+
+ protected void validateOrders(List<InteractionFragment> expectedList, List<InteractionFragment> actualList) {
+ assertNotNull("actualList", actualList);
+ assertNotNull("expectedList", expectedList);
+ for(int index = 0; index < actualList.size(); index++) {
+ InteractionFragment fragment = actualList.get(index);
+ int expectedIndex = expectedList.indexOf(fragment);
+ assertEquals("Index of " + fragment.getName(), expectedIndex, index);
+ }
+ }
+}
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/Fixbug_OrderFragmentsAfterResizeExecutions_417374.java b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/Fixbug_OrderFragmentsAfterResizeExecutions_417374.java
new file mode 100644
index 00000000000..7db412a8d92
--- /dev/null
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/Fixbug_OrderFragmentsAfterResizeExecutions_417374.java
@@ -0,0 +1,93 @@
+/*****************************************************************************
+ * Copyright (c) 2013 CEA
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Soyatec - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.uml.diagram.sequence.tests.bug.pro20130916;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.draw2d.PositionConstants;
+import org.eclipse.draw2d.geometry.Dimension;
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.gef.EditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.ActionExecutionSpecificationEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.BehaviorExecutionSpecificationEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.providers.UMLElementTypes;
+import org.eclipse.papyrus.uml.diagram.sequence.tests.bug.m7.AbstractNodeTest;
+import org.eclipse.papyrus.uml.diagram.sequence.util.SequenceUtil;
+import org.eclipse.uml2.uml.ActionExecutionSpecification;
+import org.eclipse.uml2.uml.BehaviorExecutionSpecification;
+import org.eclipse.uml2.uml.Interaction;
+import org.eclipse.uml2.uml.InteractionFragment;
+import org.junit.Test;
+
+
+/**
+ * Fixed bug: https://bugs.eclipse.org/bugs/show_bug.cgi?id=417374
+ *
+ * @author Jin Liu (jin.liu@soyatec.com)
+ */
+public class Fixbug_OrderFragmentsAfterResizeExecutions_417374 extends AbstractNodeTest {
+
+ @Test
+ public void test() {
+ EditPart lifeline = createNode(UMLElementTypes.Lifeline_3001, getRootEditPart(), new Point(100, 100), new Dimension(100, 500));
+
+ Interaction interaction = (Interaction)getRootEditPart().resolveSemanticElement();
+
+ ActionExecutionSpecificationEditPart execution1 = (ActionExecutionSpecificationEditPart)createNode(UMLElementTypes.ActionExecutionSpecification_3006, lifeline, new Point(131, 200), new Dimension(16, 150));
+ ActionExecutionSpecification actionES = (ActionExecutionSpecification)execution1.resolveSemanticElement();
+ waitForComplete();
+ //validate after create action
+ List<InteractionFragment> actualList = new ArrayList<InteractionFragment>();
+ actualList.add(actionES.getStart());
+ actualList.add(actionES);
+ actualList.add(actionES.getFinish());
+ validateOrders(interaction.getFragments(), actualList);
+
+ BehaviorExecutionSpecificationEditPart execution2 = (BehaviorExecutionSpecificationEditPart)createNode(UMLElementTypes.BehaviorExecutionSpecification_3003, lifeline, new Point(148, 230), new Dimension(16, 80));
+ BehaviorExecutionSpecification behaviorES = (BehaviorExecutionSpecification)execution2.resolveSemanticElement();
+ waitForComplete();
+ //validate after create behavior
+ actualList = new ArrayList<InteractionFragment>();
+ actualList.add(actionES.getStart());
+ actualList.add(actionES);
+ actualList.add(behaviorES.getStart());
+ actualList.add(behaviorES);
+ actualList.add(behaviorES.getFinish());
+ actualList.add(actionES.getFinish());
+ validateOrders(interaction.getFragments(), actualList);
+
+ //resize behavior
+ resize(execution2, SequenceUtil.getAbsoluteBounds(execution2).getLocation(), PositionConstants.SOUTH, new Dimension(0, 100));
+ //validate
+ actualList = new ArrayList<InteractionFragment>();
+ actualList.add(actionES.getStart());
+ actualList.add(actionES);
+ actualList.add(behaviorES.getStart());
+ actualList.add(behaviorES);
+ actualList.add(actionES.getFinish());
+ actualList.add(behaviorES.getFinish());
+ validateOrders(interaction.getFragments(), actualList);
+ }
+
+ protected void validateOrders(List<InteractionFragment> expectedList, List<InteractionFragment> actualList) {
+ assertNotNull("actualList", actualList);
+ assertNotNull("expectedList", expectedList);
+ for(int index = 0; index < actualList.size(); index++) {
+ InteractionFragment fragment = actualList.get(index);
+ int expectedIndex = expectedList.indexOf(fragment);
+ assertEquals("Index of " + fragment.getName(), expectedIndex, index);
+ }
+ }
+}
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/GateStereotypesTest.java b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/GateStereotypesTest.java
new file mode 100644
index 00000000000..006f298a94d
--- /dev/null
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/GateStereotypesTest.java
@@ -0,0 +1,104 @@
+/*****************************************************************************
+ * Copyright (c) 2013 CEA
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Soyatec - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.uml.diagram.sequence.tests.bug.pro20130916;
+
+import java.util.List;
+
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.gef.EditPart;
+import org.eclipse.gef.RequestConstants;
+import org.eclipse.gef.commands.Command;
+import org.eclipse.gef.requests.CreateRequest;
+import org.eclipse.gef.requests.CreationFactory;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.GateEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.util.GateHelper;
+import org.eclipse.uml2.uml.Gate;
+import org.junit.Test;
+
+
+/**
+ * @author Jin Liu (jin.liu@soyatec.com)
+ */
+public class GateStereotypesTest extends BaseStereotypesTest {
+
+ private GateEditPart gate;
+
+ /**
+ * @see org.eclipse.papyrus.uml.diagram.sequence.tests.bug.m7.AbstractNodeTest#setUp()
+ *
+ * @throws Exception
+ */
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ gate = createGate(getRootEditPart().getParent(), new Point(0, 100));
+ assertNotNull(gate);
+ }
+
+ private GateEditPart createGate(EditPart parent, Point location) {
+ CreateRequest request = new CreateRequest(RequestConstants.REQ_CREATE);
+ request.setFactory(new CreationFactory() {
+
+ public Object getObjectType() {
+ return GateEditPart.GATE_TYPE;
+ }
+
+ public Object getNewObject() {
+ return GateEditPart.GATE_TYPE;
+ }
+ });
+ request.setLocation(location);
+ Command command = parent.getCommand(request);
+ assertNotNull("create gate command", command);
+ assertTrue("executable of create gate command", command.canExecute());
+ getDiagramCommandStack().execute(command);
+ waitForComplete();
+ GateEditPart gateEditPart = getPrimaryGateEditPart(parent);
+ assertNotNull("created gate", gateEditPart);
+ return gateEditPart;
+ }
+
+ protected GateEditPart getPrimaryGateEditPart(EditPart parent) {
+ @SuppressWarnings("rawtypes")
+ List children = parent.getChildren();
+ for(int i = children.size() - 1; i >= 0; i--) {
+ Object child = children.get(i);
+ if(child instanceof GateEditPart) {
+ GateEditPart gateEp = (GateEditPart)child;
+ Gate gate = (Gate)gateEp.resolveSemanticElement();
+ if(!(GateHelper.isInnerCFGate(gate))) {
+ return gateEp;
+ }
+ }
+ }
+ return null;
+ }
+
+ @Test
+ public void testDisplayStereotypeComment() {
+ doTestDisplayStereotypeComment(gate);
+ }
+
+ @Test
+ public void testDisplayStereotypeInCompartment() {
+ doTestDisplayStereotypeInCompartment(gate, gate.getLabelEditPart());
+ }
+
+ @Test
+ public void testDisplayStereotypeWithBrace() {
+ doTestDisplayStereotypeWithBrace(gate, gate.getLabelEditPart());
+ }
+
+}
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/GeneralOrderingStereotypesTest.java b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/GeneralOrderingStereotypesTest.java
new file mode 100644
index 00000000000..9897d92b860
--- /dev/null
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/GeneralOrderingStereotypesTest.java
@@ -0,0 +1,62 @@
+/*****************************************************************************
+ * Copyright (c) 2013 CEA
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Soyatec - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.uml.diagram.sequence.tests.bug.pro20130916;
+
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.GeneralOrderingEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.LifelineEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.Message2EditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.providers.UMLElementTypes;
+import org.eclipse.papyrus.uml.diagram.sequence.util.SequenceUtil;
+import org.junit.Test;
+
+
+/**
+ * @author Jin Liu (jin.liu@soyatec.com)
+ */
+public class GeneralOrderingStereotypesTest extends BaseStereotypesTest {
+
+ private GeneralOrderingEditPart generalOrdering;
+
+ /**
+ * @see org.eclipse.papyrus.uml.diagram.sequence.tests.bug.m7.AbstractNodeTest#setUp()
+ *
+ * @throws Exception
+ */
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ LifelineEditPart source = (LifelineEditPart)createNode(UMLElementTypes.Lifeline_3001, getRootEditPart(), new Point(100, 100), null);
+ assertNotNull(source);
+ LifelineEditPart target = (LifelineEditPart)createNode(UMLElementTypes.Lifeline_3001, getRootEditPart(), new Point(300, 100), null);
+ assertNotNull(target);
+ Point sourcePoint = getAbsoluteCenter(source);
+ Point targetPoint = getAbsoluteCenter(target);
+ Message2EditPart message1 = (Message2EditPart)createLink(UMLElementTypes.Message_4004, source.getViewer(), sourcePoint, targetPoint);
+ assertNotNull(message1);
+ Message2EditPart message2 = (Message2EditPart)createLink(UMLElementTypes.Message_4004, source.getViewer(), sourcePoint.getTranslated(0, 50), targetPoint.getTranslated(0, 50));
+ assertNotNull(message2);
+ sourcePoint = SequenceUtil.getAbsoluteEdgeExtremity(message1, true);
+ targetPoint = SequenceUtil.getAbsoluteEdgeExtremity(message2, false);
+ generalOrdering = (GeneralOrderingEditPart)createLink(UMLElementTypes.GeneralOrdering_4012, source.getViewer(), sourcePoint, targetPoint);
+ assertNotNull(generalOrdering);
+ }
+
+ @Test
+ public void testDisplayStereotypeComment() {
+ doTestDisplayStereotypeComment(generalOrdering);
+ }
+
+}
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/InteractionOperandStereotypesTest.java b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/InteractionOperandStereotypesTest.java
new file mode 100644
index 00000000000..c2678d7bbc6
--- /dev/null
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/InteractionOperandStereotypesTest.java
@@ -0,0 +1,63 @@
+/*****************************************************************************
+ * Copyright (c) 2013 CEA
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Soyatec - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.uml.diagram.sequence.tests.bug.pro20130916;
+
+import org.eclipse.draw2d.geometry.Dimension;
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.CombinedFragmentCombinedFragmentCompartmentEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.CombinedFragmentEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.InteractionOperandEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.InteractionOperandGuardEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.providers.UMLElementTypes;
+import org.junit.Test;
+
+
+/**
+ * @author Jin Liu (jin.liu@soyatec.com)
+ */
+public class InteractionOperandStereotypesTest extends BaseStereotypesTest {
+
+ private InteractionOperandEditPart operand;
+
+ /**
+ * @see org.eclipse.papyrus.uml.diagram.sequence.tests.bug.m7.AbstractNodeTest#setUp()
+ *
+ * @throws Exception
+ */
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ CombinedFragmentEditPart cf = (CombinedFragmentEditPart)createNode(UMLElementTypes.CombinedFragment_3004, getRootEditPart(), new Point(100, 100), new Dimension(200, 100));
+ CombinedFragmentCombinedFragmentCompartmentEditPart compartment = (CombinedFragmentCombinedFragmentCompartmentEditPart)cf.getChildBySemanticHint("" + CombinedFragmentCombinedFragmentCompartmentEditPart.VISUAL_ID);
+ operand = (InteractionOperandEditPart)compartment.getChildBySemanticHint("" + InteractionOperandEditPart.VISUAL_ID);
+ assertNotNull(operand);
+ }
+
+ @Test
+ public void testDisplayStereotypeComment() {
+ doTestDisplayStereotypeComment(operand);
+ }
+
+ @Test
+ public void testDisplayStereotypeInCompartment() {
+ doTestDisplayStereotypeInCompartment(operand, operand.getChildBySemanticHint(InteractionOperandGuardEditPart.GUARD_TYPE));
+ }
+
+ @Test
+ public void testDisplayStereotypeWithBrace() {
+ doTestDisplayStereotypeWithBrace(operand, operand.getChildBySemanticHint(InteractionOperandGuardEditPart.GUARD_TYPE));
+ }
+
+}
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/InteractionStereotypesTest.java b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/InteractionStereotypesTest.java
new file mode 100644
index 00000000000..df142682a38
--- /dev/null
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/InteractionStereotypesTest.java
@@ -0,0 +1,95 @@
+/*****************************************************************************
+ * Copyright (c) 2013 CEA
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Soyatec - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.uml.diagram.sequence.tests.bug.pro20130916;
+
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.ConnectionNodeEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.GateEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.InteractionEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.LifelineEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.providers.UMLElementTypes;
+import org.junit.Test;
+
+
+/**
+ * @author Jin Liu (jin.liu@soyatec.com)
+ */
+public class InteractionStereotypesTest extends BaseStereotypesTest {
+
+ private InteractionEditPart interaction;
+
+ private ConnectionNodeEditPart messageWithGate;
+
+ private ConnectionNodeEditPart messageFound;
+
+ private ConnectionNodeEditPart messageLost;
+
+ /**
+ * @see org.eclipse.papyrus.uml.diagram.sequence.tests.bug.m7.AbstractNodeTest#setUp()
+ *
+ * @throws Exception
+ */
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ interaction = (InteractionEditPart)getRootEditPart().getParent();
+ assertNotNull(interaction);
+
+ LifelineEditPart lifeline = (LifelineEditPart)createNode(UMLElementTypes.Lifeline_3001, getRootEditPart(), new Point(150, 100), null);
+ Rectangle lifelineBounds = getAbsoluteBounds(lifeline);
+ //1. messageWithGate
+ Point endLocation = lifelineBounds.getCenter();
+ Point startLocation = new Point(0, endLocation.y);
+ messageWithGate = (ConnectionNodeEditPart)createLink(UMLElementTypes.Message_4004, interaction.getViewer(), startLocation, interaction, endLocation, lifeline);
+ assertNotNull("messageWithGate", messageWithGate);
+
+ //2. messagefound
+ messageFound = (ConnectionNodeEditPart)createLink(UMLElementTypes.Message_4009, lifeline.getViewer(), endLocation.getTranslated(-100, 50), endLocation.getTranslated(0, 50));
+ assertNotNull("messageFound", messageFound);
+
+ //3. messageLost
+ messageLost = (ConnectionNodeEditPart)createLink(UMLElementTypes.Message_4008, lifeline.getViewer(), endLocation.getTranslated(0, -50), endLocation.getTranslated(100, -50));
+ assertNotNull("messageLost", messageLost);
+ }
+
+ @Test
+ public void testDisplayStereotypeComment() {
+ doTestDisplayStereotypeComment(interaction);
+ }
+
+ @Test
+ public void testDisplayStereotypeInCompartment() {
+ checkConnectionHorizontally(messageWithGate, GateEditPart.DEFAULT_SIZE.height / 2);
+ checkConnectionHorizontally(messageFound, 1);
+ checkConnectionHorizontally(messageLost, 1);
+ doTestDisplayStereotypeInCompartment(interaction, interaction);
+ checkConnectionHorizontally(messageWithGate, GateEditPart.DEFAULT_SIZE.height / 2);
+ checkConnectionHorizontally(messageFound, 1);
+ checkConnectionHorizontally(messageLost, 1);
+ }
+
+ @Test
+ public void testDisplayStereotypeWithBrace() {
+ checkConnectionHorizontally(messageWithGate, GateEditPart.DEFAULT_SIZE.height / 2);
+ checkConnectionHorizontally(messageFound, 1);
+ checkConnectionHorizontally(messageLost, 1);
+ doTestDisplayStereotypeWithBrace(interaction, interaction);
+ checkConnectionHorizontally(messageWithGate, GateEditPart.DEFAULT_SIZE.height / 2);
+ checkConnectionHorizontally(messageFound, 1);
+ checkConnectionHorizontally(messageLost, 1);
+ }
+
+}
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/InteractionUseStereotypesTest.java b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/InteractionUseStereotypesTest.java
new file mode 100644
index 00000000000..d5e25775ef6
--- /dev/null
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/InteractionUseStereotypesTest.java
@@ -0,0 +1,58 @@
+/*****************************************************************************
+ * Copyright (c) 2013 CEA
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Soyatec - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.uml.diagram.sequence.tests.bug.pro20130916;
+
+import org.eclipse.draw2d.geometry.Dimension;
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.InteractionUseEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.providers.UMLElementTypes;
+import org.junit.Test;
+
+
+/**
+ * @author Jin Liu (jin.liu@soyatec.com)
+ */
+public class InteractionUseStereotypesTest extends BaseStereotypesTest {
+
+ private InteractionUseEditPart interactionUse;
+
+ /**
+ * @see org.eclipse.papyrus.uml.diagram.sequence.tests.bug.m7.AbstractNodeTest#setUp()
+ *
+ * @throws Exception
+ */
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ interactionUse = (InteractionUseEditPart)createNode(UMLElementTypes.InteractionUse_3002, getRootEditPart(), new Point(100, 100), new Dimension(200, 100));
+ assertNotNull(interactionUse);
+ }
+
+ @Test
+ public void testDisplayStereotypeComment() {
+ doTestDisplayStereotypeComment(interactionUse);
+ }
+
+ @Test
+ public void testDisplayStereotypeInCompartment() {
+ doTestDisplayStereotypeInCompartment(interactionUse, interactionUse);
+ }
+
+ @Test
+ public void testDisplayStereotypeWithBrace() {
+ doTestDisplayStereotypeWithBrace(interactionUse, interactionUse);
+ }
+
+}
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/LifelineStereotypesTest.java b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/LifelineStereotypesTest.java
new file mode 100644
index 00000000000..a4f0e15d96c
--- /dev/null
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/LifelineStereotypesTest.java
@@ -0,0 +1,69 @@
+/*****************************************************************************
+ * Copyright (c) 2013 CEA
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Soyatec - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.uml.diagram.sequence.tests.bug.pro20130916;
+
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.AbstractMessageEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.LifelineEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.providers.UMLElementTypes;
+import org.eclipse.papyrus.uml.diagram.sequence.util.SequenceUtil;
+import org.junit.Test;
+
+
+/**
+ * @author Jin Liu (jin.liu@soyatec.com)
+ */
+public class LifelineStereotypesTest extends BaseStereotypesTest {
+
+ private LifelineEditPart lifeline;
+
+ private AbstractMessageEditPart link;
+
+ /**
+ * @see org.eclipse.papyrus.uml.diagram.sequence.tests.bug.m7.AbstractNodeTest#setUp()
+ *
+ * @throws Exception
+ */
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ lifeline = (LifelineEditPart)createNode(UMLElementTypes.Lifeline_3001, getRootEditPart(), new Point(100, 100), null);
+ assertNotNull(lifeline);
+
+ LifelineEditPart lifeline2 = (LifelineEditPart)createNode(UMLElementTypes.Lifeline_3001, getRootEditPart(), new Point(400, 100), null);
+ link = (AbstractMessageEditPart)createLink(UMLElementTypes.Message_4004, lifeline2.getViewer(), SequenceUtil.getAbsoluteBounds(lifeline).getCenter(), lifeline, SequenceUtil.getAbsoluteBounds(lifeline2).getCenter(), lifeline2);
+ assertNotNull("link", link);
+ }
+
+ @Test
+ public void testDisplayStereotypeComment() {
+ doTestDisplayStereotypeComment(lifeline);
+ }
+
+ @Test
+ public void testDisplayStereotypeInCompartment() {
+ checkConnectionHorizontally(link, 1);
+ doTestDisplayStereotypeInCompartment(lifeline, lifeline);
+ checkConnectionHorizontally(link, 2);
+ }
+
+ @Test
+ public void testDisplayStereotypeWithBrace() {
+ checkConnectionHorizontally(link, 1);
+ doTestDisplayStereotypeWithBrace(lifeline, lifeline);
+ checkConnectionHorizontally(link, 2);
+ }
+
+}
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/MessageStereotypesTest.java b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/MessageStereotypesTest.java
new file mode 100644
index 00000000000..35db86e4b80
--- /dev/null
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/MessageStereotypesTest.java
@@ -0,0 +1,124 @@
+/*****************************************************************************
+ * Copyright (c) 2013 CEA
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Soyatec - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.uml.diagram.sequence.tests.bug.pro20130916;
+
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.AbstractMessageEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.ActionExecutionSpecificationEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.LifelineEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.Message2EditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.Message3EditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.Message4EditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.Message5EditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.Message6EditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.Message7EditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.MessageEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.providers.UMLElementTypes;
+import org.junit.Test;
+
+
+/**
+ * @author Jin Liu (jin.liu@soyatec.com)
+ */
+public class MessageStereotypesTest extends BaseStereotypesTest {
+
+ protected void doTest(AbstractMessageEditPart message) {
+ doTestDisplayStereotypeComment(message);
+ }
+
+ @Test
+ public void testSynchronousMessage() {
+ LifelineEditPart lifeline1 = (LifelineEditPart)createNode(UMLElementTypes.Lifeline_3001, getRootEditPart(), new Point(100, 100), null);
+ assertNotNull(lifeline1);
+ ActionExecutionSpecificationEditPart source = (ActionExecutionSpecificationEditPart)createNode(UMLElementTypes.ActionExecutionSpecification_3006, lifeline1, getAbsoluteCenter(lifeline1), null);
+ assertNotNull(source);
+ LifelineEditPart lifeline2 = (LifelineEditPart)createNode(UMLElementTypes.Lifeline_3001, getRootEditPart(), new Point(300, 100), null);
+ assertNotNull(lifeline2);
+ ActionExecutionSpecificationEditPart target = (ActionExecutionSpecificationEditPart)createNode(UMLElementTypes.ActionExecutionSpecification_3006, lifeline2, getAbsoluteCenter(lifeline2), null);
+ assertNotNull(target);
+ MessageEditPart message = (MessageEditPart)createLink(UMLElementTypes.Message_4003, lifeline1.getViewer(), getAbsoluteCenter(source), getAbsoluteCenter(target));
+ assertNotNull(message);
+ doTest(message);
+ }
+
+ @Test
+ public void testAsynchronousMessage() {
+ LifelineEditPart source = (LifelineEditPart)createNode(UMLElementTypes.Lifeline_3001, getRootEditPart(), new Point(100, 100), null);
+ assertNotNull(source);
+ LifelineEditPart target = (LifelineEditPart)createNode(UMLElementTypes.Lifeline_3001, getRootEditPart(), new Point(300, 100), null);
+ assertNotNull(target);
+ Message2EditPart message = (Message2EditPart)createLink(UMLElementTypes.Message_4004, source.getViewer(), getAbsoluteCenter(source), getAbsoluteCenter(target));
+ assertNotNull(message);
+ doTest(message);
+ }
+
+ @Test
+ public void testCreateMessage() {
+ LifelineEditPart source = (LifelineEditPart)createNode(UMLElementTypes.Lifeline_3001, getRootEditPart(), new Point(100, 100), null);
+ assertNotNull(source);
+ LifelineEditPart target = (LifelineEditPart)createNode(UMLElementTypes.Lifeline_3001, getRootEditPart(), new Point(300, 100), null);
+ assertNotNull(target);
+ Message4EditPart message = (Message4EditPart)createLink(UMLElementTypes.Message_4006, source.getViewer(), getAbsoluteCenter(source), getAbsoluteCenter(target));
+ assertNotNull(message);
+ doTest(message);
+ }
+
+ @Test
+ public void testReplyMessage() {
+ LifelineEditPart lifeline1 = (LifelineEditPart)createNode(UMLElementTypes.Lifeline_3001, getRootEditPart(), new Point(300, 100), null);
+ assertNotNull(lifeline1);
+ ActionExecutionSpecificationEditPart source = (ActionExecutionSpecificationEditPart)createNode(UMLElementTypes.ActionExecutionSpecification_3006, lifeline1, getAbsoluteCenter(lifeline1).getTranslated(0, -100), null);
+ assertNotNull(source);
+ LifelineEditPart lifeline2 = (LifelineEditPart)createNode(UMLElementTypes.Lifeline_3001, getRootEditPart(), new Point(100, 100), null);
+ assertNotNull(lifeline2);
+ ActionExecutionSpecificationEditPart target = (ActionExecutionSpecificationEditPart)createNode(UMLElementTypes.ActionExecutionSpecification_3006, lifeline2, getAbsoluteCenter(lifeline2).getTranslated(0, 100), null);
+ assertNotNull(target);
+ Message3EditPart message = (Message3EditPart)createLink(UMLElementTypes.Message_4005, source.getViewer(), getAbsoluteCenter(source), getAbsoluteCenter(target));
+ assertNotNull(message);
+ doTest(message);
+ }
+
+ @Test
+ public void testFoundMessage() {
+ LifelineEditPart target = (LifelineEditPart)createNode(UMLElementTypes.Lifeline_3001, getRootEditPart(), new Point(300, 100), null);
+ assertNotNull(target);
+ Point targetLocation = getAbsoluteCenter(target);
+ Point sourceLocation = targetLocation.getTranslated(-100, 0);
+ Message7EditPart message = (Message7EditPart)createLink(UMLElementTypes.Message_4009, target.getViewer(), sourceLocation, targetLocation);
+ assertNotNull(message);
+ doTest(message);
+ }
+
+ @Test
+ public void testLostMessage() {
+ LifelineEditPart source = (LifelineEditPart)createNode(UMLElementTypes.Lifeline_3001, getRootEditPart(), new Point(300, 100), null);
+ assertNotNull(source);
+ Point sourceLocation = getAbsoluteCenter(source);
+ Point targetLocation = sourceLocation.getTranslated(100, 0);
+ Message6EditPart message = (Message6EditPart)createLink(UMLElementTypes.Message_4008, source.getViewer(), sourceLocation, targetLocation);
+ assertNotNull(message);
+ doTest(message);
+ }
+
+ @Test
+ public void testDeleteMessage() {
+ LifelineEditPart source = (LifelineEditPart)createNode(UMLElementTypes.Lifeline_3001, getRootEditPart(), new Point(100, 100), null);
+ assertNotNull(source);
+ LifelineEditPart target = (LifelineEditPart)createNode(UMLElementTypes.Lifeline_3001, getRootEditPart(), new Point(300, 100), null);
+ assertNotNull(target);
+ Message5EditPart message = (Message5EditPart)createLink(UMLElementTypes.Message_4007, source.getViewer(), getAbsoluteCenter(source), getAbsoluteCenter(target));
+ assertNotNull(message);
+ doTest(message);
+ }
+}
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/New_DisplayBehaviorForBehaviorExecutionSpecification_417376.java b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/New_DisplayBehaviorForBehaviorExecutionSpecification_417376.java
new file mode 100644
index 00000000000..c4b31abfdca
--- /dev/null
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/New_DisplayBehaviorForBehaviorExecutionSpecification_417376.java
@@ -0,0 +1,158 @@
+/*****************************************************************************
+ * Copyright (c) 2013 CEA
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Soyatec - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.uml.diagram.sequence.tests.bug.pro20130916;
+
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.Label;
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.gef.EditPart;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;
+import org.eclipse.papyrus.uml.diagram.common.figure.node.ILabelFigure;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.BehaviorExecutionSpecificationBehaviorEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.BehaviorExecutionSpecificationEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.providers.UMLElementTypes;
+import org.eclipse.papyrus.uml.diagram.sequence.tests.bug.m7.AbstractNodeTest;
+import org.eclipse.uml2.uml.Behavior;
+import org.eclipse.uml2.uml.BehaviorExecutionSpecification;
+import org.eclipse.uml2.uml.Model;
+import org.eclipse.uml2.uml.OpaqueBehavior;
+import org.eclipse.uml2.uml.PackageableElement;
+import org.eclipse.uml2.uml.UMLPackage;
+import org.junit.Test;
+
+
+/**
+ * Display behavior as a label: https://bugs.eclipse.org/bugs/show_bug.cgi?id=417376
+ *
+ * @author Jin Liu (jin.liu@soyatec.com)
+ */
+public class New_DisplayBehaviorForBehaviorExecutionSpecification_417376 extends AbstractNodeTest {
+
+ private BehaviorExecutionSpecificationEditPart behaviorExecutionSpecificationEditPart;
+
+ private BehaviorExecutionSpecification behaviorExecutionSpecification;
+
+ protected Behavior createBehavior(final String name, final EClass type) {
+ final Model behaviorContainer = getBehaviorContainer();
+ getCommandStack().execute(new RecordingCommand(getEditingDomain()) {
+
+ @Override
+ protected void doExecute() {
+ behaviorContainer.createPackagedElement(name, type);
+ }
+ });
+ waitForComplete();
+ PackageableElement behavior = behaviorContainer.getPackagedElement(name);
+ assertNotNull("create behavior", behavior);
+ assertEquals("created behavior type", type, behavior.eClass());
+ return (Behavior)behavior;
+ }
+
+ /**
+ * Check if there's a Label with given behaviorName.
+ */
+ private void doCheckBehaviorLabel(String behaviorName) {
+ IGraphicalEditPart child = behaviorExecutionSpecificationEditPart.getChildBySemanticHint(BehaviorExecutionSpecificationBehaviorEditPart.BEHAVIOR_TYPE);
+ if(behaviorName == null) {
+ assertNull("Behavior should NOT be displayed.", child);
+ } else {
+ assertNotNull("Behavior should be displayed.", child);
+ assertTrue("Behavior should be a BehaviorExecutionSpecificationBehaviorEditPart", child instanceof BehaviorExecutionSpecificationBehaviorEditPart);
+ BehaviorExecutionSpecificationBehaviorEditPart behaviorEditPart = (BehaviorExecutionSpecificationBehaviorEditPart)child;
+ IFigure figure = behaviorEditPart.getFigure();
+ String labelText = null;
+ if(figure instanceof WrappingLabel) {
+ labelText = ((WrappingLabel)figure).getText();
+ } else if(figure instanceof Label) {
+ labelText = ((Label)figure).getText();
+ } else if(figure instanceof ILabelFigure) {
+ labelText = ((ILabelFigure)figure).getText();
+ }
+ assertEquals("Displayed behavior", behaviorName, labelText);
+ }
+ }
+
+ protected Model getBehaviorContainer() {
+ EObject eContainer = behaviorExecutionSpecification.eContainer();
+ while(eContainer != null && !(eContainer instanceof Model)) {
+ eContainer = eContainer.eContainer();
+ }
+ return (Model)eContainer;
+ }
+
+ protected void setBehavior(final Behavior newBehavior) {
+ getCommandStack().execute(new RecordingCommand(getEditingDomain()) {
+
+ @Override
+ protected void doExecute() {
+ behaviorExecutionSpecification.setBehavior(newBehavior);
+ }
+ });
+ waitForComplete();
+ }
+
+ /**
+ * @see org.eclipse.papyrus.uml.diagram.sequence.tests.bug.m7.AbstractNodeTest#setUp()
+ *
+ * @throws Exception
+ */
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ EditPart lifeline = createNode(UMLElementTypes.Lifeline_3001, getRootEditPart(), new Point(100, 100), null);
+ assertNotNull("lifeline", lifeline);
+ behaviorExecutionSpecificationEditPart = (BehaviorExecutionSpecificationEditPart)createNode(UMLElementTypes.BehaviorExecutionSpecification_3003, lifeline, new Point(131, 150), null);
+ assertNotNull("execution", behaviorExecutionSpecificationEditPart);
+ EObject element = behaviorExecutionSpecificationEditPart.resolveSemanticElement();
+ assertNotNull("element", element);
+ assertTrue("behavior execution", element instanceof BehaviorExecutionSpecification);
+ behaviorExecutionSpecification = (BehaviorExecutionSpecification)element;
+ }
+
+ /**
+ * Test behavior, the name of the behavior should be displayed.
+ */
+ @Test
+ public void testDisplayBehavior() {
+ String behaviorName = "testDisplayBehavior_Activity";
+ setBehavior(createBehavior(behaviorName, UMLPackage.eINSTANCE.getActivity()));
+
+ doCheckBehaviorLabel(behaviorName);
+ }
+
+ /**
+ * Test OpaqueBehavior, the languages and bodies should be displayed, too
+ */
+ @Test
+ public void testDisplayOpaqueBehavior() {
+ final OpaqueBehavior opaqueBehavior = (OpaqueBehavior)createBehavior("testDisplayBehavior_Opaque", UMLPackage.eINSTANCE.getOpaqueBehavior());
+ getCommandStack().execute(new RecordingCommand(getEditingDomain()) {
+
+ @Override
+ protected void doExecute() {
+ opaqueBehavior.getLanguages().add("JAVA");
+ opaqueBehavior.getBodies().add("System.out.print()");
+ opaqueBehavior.getLanguages().add("OCL");
+ opaqueBehavior.getBodies().add("self.radius > 0");
+ }
+ });
+ setBehavior(opaqueBehavior);
+ doCheckBehaviorLabel("{{JAVA}System.out.print(), {OCL}self.radius > 0}");
+ }
+}
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/New_DisplayInvariantForStateInvariant_417377.java b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/New_DisplayInvariantForStateInvariant_417377.java
new file mode 100644
index 00000000000..491fb4d23b5
--- /dev/null
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/New_DisplayInvariantForStateInvariant_417377.java
@@ -0,0 +1,179 @@
+/*****************************************************************************
+ * Copyright (c) 2013 CEA
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Soyatec - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.uml.diagram.sequence.tests.bug.pro20130916;
+
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.Label;
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.gef.EditPart;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;
+import org.eclipse.papyrus.uml.diagram.common.figure.node.ILabelFigure;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.CustomStateInvariantLabelEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.StateInvariantEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.StateInvariantLabelEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.part.UMLVisualIDRegistry;
+import org.eclipse.papyrus.uml.diagram.sequence.providers.ElementInitializers;
+import org.eclipse.papyrus.uml.diagram.sequence.providers.UMLElementTypes;
+import org.eclipse.papyrus.uml.diagram.sequence.tests.bug.m7.AbstractNodeTest;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Duration;
+import org.eclipse.uml2.uml.DurationConstraint;
+import org.eclipse.uml2.uml.DurationInterval;
+import org.eclipse.uml2.uml.Interaction;
+import org.eclipse.uml2.uml.LiteralInteger;
+import org.eclipse.uml2.uml.LiteralString;
+import org.eclipse.uml2.uml.StateInvariant;
+import org.eclipse.uml2.uml.TimeConstraint;
+import org.eclipse.uml2.uml.TimeExpression;
+import org.eclipse.uml2.uml.TimeInterval;
+import org.eclipse.uml2.uml.UMLFactory;
+import org.eclipse.uml2.uml.UMLPackage;
+import org.junit.Test;
+
+
+/**
+ * Display invariant for a StateInvariant: https://bugs.eclipse.org/bugs/show_bug.cgi?id=417377
+ *
+ * @author Jin Liu (jin.liu@soyatec.com)
+ */
+public class New_DisplayInvariantForStateInvariant_417377 extends AbstractNodeTest {
+
+ private StateInvariantEditPart stateInvarintEditPart;
+
+ private StateInvariant stateInvariant;
+
+ /**
+ * @see org.eclipse.papyrus.uml.diagram.sequence.tests.bug.m7.AbstractNodeTest#setUp()
+ *
+ * @throws Exception
+ */
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ EditPart lifeline = createNode(UMLElementTypes.Lifeline_3001, getRootEditPart(), new Point(100, 100), null);
+ assertNotNull("lifeline", lifeline);
+ stateInvarintEditPart = (StateInvariantEditPart)createNode(UMLElementTypes.StateInvariant_3017, lifeline, new Point(131, 150), null);
+ assertNotNull("stateInvariant", stateInvarintEditPart);
+ stateInvariant = (StateInvariant)stateInvarintEditPart.resolveSemanticElement();
+ assertNotNull("uml element", stateInvariant);
+ }
+
+ @Test
+ public void testDisplayInvariant_TimeConstraint() {
+ final Interaction interaction = (Interaction)getRootSemanticModel();
+ //create and add time constraint.
+ getCommandStack().execute(new RecordingCommand(getEditingDomain()) {
+
+ @Override
+ protected void doExecute() {
+ TimeConstraint timeConstraint = (TimeConstraint)interaction.createOwnedRule("timeRule", UMLPackage.eINSTANCE.getTimeConstraint());
+ TimeInterval timeInterval = UMLFactory.eINSTANCE.createTimeInterval();
+ timeConstraint.setSpecification(timeInterval);
+ org.eclipse.uml2.uml.Package package_ = timeInterval.getNearestPackage();
+ TimeExpression minTimeExp = UMLFactory.eINSTANCE.createTimeExpression();
+ TimeExpression maxTimeExp = UMLFactory.eINSTANCE.createTimeExpression();
+ package_.getPackagedElements().add(minTimeExp);
+ package_.getPackagedElements().add(maxTimeExp);
+ ElementInitializers.init_NamedElement(minTimeExp, "", timeInterval.eClass().getName(), "Min");
+ ElementInitializers.init_NamedElement(maxTimeExp, "", timeInterval.eClass().getName(), "Max");
+ timeInterval.setMin(minTimeExp);
+ timeInterval.setMax(maxTimeExp);
+ LiteralInteger minExprValue = UMLFactory.eINSTANCE.createLiteralInteger();
+ minExprValue.setValue(20);
+ minTimeExp.setExpr(minExprValue);
+ LiteralInteger maxTimeValue = UMLFactory.eINSTANCE.createLiteralInteger();
+ maxTimeValue.setValue(50);
+ maxTimeExp.setExpr(maxTimeValue);
+
+ stateInvariant.setInvariant(timeConstraint);
+ }
+ });
+ waitForComplete();
+ doCheckInvariantLabel("{20..50}");
+ }
+
+ @Test
+ public void testDisplayInvariant_DurationConstraint() {
+ final Interaction interaction = (Interaction)getRootSemanticModel();
+ //create and add duration constraint.
+ getCommandStack().execute(new RecordingCommand(getEditingDomain()) {
+
+ @Override
+ protected void doExecute() {
+ DurationConstraint durationConstraint = (DurationConstraint)interaction.createOwnedRule("durationRule", UMLPackage.eINSTANCE.getDurationConstraint());
+ DurationInterval durationInterval = UMLFactory.eINSTANCE.createDurationInterval();
+ durationConstraint.setSpecification(durationInterval);
+ org.eclipse.uml2.uml.Package package_ = durationConstraint.getNearestPackage();
+ Duration minDuration = UMLFactory.eINSTANCE.createDuration();
+ Duration maxDuration = UMLFactory.eINSTANCE.createDuration();
+ package_.getPackagedElements().add(minDuration);
+ package_.getPackagedElements().add(maxDuration);
+ ElementInitializers.init_NamedElement(minDuration, "", durationInterval.eClass().getName(), "Min");
+ ElementInitializers.init_NamedElement(maxDuration, "", durationInterval.eClass().getName(), "Max");
+ durationInterval.setMin(minDuration);
+ durationInterval.setMax(maxDuration);
+ LiteralInteger minDurationValue = UMLFactory.eINSTANCE.createLiteralInteger();
+ minDurationValue.setValue(20);
+ minDuration.setExpr(minDurationValue);
+ LiteralInteger maxDurationValue = UMLFactory.eINSTANCE.createLiteralInteger();
+ maxDurationValue.setValue(50);
+ maxDuration.setExpr(maxDurationValue);
+
+ stateInvariant.setInvariant(durationConstraint);
+ }
+ });
+ waitForComplete();
+ doCheckInvariantLabel("{20..50}");
+ }
+
+ @Test
+ public void testDisplayInvariant_Constraint() {
+ final Interaction interaction = (Interaction)getRootSemanticModel();
+ //create and add constraint.
+ getCommandStack().execute(new RecordingCommand(getEditingDomain()) {
+
+ @Override
+ protected void doExecute() {
+ Constraint constraint = (Constraint)interaction.createOwnedRule("constraintRule", UMLPackage.eINSTANCE.getConstraint());
+ LiteralString value = UMLFactory.eINSTANCE.createLiteralString();
+ value.setValue("testConstraint");
+ constraint.setSpecification(value);
+ stateInvariant.setInvariant(constraint);
+ }
+ });
+ waitForComplete();
+ doCheckInvariantLabel("{testConstraint}");
+ }
+
+ /**
+ * @param string
+ */
+ private void doCheckInvariantLabel(String expectedLabelValue) {
+ IGraphicalEditPart child = stateInvarintEditPart.getChildBySemanticHint(UMLVisualIDRegistry.getType(StateInvariantLabelEditPart.VISUAL_ID));
+ assertTrue("invariant edit part", child instanceof CustomStateInvariantLabelEditPart);
+ IFigure figure = ((CustomStateInvariantLabelEditPart)child).getFigure();
+ String actualLabelValue = null;
+ if(figure instanceof WrappingLabel) {
+ actualLabelValue = ((WrappingLabel)figure).getText();
+ } else if(figure instanceof Label) {
+ actualLabelValue = ((Label)figure).getText();
+ } else if(figure instanceof ILabelFigure) {
+ actualLabelValue = ((ILabelFigure)figure).getText();
+ }
+ assertEquals("displayed invariant value", expectedLabelValue, actualLabelValue);
+ }
+}
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/StateInvariantStereotypesTest.java b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/StateInvariantStereotypesTest.java
new file mode 100644
index 00000000000..67a99bb6425
--- /dev/null
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/StateInvariantStereotypesTest.java
@@ -0,0 +1,59 @@
+/*****************************************************************************
+ * Copyright (c) 2013 CEA
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Soyatec - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.uml.diagram.sequence.tests.bug.pro20130916;
+
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.LifelineEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.StateInvariantEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.providers.UMLElementTypes;
+import org.junit.Test;
+
+
+/**
+ * @author Jin Liu (jin.liu@soyatec.com)
+ */
+public class StateInvariantStereotypesTest extends BaseStereotypesTest {
+
+ private StateInvariantEditPart stateInvariant;
+
+ /**
+ * @see org.eclipse.papyrus.uml.diagram.sequence.tests.bug.m7.AbstractNodeTest#setUp()
+ *
+ * @throws Exception
+ */
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ LifelineEditPart lifeline = (LifelineEditPart)createNode(UMLElementTypes.Lifeline_3001, getRootEditPart(), new Point(100, 100), null);
+ stateInvariant = (StateInvariantEditPart)createNode(UMLElementTypes.StateInvariant_3017, lifeline, new Point(131, 150), null);
+ assertNotNull(stateInvariant);
+ }
+
+ @Test
+ public void testDisplayStereotypeComment() {
+ doTestDisplayStereotypeComment(stateInvariant);
+ }
+
+ @Test
+ public void testDisplayStereotypeInCompartment() {
+ doTestDisplayStereotypeInCompartment(stateInvariant, stateInvariant);
+ }
+
+ @Test
+ public void testDisplayStereotypeWithBrace() {
+ doTestDisplayStereotypeWithBrace(stateInvariant, stateInvariant);
+ }
+
+}
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/TimeConstraintStereotypesTest.java b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/TimeConstraintStereotypesTest.java
new file mode 100644
index 00000000000..b870dabb89a
--- /dev/null
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/TimeConstraintStereotypesTest.java
@@ -0,0 +1,72 @@
+/*****************************************************************************
+ * Copyright (c) 2013 CEA
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Soyatec - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.uml.diagram.sequence.tests.bug.pro20130916;
+
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.gef.EditPart;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.AbstractExecutionSpecificationEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.TimeObservationAppliedStereotypeEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.TimeObservationEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.TimeObservationLabelEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.providers.UMLElementTypes;
+import org.eclipse.papyrus.uml.diagram.sequence.util.SequenceUtil;
+import org.junit.Test;
+
+
+/**
+ * @author Jin Liu (jin.liu@soyatec.com)
+ */
+public class TimeConstraintStereotypesTest extends BaseStereotypesTest {
+
+ private TimeObservationEditPart timeObservation;
+
+ /**
+ * @see org.eclipse.papyrus.uml.diagram.sequence.tests.bug.m7.AbstractNodeTest#setUp()
+ *
+ * @throws Exception
+ */
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ EditPart lifeline = createNode(UMLElementTypes.Lifeline_3001, getRootEditPart(), new Point(100, 100), null);
+ AbstractExecutionSpecificationEditPart es = (AbstractExecutionSpecificationEditPart)createNode(UMLElementTypes.ActionExecutionSpecification_3006, lifeline, new Point(131, 100), null);
+ Point location = SequenceUtil.getAbsoluteBounds(es).getTop().getCopy();
+ timeObservation = (TimeObservationEditPart)createNode(UMLElementTypes.TimeObservation_3020, getRootEditPart(), location, null);
+ assertNotNull(timeObservation);
+ }
+
+ @Test
+ public void testDisplayStereotypeComment() {
+ //It seems the TimeObservationEditPart can not be selected from diagram, we use the Label EditPart instead.
+ IGraphicalEditPart label = timeObservation.getChildBySemanticHint("" + TimeObservationLabelEditPart.VISUAL_ID);
+ doTestDisplayStereotypeComment(label);
+ }
+
+ @Test
+ public void testDisplayStereotypeInCompartment() {
+ //It seems the TimeObservationEditPart can not be selected from diagram, we use the Label EditPart instead.
+ IGraphicalEditPart label = timeObservation.getChildBySemanticHint("" + TimeObservationLabelEditPart.VISUAL_ID);
+ doTestDisplayStereotypeInCompartment(label, timeObservation.getChildBySemanticHint("" + TimeObservationAppliedStereotypeEditPart.VISUAL_ID));
+ }
+
+ @Test
+ public void testDisplayStereotypeWithBrace() {
+ //It seems the TimeObservationEditPart can not be selected from diagram, we use the Label EditPart instead.
+ IGraphicalEditPart label = timeObservation.getChildBySemanticHint("" + TimeObservationLabelEditPart.VISUAL_ID);
+ doTestDisplayStereotypeWithBrace(label, timeObservation.getChildBySemanticHint("" + TimeObservationAppliedStereotypeEditPart.VISUAL_ID));
+ }
+
+}
diff --git a/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/TimeObservationStereotypesTest.java b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/TimeObservationStereotypesTest.java
new file mode 100644
index 00000000000..bed8b263da4
--- /dev/null
+++ b/tests/junit/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.sequence.tests/src/org/eclipse/papyrus/uml/diagram/sequence/tests/bug/pro20130916/TimeObservationStereotypesTest.java
@@ -0,0 +1,66 @@
+/*****************************************************************************
+ * Copyright (c) 2013 CEA
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Soyatec - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.uml.diagram.sequence.tests.bug.pro20130916;
+
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.TimeObservationAppliedStereotypeEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.TimeObservationEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.TimeObservationLabelEditPart;
+import org.eclipse.papyrus.uml.diagram.sequence.providers.UMLElementTypes;
+import org.junit.Test;
+
+
+/**
+ * @author Jin Liu (jin.liu@soyatec.com)
+ */
+public class TimeObservationStereotypesTest extends BaseStereotypesTest {
+
+ private TimeObservationEditPart timeObservation;
+
+ /**
+ * @see org.eclipse.papyrus.uml.diagram.sequence.tests.bug.m7.AbstractNodeTest#setUp()
+ *
+ * @throws Exception
+ */
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ timeObservation = (TimeObservationEditPart)createNode(UMLElementTypes.TimeObservation_3020, getRootEditPart(), new Point(100, 100), null);
+ assertNotNull(timeObservation);
+ }
+
+ @Test
+ public void testDisplayStereotypeComment() {
+ //It seems the TimeObservationEditPart can not be selected from diagram, we use the Label EditPart instead.
+ IGraphicalEditPart label = timeObservation.getChildBySemanticHint("" + TimeObservationLabelEditPart.VISUAL_ID);
+ doTestDisplayStereotypeComment(label);
+ }
+
+ @Test
+ public void testDisplayStereotypeInCompartment() {
+ //It seems the TimeObservationEditPart can not be selected from diagram, we use the Label EditPart instead.
+ IGraphicalEditPart label = timeObservation.getChildBySemanticHint("" + TimeObservationLabelEditPart.VISUAL_ID);
+ doTestDisplayStereotypeInCompartment(label, timeObservation.getChildBySemanticHint("" + TimeObservationAppliedStereotypeEditPart.VISUAL_ID));
+ }
+
+ @Test
+ public void testDisplayStereotypeWithBrace() {
+ //It seems the TimeObservationEditPart can not be selected from diagram, we use the Label EditPart instead.
+ IGraphicalEditPart label = timeObservation.getChildBySemanticHint("" + TimeObservationLabelEditPart.VISUAL_ID);
+ doTestDisplayStereotypeWithBrace(label, timeObservation.getChildBySemanticHint("" + TimeObservationAppliedStereotypeEditPart.VISUAL_ID));
+ }
+
+}

Back to the top