diff options
Diffstat (limited to 'plugins/cdo/tests/org.eclipse.papyrus.cdo.uml.ui.tests/src/org/eclipse/papyrus/cdo/uml/internal/ui/importsources/tests/CDOPackageImportSourceTest.java')
-rwxr-xr-x | plugins/cdo/tests/org.eclipse.papyrus.cdo.uml.ui.tests/src/org/eclipse/papyrus/cdo/uml/internal/ui/importsources/tests/CDOPackageImportSourceTest.java | 183 |
1 files changed, 183 insertions, 0 deletions
diff --git a/plugins/cdo/tests/org.eclipse.papyrus.cdo.uml.ui.tests/src/org/eclipse/papyrus/cdo/uml/internal/ui/importsources/tests/CDOPackageImportSourceTest.java b/plugins/cdo/tests/org.eclipse.papyrus.cdo.uml.ui.tests/src/org/eclipse/papyrus/cdo/uml/internal/ui/importsources/tests/CDOPackageImportSourceTest.java new file mode 100755 index 00000000..0c321ff0 --- /dev/null +++ b/plugins/cdo/tests/org.eclipse.papyrus.cdo.uml.ui.tests/src/org/eclipse/papyrus/cdo/uml/internal/ui/importsources/tests/CDOPackageImportSourceTest.java @@ -0,0 +1,183 @@ +/***************************************************************************** + * Copyright (c) 2013, 2017 CEA LIST 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: + * CEA LIST - Initial API and implementation + * Eike Stepper (CEA) - bug 466520 + *****************************************************************************/ +package org.eclipse.papyrus.cdo.uml.internal.ui.importsources.tests; + +import static java.util.Collections.singleton; +import static org.hamcrest.CoreMatchers.containsString; +import static org.hamcrest.CoreMatchers.hasItem; +import static org.hamcrest.CoreMatchers.instanceOf; +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.CoreMatchers.notNullValue; +import static org.hamcrest.CoreMatchers.sameInstance; +import static org.junit.Assert.assertThat; +import static org.junit.Assert.fail; + +import java.util.Arrays; +import java.util.List; +import java.util.concurrent.TimeUnit; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.emf.cdo.eresource.CDOResource; +import org.eclipse.emf.cdo.eresource.CDOResourceFolder; +import org.eclipse.emf.ecore.util.EcoreUtil; +import org.eclipse.jface.viewers.ILabelProvider; +import org.eclipse.jface.viewers.ITreeContentProvider; +import org.eclipse.papyrus.cdo.internal.ui.views.DIModel; +import org.eclipse.papyrus.cdo.internal.ui.views.DIResourceQuery; +import org.eclipse.papyrus.cdo.ui.tests.AbstractPapyrusCDOUITest; +import org.eclipse.papyrus.cdo.uml.internal.ui.importsources.CDOPackageImportSource; +import org.eclipse.papyrus.infra.core.resource.AbstractBaseModel; +import org.eclipse.papyrus.infra.core.resource.ModelSet; +import org.eclipse.papyrus.infra.core.resource.sasheditor.SashModel; +import org.eclipse.papyrus.infra.core.sashwindows.di.DiPackage; +import org.eclipse.papyrus.infra.core.sashwindows.di.SashWindowsMngr; +import org.eclipse.papyrus.infra.widgets.providers.IStaticContentProvider; +import org.eclipse.uml2.uml.Model; +import org.eclipse.uml2.uml.Package; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + + +/** + * This is the CDOPackageImportSourceTest type. Enjoy. + */ +public class CDOPackageImportSourceTest extends AbstractPapyrusCDOUITest { + + private TestFixture fixture; + + private Model model; + + private SashWindowsMngr diModel; + + @Test + public void testCanImportInto() { + assertThat(fixture.canImportInto(singleton(model)), is(true)); + assertThat(fixture.canImportInto(singleton(model.getOwnedTypes().get(0))), is(false)); + } + + @Test + public void testCreateModelHierarchyLabelProvider() { + ILabelProvider provider = fixture.getModelHierarchyLabelProvider(); + + assertThat(provider, notNullValue()); + + DIModel model = getDIModel(); + + assertThat(provider.getText(model), containsString("model")); + assertThat(provider.getImage(model), notNullValue()); + } + + @Test + public void testCreateModelHierarchyContentProvider() throws InterruptedException { + IStaticContentProvider provider = fixture.getModelHierarchyContentProvider(null); + + assertThat(provider, instanceOf(ITreeContentProvider.class)); + + DIModel model = getDIModel(); + CDOResourceFolder folder = model.getResource().getFolder(); + + ITreeContentProvider treeContent = (ITreeContentProvider) provider; + + // trigger the asynchronous DIResourceQuery and wait for it to finish + treeContent.getChildren(getInternalCheckout()); + DIResourceQuery.waitFor(getInternalCheckout().getView(), 10, TimeUnit.SECONDS); + + Object[] children = treeContent.getChildren(folder); + assertThat(Arrays.asList(children), hasItem((Object) model)); + assertThat(treeContent.getParent(model), sameInstance((Object) model.getResource().getFolder())); + assertThat(treeContent.hasChildren(model.getResource().getFolder()), is(true)); + } + + @Test + public void testGetPackages() throws Exception { + DIModel diModel = getDIModel(); + + List<Package> packages = fixture.getPackages(diModel.getResource().getResourceSet(), diModel); + + // get the copy of our model in the master view + Package modelInMasterView = getMasterViewObject(model); + assertThat(packages, hasItem(modelInMasterView)); + } + + @Test + public void testValidateSelection() { + DIModel diModel = getDIModel(); + + try { + fixture.validateSelection(diModel); + } catch (CoreException e) { + e.printStackTrace(); + fail("Should not have thrown validation exception: " + e.getLocalizedMessage()); + } + + try { + fixture.validateSelection(diModel.getResource().getFolder()); + fail("Should have thrown validation exception."); + } catch (CoreException e) { + // test passes + } + } + + @Test + public void testGetCDOResource() { + DIModel diModel = getDIModel(); + + assertThat(fixture.getCDOResource(diModel), sameInstance(diModel.getResource())); + } + + // + // Test framework + // + + @Before + public void createTestFixture() throws Exception { + openEditor(); + model = (Model) getUMLModel(); + + fixture = new TestFixture(); + fixture.initialize(singleton(model)); + + ModelSet modelSet = (ModelSet) model.eResource().getResourceSet(); + diModel = (SashWindowsMngr) EcoreUtil.getObjectByType(((AbstractBaseModel) modelSet.getModel(SashModel.MODEL_ID)).getResource().getContents(), DiPackage.Literals.SASH_WINDOWS_MNGR); + } + + @After + public void disposeTestFixture() { + fixture.dispose(); + } + + protected DIModel getDIModel() { + // get the resource in the read-only view that corresponds to our DI model + CDOResource resource = getMasterViewObject((CDOResource) diModel.eResource()); + + return DIModel.getInstance(resource, true); + } + + static class TestFixture extends CDOPackageImportSource { + + TestFixture() { + super(); + } + + @Override + protected CDOResource getCDOResource(Object model) { + return super.getCDOResource(model); + } + + @Override + protected void validateSelection(Object model) throws CoreException { + super.validateSelection(model); + } + } +} |