diff options
| author | Esteban Dugueperoux | 2015-12-14 17:16:04 +0000 |
|---|---|---|
| committer | Esteban DUGUEPEROUX | 2016-01-14 15:24:36 +0000 |
| commit | 3699b3909c9cc6ee34b2cf214c6e1dc37372f098 (patch) | |
| tree | 9eba506bf5779901cede44be92b33575e5213853 | |
| parent | 638d0233d6c3b8013a46434c682518251ca9a671 (diff) | |
| download | org.eclipse.sirius-3699b3909c9cc6ee34b2cf214c6e1dc37372f098.tar.gz org.eclipse.sirius-3699b3909c9cc6ee34b2cf214c6e1dc37372f098.tar.xz org.eclipse.sirius-3699b3909c9cc6ee34b2cf214c6e1dc37372f098.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>
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(); + } +} |
