/******************************************************************************* * <copyright> * * Copyright (c) 2005, 2011 SAP AG. * 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: * SAP AG - initial API, implementation and documentation * * </copyright> * *******************************************************************************/ package org.eclipse.graphiti.ui.tests; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.net.URL; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.ecore.resource.ResourceSet; import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl; import org.eclipse.emf.transaction.RecordingCommand; import org.eclipse.emf.transaction.TransactionalEditingDomain; import org.eclipse.graphiti.mm.algorithms.AlgorithmsPackage; import org.eclipse.graphiti.mm.algorithms.styles.Font; import org.eclipse.graphiti.mm.algorithms.styles.StylesPackage; import org.eclipse.graphiti.mm.pictograms.Diagram; import org.eclipse.graphiti.mm.pictograms.PictogramsPackage; import org.eclipse.graphiti.services.Graphiti; import org.eclipse.graphiti.tests.reuse.GFAbstractTestCase; import org.eclipse.graphiti.ui.services.GraphitiUi; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; /** * Tests migration services. */ public class MigrationServiceTest extends GFAbstractTestCase { private static TransactionalEditingDomain editingDomain; @BeforeClass public static void before() { editingDomain = GraphitiUi.getEmfService().createResourceSetAndEditingDomain(); ResourceSet resourceSet = editingDomain.getResourceSet(); resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("diagram", new XMIResourceFactoryImpl()); //$NON-NLS-1$ // Register the packages of our model with EMF. { @SuppressWarnings("unused") Object o = PictogramsPackage.eINSTANCE; o = AlgorithmsPackage.eINSTANCE; o = StylesPackage.eINSTANCE; } } @AfterClass public static void after() { editingDomain.dispose(); } /** * The diagram file contains two identical fonts for two Abstract Texts. * These fonts should be aggregated at the diagram level, resulting in only * one font. */ @Test public void testMig070To080() { // Load diagram file. URL resource = getClass().getClassLoader().getResource("org/eclipse/graphiti/ui/tests/testUtil.diagram"); //$NON-NLS-1$ URI createFileURI = URI.createFileURI(resource.getFile()); ResourceSet resourceSet = editingDomain.getResourceSet(); Resource diagramResource = resourceSet.getResource(createFileURI, true); final Diagram diagram = (Diagram) diagramResource.getEObject("/0"); //$NON-NLS-1$ assertTrue(diagram.getFonts().isEmpty()); assertTrue(Graphiti.getMigrationService().shouldMigrate070To080(diagram)); editingDomain.getCommandStack().execute(new RecordingCommand(editingDomain) { @Override protected void doExecute() { Graphiti.getMigrationService().migrate070To080(diagram); } }); EList<Font> fonts = diagram.getFonts(); assertTrue(fonts.size() == 1); assertFalse(Graphiti.getMigrationService().shouldMigrate070To080(diagram)); } /** * The diagram file contains two styles with identical fonts. These fonts * should be aggregated at the diagram level, resulting in only one font. */ @Test public void testMig070To0802() { // Load diagram file. URL resource = getClass().getClassLoader().getResource("org/eclipse/graphiti/ui/tests/tut.diagram"); //$NON-NLS-1$ URI createFileURI = URI.createFileURI(resource.getFile()); ResourceSet resourceSet = editingDomain.getResourceSet(); Resource diagramResource = resourceSet.getResource(createFileURI, true); final Diagram diagram = (Diagram) diagramResource.getEObject("/0"); //$NON-NLS-1$ assertTrue(diagram.getFonts().isEmpty()); assertTrue(Graphiti.getMigrationService().shouldMigrate070To080(diagram)); editingDomain.getCommandStack().execute(new RecordingCommand(editingDomain) { @Override protected void doExecute() { Graphiti.getMigrationService().migrate070To080(diagram); } }); EList<Font> fonts = diagram.getFonts(); assertTrue(fonts.size() == 1); assertFalse(Graphiti.getMigrationService().shouldMigrate070To080(diagram)); } }