org.eclipse.ui.internal.PartTester Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of workbench Show documentation
Show all versions of workbench Show documentation
This plug-in contains the bulk of the Workbench implementation, and depends on JFace, SWT, and Core Runtime. It cannot be used independently from org.eclipse.ui. Workbench client plug-ins should not depend directly on this plug-in.
The newest version!
/*******************************************************************************
* 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.ui.internal;
import org.eclipse.core.runtime.Assert;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IPersistableElement;
import org.eclipse.ui.IPropertyListener;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.IWorkbenchPart2;
public class PartTester {
private PartTester() {
}
/**
* Sanity-check the public interface of the editor. This is called on every editor after it
* is fully initiallized, but before it is actually connected to the editor reference or the
* layout. Calls as much of the editor's public interface as possible to test for exceptions,
* and tests the return values for glaring faults. This does not need to be an exhaustive conformance
* test, as it is called every time an editor is opened and it needs to be efficient.
* The part should be unmodified when the method exits.
*
* @param part
*/
public static void testEditor(IEditorPart part) throws Exception {
testWorkbenchPart(part);
Assert.isTrue(part.getEditorSite() == part.getSite(),
"The part's editor site must be the same as the part's site"); //$NON-NLS-1$
IEditorInput input = part.getEditorInput();
Assert.isNotNull(input, "The editor input must be non-null"); //$NON-NLS-1$
testEditorInput(input);
part.isDirty();
part.isSaveAsAllowed();
part.isSaveOnCloseNeeded();
}
public static void testEditorInput(IEditorInput input) throws Exception {
input.getAdapter(Object.class);
// Don't test input.getImageDescriptor() -- the workbench never uses that
// method and most editor inputs would fail the test. It should really be
// deprecated.
Assert.isNotNull(input.getName(),
"The editor input must have a non-null name"); //$NON-NLS-1$
Assert.isNotNull(input.getToolTipText(),
"The editor input must have a non-null tool tip"); //$NON-NLS-1$
// Persistable element may be null
IPersistableElement persistableElement = input.getPersistable();
if (persistableElement != null) {
Assert
.isNotNull(persistableElement.getFactoryId(),
"The persistable element for the editor input must have a non-null factory id"); //$NON-NLS-1$
}
}
/**
* Sanity-checks a workbench part. Excercises the public interface and tests for any
* obviously bogus return values. The part should be unmodified when the method exits.
*
* @param part
* @throws Exception
*/
private static void testWorkbenchPart(IWorkbenchPart part) throws Exception {
IPropertyListener testListener = new IPropertyListener() {
public void propertyChanged(Object source, int propId) {
}
};
// Test addPropertyListener
part.addPropertyListener(testListener);
// Test removePropertyListener
part.removePropertyListener(testListener);
// Test equals
Assert.isTrue(part.equals(part), "A part must be equal to itself"); //$NON-NLS-1$
Assert.isTrue(!part.equals(new Integer(32)),
"A part must have a meaningful equals method"); //$NON-NLS-1$
// Test getAdapter
Object partAdapter = part.getAdapter(part.getClass());
Assert.isTrue(partAdapter == null || partAdapter == part,
"A part must adapter to itself or return null"); //$NON-NLS-1$
// Test getTitle
Assert.isNotNull(part.getTitle(), "A part's title must be non-null"); //$NON-NLS-1$
// Test getTitleImage
Assert.isNotNull(part.getTitleImage(),
"A part's title image must be non-null"); //$NON-NLS-1$
// Test getTitleToolTip
Assert.isNotNull(part.getTitleToolTip(),
"A part's title tool tip must be non-null"); //$NON-NLS-1$
// Test toString
Assert.isNotNull(part.toString(),
"A part's toString method must return a non-null value"); //$NON-NLS-1$
// Compute hashCode
part.hashCode();
if (part instanceof IWorkbenchPart2) {
testWorkbenchPart2((IWorkbenchPart2)part);
}
}
private static void testWorkbenchPart2(IWorkbenchPart2 part)
throws Exception {
Assert.isNotNull(part.getContentDescription(),
"A part must return a non-null content description"); //$NON-NLS-1$
Assert.isNotNull(part.getPartName(),
"A part must return a non-null part name"); //$NON-NLS-1$
}
/**
* Sanity-check the public interface of a view. This is called on every view after it
* is fully initiallized, but before it is actually connected to the part reference or the
* layout. Calls as much of the part's public interface as possible without modifying the part
* to test for exceptions and check the return values for glaring faults. This does not need
* to be an exhaustive conformance test, as it is called every time an editor is opened and
* it needs to be efficient.
*
* @param part
*/
public static void testView(IViewPart part) throws Exception {
Assert.isTrue(part.getSite() == part.getViewSite(),
"A part's site must be the same as a part's view site"); //$NON-NLS-1$
testWorkbenchPart(part);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy