Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMaxime Porhel2016-06-09 15:21:42 +0000
committerMaxime Porhel2016-06-16 06:39:42 +0000
commit4da0de7cbe2fa8d815adb5a5a99e9d0ac0aaa06d (patch)
treed8145bb63bd65fd1f9b0a0df7df3a62bc0253ff8
parentcbf43c448dc935c76665417d691de391e330d733 (diff)
downloadorg.eclipse.sirius-4da0de7cbe2fa8d815adb5a5a99e9d0ac0aaa06d.tar.gz
org.eclipse.sirius-4da0de7cbe2fa8d815adb5a5a99e9d0ac0aaa06d.tar.xz
org.eclipse.sirius-4da0de7cbe2fa8d815adb5a5a99e9d0ac0aaa06d.zip
[495811] Test to show the unset issues on mapping import elements
Also add the test to the test suite, this will make the tests suite fail until the problems are corrected. Bug: 495811 Change-Id: Ia48868318f7bf65e9990b7a385c38ef038ccef45 Signed-off-by: Maxime Porhel <maxime.porhel@obeo.fr>
-rw-r--r--plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/suite/diagram/AllDiagramStandaloneTests.java14
-rw-r--r--plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/api/mappings/ImportSpecClassesUnsetTests.java143
2 files changed, 151 insertions, 6 deletions
diff --git a/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/suite/diagram/AllDiagramStandaloneTests.java b/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/suite/diagram/AllDiagramStandaloneTests.java
index 4b2a06793c..77723fb851 100644
--- a/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/suite/diagram/AllDiagramStandaloneTests.java
+++ b/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/suite/diagram/AllDiagramStandaloneTests.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010, 2014 THALES GLOBAL SERVICES.
+ * Copyright (c) 2010, 2016 THALES GLOBAL SERVICES.
* 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
@@ -10,12 +10,8 @@
*******************************************************************************/
package org.eclipse.sirius.tests.suite.diagram;
-import junit.framework.JUnit4TestAdapter;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import junit.textui.TestRunner;
-
import org.eclipse.sirius.tests.suite.diagram.sequence.AllSequenceDiagramsStandaloneTests;
+import org.eclipse.sirius.tests.unit.api.mappings.ImportSpecClassesUnsetTests;
import org.eclipse.sirius.tests.unit.common.mock.OpaquePixelFinderTest;
import org.eclipse.sirius.tests.unit.diagram.DDiagramDAnnotationTest;
import org.eclipse.sirius.tests.unit.diagram.layers.EdgeMappingImportTests;
@@ -40,6 +36,11 @@ import org.eclipse.sirius.tests.unit.diagram.views.session.ResourceItemTest;
import org.eclipse.sirius.tests.unit.diagram.views.session.ViewpointItemTest;
import org.eclipse.sirius.tests.unit.diagram.views.session.ViewpointsFolderItemTest;
+import junit.framework.JUnit4TestAdapter;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import junit.textui.TestRunner;
+
public class AllDiagramStandaloneTests {
/**
@@ -61,6 +62,7 @@ public class AllDiagramStandaloneTests {
final TestSuite suite = new TestSuite("Diagram Standalone Tests");
suite.addTestSuite(EdgeMappingImportTests.class);
+ suite.addTestSuite(ImportSpecClassesUnsetTests.class);
suite.addTestSuite(DEdgeCandidateTest.class);
suite.addTestSuite(AbstractDNodeCandidateTest.class);
suite.addTestSuite(RefreshIdsHolderTest.class);
diff --git a/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/api/mappings/ImportSpecClassesUnsetTests.java b/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/api/mappings/ImportSpecClassesUnsetTests.java
new file mode 100644
index 0000000000..b703476cba
--- /dev/null
+++ b/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/api/mappings/ImportSpecClassesUnsetTests.java
@@ -0,0 +1,143 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.sirius.tests.unit.api.mappings;
+
+import java.util.Collection;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.sirius.common.tools.api.util.StringUtil;
+import org.eclipse.sirius.diagram.business.internal.metamodel.description.spec.ContainerMappingImportSpec;
+import org.eclipse.sirius.diagram.business.internal.metamodel.description.spec.ContainerMappingSpec;
+import org.eclipse.sirius.diagram.business.internal.metamodel.description.spec.DiagramDescriptionSpec;
+import org.eclipse.sirius.diagram.business.internal.metamodel.description.spec.DiagramImportDescriptionSpec;
+import org.eclipse.sirius.diagram.business.internal.metamodel.description.spec.NodeMappingImportSpec;
+import org.eclipse.sirius.diagram.business.internal.metamodel.description.spec.NodeMappingSpec;
+import org.eclipse.sirius.diagram.description.ContainerMapping;
+import org.eclipse.sirius.diagram.description.ContainerMappingImport;
+import org.eclipse.sirius.diagram.description.DescriptionFactory;
+import org.eclipse.sirius.diagram.description.DiagramDescription;
+import org.eclipse.sirius.diagram.description.DiagramImportDescription;
+import org.eclipse.sirius.diagram.description.NodeMapping;
+import org.eclipse.sirius.diagram.description.NodeMappingImport;
+import org.eclipse.sirius.diagram.description.impl.ContainerMappingImpl;
+import org.eclipse.sirius.diagram.description.impl.ContainerMappingImportImpl;
+import org.eclipse.sirius.diagram.description.impl.DiagramDescriptionImpl;
+import org.eclipse.sirius.diagram.description.impl.DiagramImportDescriptionImpl;
+import org.eclipse.sirius.diagram.description.impl.NodeMappingImpl;
+import org.eclipse.sirius.diagram.description.impl.NodeMappingImportImpl;
+import org.eclipse.sirius.viewpoint.description.IdentifiedElement;
+
+import com.google.common.collect.Lists;
+
+import junit.framework.TestCase;
+
+/**
+ * Tests for reuse mappings usage with filters
+ *
+ * @author mporhel
+ */
+public class ImportSpecClassesUnsetTests extends TestCase {
+
+ public void testContainerMappingImportSpecUnset() {
+
+ ContainerMappingImport cmi = DescriptionFactory.eINSTANCE.createContainerMappingImport();
+
+ assertTrue(cmi instanceof ContainerMappingImportSpec);
+ assertFalse(cmi instanceof ContainerMappingImportImpl);
+
+ assertTrue(cmi instanceof ContainerMappingSpec);
+ assertTrue(cmi instanceof ContainerMappingImpl);
+ assertTrue(cmi instanceof ContainerMapping);
+
+ checkFeaturesUnset(cmi);
+ }
+
+ public void testNodeMappingImportSpecUnset() {
+ NodeMappingImport nmi = DescriptionFactory.eINSTANCE.createNodeMappingImport();
+
+ assertTrue(nmi instanceof NodeMappingImportSpec);
+ assertFalse(nmi instanceof NodeMappingImportImpl);
+
+ assertTrue(nmi instanceof NodeMappingSpec);
+ assertTrue(nmi instanceof NodeMappingImpl);
+ assertTrue(nmi instanceof NodeMapping);
+
+ checkFeaturesUnset(nmi);
+ }
+
+ public void testDiagramImportDescriptionSpecUnset() {
+ DiagramImportDescription did = DescriptionFactory.eINSTANCE.createDiagramImportDescription();
+
+ assertTrue(did instanceof DiagramImportDescriptionSpec);
+ assertFalse(did instanceof DiagramImportDescriptionImpl);
+
+ assertTrue(did instanceof DiagramDescriptionSpec);
+ assertTrue(did instanceof DiagramDescriptionImpl);
+ assertTrue(did instanceof DiagramDescription);
+
+ checkFeaturesUnset(did);
+ }
+
+ private void checkFeaturesUnset(IdentifiedElement object) {
+ // TODO uncomment this and remove buildMessage() when corrected.
+ Collection<EStructuralFeature> exceptions = Lists.newArrayList();
+ Collection<EStructuralFeature> stackOverFlows = Lists.newArrayList();
+
+ for (EStructuralFeature f : object.eClass().getEAllStructuralFeatures()) {
+ if (f.isChangeable()) {
+ try {
+ object.eUnset(f);
+ } catch (Exception e) {
+ exceptions.add(f);
+ e.printStackTrace();
+
+ // TODO uncomment this and remove buildMessage() when
+ // corrected.
+ // fail("Error occurred while unsetting feature " +
+ // f.getName() + " on " + object + ": " + e.getMessage());
+ } catch (StackOverflowError s) {
+ stackOverFlows.add(f);
+
+ // TODO uncomment this and remove buildMessage() when
+ // corrected.
+ // fail("StackOverflowError occurred while unsetting feature
+ // " + f.getName() + " on " + object);
+ }
+ }
+ }
+
+ // TODO Remove this and buildMessage() when corrected.
+ StringBuilder sb = new StringBuilder();
+ buildMessage(sb, "Error(s) occurred on ", object, exceptions);
+ buildMessage(sb, "StackOverFlow(s) occurred on ", object, stackOverFlows);
+ if (sb.length() != 0) {
+ fail(sb.toString());
+ }
+ }
+
+ private void buildMessage(StringBuilder sb, String message, IdentifiedElement object, Collection<EStructuralFeature> failures) {
+ if (!failures.isEmpty()) {
+ sb.append("\n").append(message).append(object.eClass().getName());
+ if (StringUtil.isEmpty(object.getName())) {
+ sb.append(" ").append(object.getName());
+ }
+ sb.append(" while unsetting ");
+ if (failures.size() == 1) {
+ sb.append(failures.iterator().next().getName());
+ } else {
+ sb.append("\n");
+ for (EStructuralFeature f : failures) {
+ sb.append(" . ").append(f.getName()).append(", ").append("\n");
+ }
+ }
+ }
+ }
+}

Back to the top