blob: 58311f8565e43cdcf8732e4ced6aff8c99b92df6 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010, 2014 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
* 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.List;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
import org.eclipse.gmf.runtime.diagram.ui.parts.DiagramEditor;
import org.eclipse.sirius.diagram.DDiagram;
import org.eclipse.sirius.diagram.DDiagramElement;
import org.eclipse.sirius.tests.support.api.SiriusDiagramTestCase;
import org.eclipse.sirius.tests.support.api.TestsUtil;
import org.eclipse.sirius.ui.business.api.dialect.DialectUIManager;
import org.eclipse.sirius.ui.business.api.preferences.SiriusUIPreferencesKeys;
import org.eclipse.sirius.ui.tools.api.color.VisualBindingManager;
import org.eclipse.swt.graphics.Color;
import org.eclipse.sirius.tests.SiriusTestsPlugin;
import org.eclipse.sirius.tests.unit.api.refresh.ColorFactory;
/**
* Tests for container imported mapping
*
* @author nlepine
*/
public class ContainerMappingImportTests extends SiriusDiagramTestCase {
private String TEST_SEMANTIC_MODEL_PATH = "/" + SiriusTestsPlugin.PLUGIN_ID + "/data/unit/mappings/VP-748/748.ecore";
private String MODELER_PATH1 = "/" + SiriusTestsPlugin.PLUGIN_ID + "/data/unit/mappings/VP-748/748-11.odesign";
private String MODELER_PATH2 = "/" + SiriusTestsPlugin.PLUGIN_ID + "/data/unit/mappings/VP-748/748-12.odesign";
private String MODELER_PATH3 = "/" + SiriusTestsPlugin.PLUGIN_ID + "/data/unit/mappings/VP-748/748-13.odesign";
private String MODELER_PATH4 = "/" + SiriusTestsPlugin.PLUGIN_ID + "/data/unit/mappings/VP-748/748-14.odesign";
private String MODELER_PATH5 = "/" + SiriusTestsPlugin.PLUGIN_ID + "/data/unit/mappings/VP-748/748-15.odesign";
private String MODELER_PATH6 = "/" + SiriusTestsPlugin.PLUGIN_ID + "/data/unit/mappings/VP-748/748-16.odesign";
private String DEFAULT_VIEWPOINT_NAME = "VP-748";
private static final String NO_I_GRAPHICAL_EDIT_PART_FOUND_WITH_THE_LABEL = "No IGraphicalEditPart found with the label : ";
private DDiagram diagram;
private DiagramEditor editor;
private VisualBindingManager colorManager;
private ColorFactory colorFactory;
@Override
protected void setUp() throws Exception {
super.setUp();
changeSiriusUIPreference(SiriusUIPreferencesKeys.PREF_RELOAD_ON_LAST_EDITOR_CLOSE.name(), false);
changeSiriusUIPreference(SiriusUIPreferencesKeys.PREF_SAVE_WHEN_NO_EDITOR.name(), false);
colorManager = new VisualBindingManager();
colorManager.init(10, 10);
colorFactory = new ColorFactory(colorManager);
}
/**
* Test the color of the containers mappings. Mapping order: Datatype Class
* Enum
*
* @throws Exception
*/
public void testImportedContainerMapping1() throws Exception {
genericSetUp(TEST_SEMANTIC_MODEL_PATH, MODELER_PATH1);
initViewpoint(DEFAULT_VIEWPOINT_NAME);
checkImportedContainerMapping();
}
/**
* Test the color of the containers mappings. Mapping order: Datatype Enum
* Class
*
* @throws Exception
*/
public void testImportedContainerMapping2() throws Exception {
genericSetUp(TEST_SEMANTIC_MODEL_PATH, MODELER_PATH2);
initViewpoint(DEFAULT_VIEWPOINT_NAME);
checkImportedContainerMapping();
}
/**
* Test the color of the containers mappings. Mapping order: Class Datatype
* Enum
*
* @throws Exception
*/
public void testImportedContainerMapping3() throws Exception {
genericSetUp(TEST_SEMANTIC_MODEL_PATH, MODELER_PATH3);
initViewpoint(DEFAULT_VIEWPOINT_NAME);
checkImportedContainerMapping();
}
/**
* Test the color of the containers mappings. Mapping order: Class Enum
* Datatype
*
* @throws Exception
*/
public void testImportedContainerMapping4() throws Exception {
genericSetUp(TEST_SEMANTIC_MODEL_PATH, MODELER_PATH4);
initViewpoint(DEFAULT_VIEWPOINT_NAME);
checkImportedContainerMapping();
}
/**
* Test the color of the containers mappings. Mapping order: Enum Class
* Datatype
*
* @throws Exception
*/
public void testImportedContainerMapping5() throws Exception {
genericSetUp(TEST_SEMANTIC_MODEL_PATH, MODELER_PATH5);
initViewpoint(DEFAULT_VIEWPOINT_NAME);
checkImportedContainerMapping();
}
/**
* Test the color of the containers mappings. Mapping order: Enum Datatype
* Class
*
* @throws Exception
*/
public void testImportedContainerMapping6() throws Exception {
genericSetUp(TEST_SEMANTIC_MODEL_PATH, MODELER_PATH6);
initViewpoint(DEFAULT_VIEWPOINT_NAME);
checkImportedContainerMapping();
}
/**
* Check the color of the imported container mappings
*/
private void checkImportedContainerMapping() {
diagram = (DDiagram) createRepresentation(DEFAULT_VIEWPOINT_NAME, semanticModel);
assertNotNull(diagram);
editor = (DiagramEditor) DialectUIManager.INSTANCE.openEditor(session, diagram, new NullProgressMonitor());
TestsUtil.synchronizationWithUIThread();
assertNotNull(editor);
// A Class
List<DDiagramElement> class1 = getDiagramElementsFromLabel(diagram, "A");
assertFalse("No diagram element found with the label : " + "A", class1.isEmpty());
DDiagramElement diagramElementClass1 = class1.get(0);
IGraphicalEditPart class1EP = getEditPart(diagramElementClass1);
assertNotNull(NO_I_GRAPHICAL_EDIT_PART_FOUND_WITH_THE_LABEL + "A", class1EP);
checkColor(class1EP, colorFactory.green());
// B Datatype
class1 = getDiagramElementsFromLabel(diagram, "B");
assertFalse("No diagram element found with the label : " + "B", class1.isEmpty());
diagramElementClass1 = class1.get(0);
class1EP = getEditPart(diagramElementClass1);
assertNotNull(NO_I_GRAPHICAL_EDIT_PART_FOUND_WITH_THE_LABEL + "B", class1EP);
checkColor(class1EP, colorFactory.orange());
// C enum
class1 = getDiagramElementsFromLabel(diagram, "C");
assertFalse("No diagram element found with the label : " + "C", class1.isEmpty());
diagramElementClass1 = class1.get(0);
class1EP = getEditPart(diagramElementClass1);
assertNotNull(NO_I_GRAPHICAL_EDIT_PART_FOUND_WITH_THE_LABEL + "C", class1EP);
checkColor(class1EP, colorFactory.purple());
// create a class, enum and datatype with creation tool
// Class
assertTrue(applyNodeCreationTool("Class", diagram, diagram));
class1 = getDiagramElementsFromLabel(diagram, "class");
assertFalse("No diagram element found with the label : " + "class", class1.isEmpty());
diagramElementClass1 = class1.get(0);
class1EP = getEditPart(diagramElementClass1);
assertNotNull(NO_I_GRAPHICAL_EDIT_PART_FOUND_WITH_THE_LABEL + "class", class1EP);
checkColor(class1EP, colorFactory.green());
// Datatype
assertTrue(applyNodeCreationTool("DataType", diagram, diagram));
class1 = getDiagramElementsFromLabel(diagram, "datatype");
assertFalse("No diagram element found with the label : " + "datatype", class1.isEmpty());
diagramElementClass1 = class1.get(0);
class1EP = getEditPart(diagramElementClass1);
assertNotNull(NO_I_GRAPHICAL_EDIT_PART_FOUND_WITH_THE_LABEL + "datatype", class1EP);
checkColor(class1EP, colorFactory.orange());
// Enum
assertTrue(applyNodeCreationTool("Enum", diagram, diagram));
class1 = getDiagramElementsFromLabel(diagram, "enum");
assertFalse("No diagram element found with the label : " + "enum", class1.isEmpty());
diagramElementClass1 = class1.get(0);
class1EP = getEditPart(diagramElementClass1);
assertNotNull(NO_I_GRAPHICAL_EDIT_PART_FOUND_WITH_THE_LABEL + "enum", class1EP);
checkColor(class1EP, colorFactory.purple());
DialectUIManager.INSTANCE.closeEditor(editor, false);
TestsUtil.synchronizationWithUIThread();
}
/**
* Check if the color of the label edit part is the same as color
*
* @param editPart
* @param color
*/
private void checkColor(IGraphicalEditPart editPart, Color color) {
assertEquals("Wrong color for the figure ", editPart.getFigure().getBackgroundColor(), color);
}
}