blob: 396503823ddab94019bcda4b5c5ef76efb7d530e [file] [log] [blame]
/******************************************************************************
* Copyright (c) 2005, 2006 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.runtime.diagram.ui.render.editparts;
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
import junit.framework.TestCase;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.commands.operations.OperationHistoryFactory;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Status;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.transaction.TransactionalEditingDomain;
import org.eclipse.emf.workspace.AbstractEMFOperation;
import org.eclipse.gmf.runtime.diagram.core.DiagramEditingDomainFactory;
import org.eclipse.gmf.runtime.diagram.core.preferences.PreferencesHint;
import org.eclipse.gmf.runtime.diagram.core.services.ViewService;
import org.eclipse.gmf.runtime.diagram.core.util.ViewType;
import org.eclipse.gmf.runtime.diagram.ui.render.editparts.AbstractImageEditPart;
import org.eclipse.gmf.runtime.draw2d.ui.render.RenderedImage;
import org.eclipse.gmf.runtime.notation.Diagram;
import org.eclipse.gmf.runtime.notation.Node;
import org.eclipse.gmf.tests.runtime.diagram.ui.util.DiagramCreator;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Rectangle;
/**
* @author sshaw
*
* Test class for the AbstractEditPartImage class.
*/
abstract public class AbstractImageEditPartTests
extends TestCase {
/* (non-Javadoc)
* @see junit.framework.TestCase#setUp()
*/
private Node node;
public Node getNode() {
return node;
}
private TransactionalEditingDomain editingDomain;
/**
* Sets up the fixture, for example, open a network connection.
* This method is called before a test is executed.
*/
protected void setUp() throws Exception {
super.setUp();
editingDomain = DiagramEditingDomainFactory.getInstance().createEditingDomain();
final Diagram dgrm = DiagramCreator.createEmptyDiagram(getPreferenceHint(),
editingDomain);
AbstractEMFOperation operation = new AbstractEMFOperation(
editingDomain, "") { //$NON-NLS-1$
protected IStatus doExecute(IProgressMonitor monitor,
IAdaptable info)
throws ExecutionException {
Resource resource = editingDomain
.createResource("null:/org.eclipse.gmf.tests.runtime.diagram.ui"); //$NON-NLS-1$
resource.getContents().add(dgrm);
return Status.OK_STATUS;
};
};
try {
OperationHistoryFactory.getOperationHistory().execute(operation,
new NullProgressMonitor(), null);
} catch (ExecutionException e) {
e.printStackTrace();
assertFalse(false);
}
node = createNode(dgrm);
}
/**
* @return
*/
protected PreferencesHint getPreferenceHint() {
return PreferencesHint.USE_DEFAULTS;
}
/* (non-Javadoc)
* @see junit.framework.TestCase#tearDown()
*/
protected void tearDown() throws Exception {
super.tearDown();
}
protected Node createNode(final Diagram diagram) {
final List list = new ArrayList(1);
AbstractEMFOperation operation = new AbstractEMFOperation(
editingDomain, "") { //$NON-NLS-1$
protected IStatus doExecute(IProgressMonitor monitor,
IAdaptable info)
throws ExecutionException {
Node note1 = ViewService.createNode(diagram,
ViewType.NOTE, getPreferenceHint());
assertNotNull("Note1 creation failed", note1); //$NON-NLS-1$
list.add(note1);
return Status.OK_STATUS;
};
};
try {
OperationHistoryFactory.getOperationHistory().execute(operation,
new NullProgressMonitor(), null);
} catch (ExecutionException e) {
e.printStackTrace();
assertFalse(false);
}
return (Node)list.get(0);
}
abstract public List getFixtures();
public void test_regenerateImageFromSource() {
List fixtures = getFixtures();
ListIterator li = fixtures.listIterator();
int testno = 1;
while (li.hasNext()) {
Object obj = li.next();
if (obj instanceof AbstractImageEditPart) {
AbstractImageEditPart fixture = (AbstractImageEditPart)obj;
RenderedImage renderedImage = fixture.regenerateImageFromSource();
verifyRenderedImage(renderedImage, testno++);
}
}
}
/**
* @param renderedImage
*/
protected void verifyRenderedImage(RenderedImage renderedImage, int testno) {
assertTrue("renderedImage is null in testno " + (new Integer(testno)).toString(),//$NON-NLS-1$
renderedImage != null);
Image swtImage = renderedImage.getSWTImage();
assertTrue("swtImage is null in testno " + (new Integer(testno)).toString(), //$NON-NLS-1$
swtImage != null);
// ensure the protection image isn't being returned.
Rectangle rect = swtImage.getBounds();
assertTrue("swtImage is not correct size in testno " + (new Integer(testno)).toString(),//$NON-NLS-1$
rect.width > 10 && rect.height > 10);
}
public void test_getRenderedImage() {
List fixtures = getFixtures();
ListIterator li = fixtures.listIterator();
int testno = 1;
while (li.hasNext()) {
Object obj = li.next();
if (obj instanceof AbstractImageEditPart) {
AbstractImageEditPart fixture = (AbstractImageEditPart)obj;
RenderedImage renderedImage = fixture.getRenderedImage();
verifyRenderedImage(renderedImage, testno++);
}
}
}
}