blob: 3dbf1342af2bd9d097d825e217f2264594e714a0 [file] [log] [blame]
/*******************************************************************************
* <copyright>
*
* Copyright (c) 2005, 2010 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.tests.cases;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EcoreFactory;
import org.eclipse.emf.ecore.resource.impl.ResourceImpl;
import org.eclipse.graphiti.mm.Property;
import org.eclipse.graphiti.mm.pictograms.Diagram;
import org.eclipse.graphiti.mm.pictograms.PictogramElement;
import org.eclipse.graphiti.mm.pictograms.PictogramLink;
import org.eclipse.graphiti.mm.pictograms.PictogramsFactory;
import org.eclipse.graphiti.mm.pictograms.Shape;
import org.eclipse.graphiti.services.Graphiti;
import org.eclipse.graphiti.services.ILinkService;
import org.eclipse.graphiti.tests.reuse.GFAbstractTestCase;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
/**
*
*/
public class LinkServiceTest extends GFAbstractTestCase {
// Fixture
private Diagram d;
private Shape s1;
private static String PROPERTY_VALUE_1 = "value1";
public static ILinkService linkService = Graphiti.getLinkService();
@BeforeClass
public static void prepareClass() {
}
@Before
public void initializeTest() {
d = Graphiti.getPeCreateService().createDiagram("tutorial", "test", true);
assertNotNull(d);
s1 = Graphiti.getPeCreateService().createShape(d, true);
s1.setGraphicsAlgorithm(Graphiti.getGaCreateService().createRectangle(d));
assertNotNull(s1);
ResourceImpl resource = new ResourceImpl();
resource.getContents().add(d);
}
@Test
public void getBusinessObjectForLinkedPictogramElement() {
EClass bo = EcoreFactory.eINSTANCE.createEClass();
d.eResource().getContents().add(bo);
PictogramLink link = createOrGetPictogramLink(s1);
link.getBusinessObjects().add(bo);
EObject linkedBo = linkService.getBusinessObjectForLinkedPictogramElement(s1);
assertNotNull(linkedBo);
assertEquals(bo, linkedBo);
}
@Test
public void getAllBusinessObjectsForLinkedPictogramElement() {
PictogramLink link = createOrGetPictogramLink(s1);
EClass bo1 = EcoreFactory.eINSTANCE.createEClass();
d.eResource().getContents().add(bo1);
link.getBusinessObjects().add(bo1);
EClass bo2 = EcoreFactory.eINSTANCE.createEClass();
d.eResource().getContents().add(bo2);
link.getBusinessObjects().add(bo2);
EObject linkedBos[] = linkService.getAllBusinessObjectsForLinkedPictogramElement(s1);
assertEquals(2, linkedBos.length);
List<EObject> boList = Arrays.asList(linkedBos);
assertTrue(boList.contains(bo1));
assertTrue(boList.contains(bo2));
}
@Test
public void linkProperty() {
// hasLinkProperty()
// setLinkProperty()
// getLinkProperty()
boolean hasLinkProperty = linkService.hasLinkProperty(s1, PROPERTY_VALUE_1);
assertFalse(hasLinkProperty);
Property linkProperty = linkService.getLinkProperty(s1);
assertNull(linkProperty);
linkService.setLinkProperty(s1, PROPERTY_VALUE_1);
hasLinkProperty = linkService.hasLinkProperty(s1, PROPERTY_VALUE_1);
assertTrue(hasLinkProperty);
linkProperty = linkService.getLinkProperty(s1);
assertNotNull(linkProperty);
String value = linkProperty.getValue();
assertEquals(PROPERTY_VALUE_1, value);
}
@Test
public void getPictogramElements() {
Shape s1a = Graphiti.getPeCreateService().createShape(d, true);
Shape s2a = Graphiti.getPeCreateService().createShape(d, true);
Shape s3i = Graphiti.getPeCreateService().createShape(d, false);
EClass bo1 = EcoreFactory.eINSTANCE.createEClass();
bo1.setName("bo1");
d.eResource().getContents().add(bo1);
EClass bo2 = EcoreFactory.eINSTANCE.createEClass();
bo2.setName("bo2");
d.eResource().getContents().add(bo2);
EClass bo3 = EcoreFactory.eINSTANCE.createEClass();
bo3.setName("bo3");
d.eResource().getContents().add(bo3);
List<EObject> boList = new ArrayList<EObject>();
boList.add(bo1);
List<PictogramElement> pes = linkService.getPictogramElements(d, boList, false);
assertTrue(pes.isEmpty());
link(s3i, bo1);
pes = linkService.getPictogramElements(d, boList, true);
assertTrue(pes.isEmpty());
pes = linkService.getPictogramElements(d, boList, false);
assertFalse(pes.isEmpty());
assertEquals(s3i, pes.get(0));
link(s1a, bo1);
link(s2a, bo2);
link(s2a, bo3);
pes = linkService.getPictogramElements(d, boList, true);
assertFalse(pes.isEmpty());
assertEquals(s1a, pes.get(0));
pes = linkService.getPictogramElements(d, bo1);
assertTrue(pes.size() == 2);
assertTrue(pes.contains(s1a));
assertTrue(pes.contains(s3i));
pes = linkService.getPictogramElements(d, bo3);
assertTrue(pes.size() == 1);
assertTrue(pes.contains(s2a));
}
private PictogramLink createOrGetPictogramLink(PictogramElement pe) {
PictogramLink link = pe.getLink();
if (link == null) {
link = PictogramsFactory.eINSTANCE.createPictogramLink();
link.setPictogramElement(pe);
d.getPictogramLinks().add(link);
}
return link;
}
private void link(PictogramElement pe, EObject bo) {
PictogramLink link = createOrGetPictogramLink(pe);
link.getBusinessObjects().add(bo);
}
}