Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEsteban Dugueperoux2015-12-14 17:16:04 +0000
committerEsteban DUGUEPEROUX2016-01-14 16:28:16 +0000
commit08c0960a445486ed88f545e0d97d482dbd58e778 (patch)
tree2faf1c5d7ddf11c37ca21040e207ddfb693c498b
parent98d6777e2386ac8e3e6fe2789701549d4b615fd2 (diff)
downloadorg.eclipse.sirius-08c0960a445486ed88f545e0d97d482dbd58e778.tar.gz
org.eclipse.sirius-08c0960a445486ed88f545e0d97d482dbd58e778.tar.xz
org.eclipse.sirius-08c0960a445486ed88f545e0d97d482dbd58e778.zip
[481403] Add DialectEditorCloserTest
- Add DialectEditorCloserTest to test DRepresentationContainer addition undo, this DRepresentationContainer owning a DRepresentation with a opened dialect editor on it. On undo or rollback the DialectEditorCloser must close the editor. Bug: 481403 Change-Id: I7656e64f9dee85edf53f6ec025e260f7c7d45c15 Signed-off-by: Esteban Dugueperoux <esteban.dugueperoux@obeo.fr> (cherry picked from commit 3699b3909c9cc6ee34b2cf214c6e1dc37372f098)
-rw-r--r--plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/suite/common/AllCommonPluginTests.java14
-rw-r--r--plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/api/dialect/DialectEditorCloserTest.java121
2 files changed, 129 insertions, 6 deletions
diff --git a/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/suite/common/AllCommonPluginTests.java b/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/suite/common/AllCommonPluginTests.java
index 8f3ed88767..c2758d9d70 100644
--- a/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/suite/common/AllCommonPluginTests.java
+++ b/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/suite/common/AllCommonPluginTests.java
@@ -10,12 +10,6 @@
*******************************************************************************/
package org.eclipse.sirius.tests.suite.common;
-import junit.framework.JUnit4TestAdapter;
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-import junit.textui.TestRunner;
-
import org.eclipse.core.runtime.Platform;
import org.eclipse.emf.ecore.EcorePackage;
import org.eclipse.sirius.ext.jface.viewers.IToolTipProvider;
@@ -24,6 +18,7 @@ import org.eclipse.sirius.tests.unit.api.componentization.DiagramExtensionDescri
import org.eclipse.sirius.tests.unit.api.componentization.MetamodelSpecificationInRepresentationExtensionDescriptionTest;
import org.eclipse.sirius.tests.unit.api.convert.ConvertProjectToModelingProjectTest;
import org.eclipse.sirius.tests.unit.api.convert.ConvertViewpointModelingProjectToSiriusModelingProjectTest;
+import org.eclipse.sirius.tests.unit.api.dialect.DialectEditorCloserTest;
import org.eclipse.sirius.tests.unit.api.dialect.DialectManagerTest;
import org.eclipse.sirius.tests.unit.api.dialect.DialectUIManagerTest;
import org.eclipse.sirius.tests.unit.api.editors.EditorNameAdapterTests;
@@ -141,6 +136,12 @@ import org.eclipse.sirius.tests.unit.diagram.migration.SetVersionTest;
import org.eclipse.sirius.tests.unit.perf.common.CommonPreferencesTest;
import org.eclipse.sirius.tests.unit.perf.common.Session1MillionTests;
+import junit.framework.JUnit4TestAdapter;
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+import junit.textui.TestRunner;
+
public class AllCommonPluginTests extends TestCase {
/**
@@ -231,6 +232,7 @@ public class AllCommonPluginTests extends TestCase {
suite.addTestSuite(DiagramExtensionDescriptionTest.class);
suite.addTestSuite(MetamodelSpecificationInRepresentationExtensionDescriptionTest.class);
suite.addTestSuite(DialectManagerTest.class);
+ suite.addTestSuite(DialectEditorCloserTest.class);
suite.addTestSuite(DialectUIManagerTest.class);
suite.addTestSuite(FindTest.class);
suite.addTestSuite(EdgeRoutingStyleTests.class);
diff --git a/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/api/dialect/DialectEditorCloserTest.java b/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/api/dialect/DialectEditorCloserTest.java
new file mode 100644
index 0000000000..a93a50e25b
--- /dev/null
+++ b/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/api/dialect/DialectEditorCloserTest.java
@@ -0,0 +1,121 @@
+/*******************************************************************************
+ * Copyright (c) 2016 THALES GLOBAL SERVICES and others.
+ * 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.dialect;
+
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.command.CommandStack;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EcoreFactory;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.edit.command.AddCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.sirius.business.api.componentization.ViewpointRegistry;
+import org.eclipse.sirius.business.api.query.AirDResouceQuery;
+import org.eclipse.sirius.business.api.session.DefaultLocalSessionCreationOperation;
+import org.eclipse.sirius.business.api.session.SessionCreationOperation;
+import org.eclipse.sirius.business.api.session.resource.AirdResource;
+import org.eclipse.sirius.tests.support.api.DummyDialectEditorDialogFactory;
+import org.eclipse.sirius.tests.support.api.SiriusTestCase;
+import org.eclipse.sirius.tests.support.api.TestsUtil;
+import org.eclipse.sirius.tools.api.command.ICommandFactory;
+import org.eclipse.sirius.tools.api.command.semantic.AddSemanticResourceCommand;
+import org.eclipse.sirius.tree.DTree;
+import org.eclipse.sirius.tree.TreeFactory;
+import org.eclipse.sirius.ui.business.api.dialect.DialectEditor;
+import org.eclipse.sirius.ui.business.api.dialect.DialectUIManager;
+import org.eclipse.sirius.ui.business.api.preferences.SiriusUIPreferencesKeys;
+import org.eclipse.sirius.viewpoint.DAnalysis;
+import org.eclipse.sirius.viewpoint.DRepresentationContainer;
+import org.eclipse.sirius.viewpoint.ViewpointFactory;
+import org.eclipse.sirius.viewpoint.ViewpointPackage;
+import org.eclipse.sirius.viewpoint.description.Viewpoint;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorReference;
+import org.eclipse.ui.PlatformUI;
+
+/**
+ * Test case for Bug 481403.
+ *
+ * @author <a href="mailto:esteban.dugueperoux@obeo.fr">Esteban Dugueperoux</a>
+ */
+public class DialectEditorCloserTest extends SiriusTestCase {
+
+ private CommandStack commandStack;
+
+ private EObject target;
+
+ private TransactionalEditingDomain domain;
+
+ @Override
+ protected ICommandFactory getCommandFactory() {
+ return null;
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ changeSiriusUIPreference(SiriusUIPreferencesKeys.PREF_REFRESH_ON_REPRESENTATION_OPENING.name(), false);
+ URI semanticResourceURI = URI.createPlatformResourceURI(TEMPORARY_PROJECT_NAME + "/test.ecore", true);
+ Resource ecoreResource = new ResourceSetImpl().createResource(semanticResourceURI);
+ ecoreResource.getContents().add(EcoreFactory.eINSTANCE.createEPackage());
+ ecoreResource.save(null);
+ URI sessionResourceURI = URI.createPlatformResourceURI(TEMPORARY_PROJECT_NAME + "/test.aird", true);
+ SessionCreationOperation sessionCreationOperation = new DefaultLocalSessionCreationOperation(sessionResourceURI, new NullProgressMonitor());
+ sessionCreationOperation.execute();
+ session = sessionCreationOperation.getCreatedSession();
+ domain = session.getTransactionalEditingDomain();
+ commandStack = domain.getCommandStack();
+ Command addSemanticResourceCmd = new AddSemanticResourceCommand(session, semanticResourceURI, new NullProgressMonitor());
+ commandStack.execute(addSemanticResourceCmd);
+ target = session.getSemanticResources().iterator().next().getContents().get(0);
+ }
+
+ public void testDialectEditorCloserOnDRepresentationContainerAdditionUndo() {
+ DAnalysis dAnalysis = new AirDResouceQuery((AirdResource) session.getSessionResource()).getDAnalysis().get();
+ URI designViewpointURI = URI.createURI("viewpoint:/org.eclipse.sirius.sample.ecore.design/Design");
+ Viewpoint viewpoint = ViewpointRegistry.getInstance().getViewpoint(designViewpointURI);
+ viewpoint = (Viewpoint) domain.getResourceSet().getEObject(EcoreUtil.getURI(viewpoint), true);
+
+ DRepresentationContainer dRepresentationContainer = ViewpointFactory.eINSTANCE.createDRepresentationContainer();
+ DTree dTree = TreeFactory.eINSTANCE.createDTree();
+ dTree.setTarget(target);
+ dRepresentationContainer.getOwnedRepresentations().add(dTree);
+ dRepresentationContainer.setViewpoint(viewpoint);
+ Command cmd = AddCommand.create(domain, dAnalysis, ViewpointPackage.Literals.DANALYSIS__OWNED_VIEWS, dRepresentationContainer);
+ commandStack.execute(cmd);
+
+ IEditorPart openedEditor = DialectUIManager.INSTANCE.openEditor(session, dTree, new NullProgressMonitor());
+ assertTrue(openedEditor instanceof DialectEditor);
+ DialectEditor dialectEditor = (DialectEditor) openedEditor;
+ dialectEditor.setDialogFactory(new DummyDialectEditorDialogFactory());
+ TestsUtil.synchronizationWithUIThread();
+
+ commandStack.undo();
+ TestsUtil.synchronizationWithUIThread();
+
+ IEditorReference[] editorReferences = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getEditorReferences();
+ assertEquals("The dialect editor should be closed by DialectEditorCloser since DRepresentation addition has been undone", 0, editorReferences.length);
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ domain = null;
+ target = null;
+ commandStack = null;
+ session.close(new NullProgressMonitor());
+ session = null;
+ super.tearDown();
+ }
+}

Back to the top