/****************************************************************************** * Copyright (c) 2005, 2013 IBM Corporation 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: * IBM Corporation - initial API and implementation ****************************************************************************/ package org.eclipse.gmf.tests.runtime.diagram.ui.logic; import junit.framework.Test; import junit.framework.TestSuite; import org.eclipse.draw2d.geometry.Point; import org.eclipse.draw2d.geometry.Rectangle; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.xmi.XMLResource; import org.eclipse.gef.ConnectionEditPart; import org.eclipse.gmf.examples.runtime.diagram.logic.internal.editparts.LEDEditPart; import org.eclipse.gmf.examples.runtime.diagram.logic.internal.editparts.TerminalEditPart; import org.eclipse.gmf.examples.runtime.diagram.logic.semantic.LED; import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand; import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil; import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeEditPart; import org.eclipse.gmf.runtime.diagram.ui.parts.IDiagramGraphicalViewer; import org.eclipse.gmf.runtime.emf.type.core.ElementTypeRegistry; import org.eclipse.gmf.runtime.emf.type.core.IElementType; import org.eclipse.gmf.runtime.notation.View; import org.eclipse.gmf.tests.runtime.diagram.ui.AbstractTestBase; import org.eclipse.gmf.tests.runtime.diagram.ui.util.ITestCommandCallback; /** * Tests the * {@link org.eclipse.gmf.runtime.diagram.ui.parts.DiagramGraphicalViewer} * class. * * @author cmahoney */ public class DiagramGraphicalViewerTests extends AbstractTestBase { public static Test suite() { TestSuite s = new TestSuite(DiagramGraphicalViewerTests.class); return s; } public DiagramGraphicalViewerTests() { super("Diagram Graphical Viewer Test Suite");//$NON-NLS-1$ } protected void setTestFixture() { testFixture = new LogicTestFixture(); } /** Returns the logic test fixture */ protected LogicTestFixture getLogicTestFixture() { return (LogicTestFixture) getTestFixture(); } /** * Tests the ID to EditPart registry in the * <code>DiagramGraphicalViewer</code>. * * @throws Exception */ public void testIDToEditPartRegistry() throws Exception { final LogicTestFixture fixture = getLogicTestFixture(); fixture.openDiagram(); Rectangle rect = new Rectangle(getDiagramEditPart().getFigure() .getBounds()); getDiagramEditPart().getFigure().translateToAbsolute(rect); IElementType typeLED = ElementTypeRegistry.getInstance().getType( "logic.led");//$NON-NLS-1$ IElementType typeWire = ElementTypeRegistry.getInstance().getType( "logic.wire");//$NON-NLS-1$ Point createPt = new Point(100, 100); LEDEditPart led1EP = (LEDEditPart) getLogicTestFixture() .createShapeUsingTool(typeLED, createPt, getDiagramEditPart()); createPt.getTranslated(led1EP.getFigure().getSize().getExpanded(100, 100)); LEDEditPart led2EP = (LEDEditPart) getLogicTestFixture() .createShapeUsingTool(typeLED, createPt, getDiagramEditPart()); createPt.getTranslated(led2EP.getFigure().getSize().getExpanded(100, 100)); final IDiagramGraphicalViewer viewer = (IDiagramGraphicalViewer) getDiagramEditPart() .getViewer(); EObject led1 = led1EP.getNotationView() .getElement(); EObject led2 = led2EP.getNotationView() .getElement(); final String led1ID = ((XMLResource) led1.eResource()).getID(led1); final String led2ID = ((XMLResource) led2.eResource()).getID(led2); // Create a wire relationship between an outgoing terminal on LED1 and // an incoming terminal on LED2. EObject outputTerminal = (EObject) ((LED) ((View) led1EP.getModel()) .getElement()).getOutputTerminals().get(0); TerminalEditPart outputTerminalEP = (TerminalEditPart) viewer .findEditPartsForElement( ((XMLResource) outputTerminal.eResource()).getID(outputTerminal), TerminalEditPart.class).get(0); EObject inputTerminal = (EObject) ((LED) ((View) led2EP.getModel()) .getElement()).getInputTerminals().get(0); TerminalEditPart inputTerminalEP = (TerminalEditPart) viewer .findEditPartsForElement( ((XMLResource) inputTerminal.eResource()).getID(inputTerminal), TerminalEditPart.class).get(0); ConnectionEditPart wireEP = getLogicTestFixture() .createConnectorUsingTool(outputTerminalEP, inputTerminalEP, typeWire); EObject wire = ((View) wireEP.getModel()).getElement(); String wireID = ((XMLResource) wire.eResource()).getID(wire); assertEquals("Number of LEDEditPart for led1ID incorrect", 1, viewer//$NON-NLS-1$ .findEditPartsForElement(led1ID, LEDEditPart.class).size()); assertEquals("Number of ConnectionEditParts for led1ID incorrect", 0,//$NON-NLS-1$ viewer.findEditPartsForElement(led1ID, ConnectionEditPart.class) .size()); View shape3 = createShapeView(getDiagramEditPart(), ViewUtil .resolveSemanticElement(led2EP.getNotationView()), new Point(100, 200)); assertEquals("Number of ShapeEditParts for led2ID incorrect", 2, viewer//$NON-NLS-1$ .findEditPartsForElement(led2ID, ShapeEditPart.class).size()); DeleteCommand delete = new DeleteCommand(getLogicTestFixture().getEditingDomain(), shape3); testCommand(delete, new ITestCommandCallback() { public void onCommandExecution() { assertEquals("Number of LEDEditParts for led1ID incorrect", 1,//$NON-NLS-1$ viewer.findEditPartsForElement(led1ID, LEDEditPart.class) .size()); assertEquals("Number of LEDEditParts for led2ID incorrect", 1,//$NON-NLS-1$ viewer.findEditPartsForElement(led2ID, LEDEditPart.class) .size()); } }); clearDiagram(); //assertEquals("Number of IGraphicalEditParts for led1ID incorrect", 0,//$NON-NLS-1$ // viewer.findEditPartsForElement(led1ID, IGraphicalEditPart.class) // .size()); //assertEquals("Number of IGraphicalEditParts for led2ID incorrect", 0,//$NON-NLS-1$ // viewer.findEditPartsForElement(led2ID, IGraphicalEditPart.class) // .size()); //assertEquals("Number of IGraphicalEditParts for wireID incorrect", 0,//$NON-NLS-1$ // viewer.findEditPartsForElement(wireID, IGraphicalEditPart.class) // .size()); } }