blob: 17d3db0de1406519d3682b121f68cb7fefe4f02d [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 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
* David Saff (saff@mit.edu) - initial API and implementation
* (bug 102632: [JUnit] Support for JUnit 4.)
*******************************************************************************/
package org.eclipse.jdt.internal.junit.launcher;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jdt.internal.junit.ui.JUnitPlugin;
public class TestKind implements ITestKind {
private final IConfigurationElement fElement;
public TestKind(IConfigurationElement element) {
this.fElement = element;
}
/*
* @see org.eclipse.jdt.internal.junit.launcher.ITestKind#createFinder()
*/
public ITestFinder createFinder() {
try {
return (ITestFinder) fElement.createExecutableExtension(FINDER_CLASS_NAME);
} catch (CoreException e1) {
JUnitPlugin.log(e1);
return ITestFinder.NULL;
}
}
/*
* @see org.eclipse.jdt.internal.junit.launcher.ITestKind#getDisplayName()
*/
public String getDisplayName() {
return getAttribute(DISPLAY_NAME);
}
/*
* @see org.eclipse.jdt.internal.junit.launcher.ITestKind#getFinderClassName()
*/
public String getFinderClassName() {
return getAttribute(FINDER_CLASS_NAME);
}
/*
* @see org.eclipse.jdt.internal.junit.launcher.ITestKind#getId()
*/
public String getId() {
return getAttribute(ID);
}
/*
* @see org.eclipse.jdt.internal.junit.launcher.ITestKind#getLoaderClassName()
*/
public String getLoaderClassName() {
return getAttribute(LOADER_CLASS_NAME);
}
public String getLoaderPluginId() {
return getAttribute(LOADER_PLUGIN_ID);
}
/*
* @see org.eclipse.jdt.internal.junit.launcher.ITestKind#getPrecededKindId()
*/
public String getPrecededKindId() {
String attribute= getAttribute(PRECEDES);
return attribute == null ? "" : attribute; //$NON-NLS-1$
}
/*
* @see org.eclipse.jdt.internal.junit.launcher.ITestKind#isNull()
*/
public boolean isNull() {
return false;
}
protected String getAttribute(String attributeName) {
return fElement.getAttribute(attributeName);
}
boolean precedes(ITestKind otherKind) {
final String precededKindId = getPrecededKindId();
String[] ids = precededKindId.split(","); //$NON-NLS-1$
for (int i = 0; i < ids.length; i++) {
if (ids[i].equals(otherKind.getId()))
return true;
}
return false;
}
TestSearchResult search(final ITestSearchExtent testTarget)
throws JavaModelException {
return new TestSearchResult(testTarget.find(createFinder()), this);
}
/*
* @see org.eclipse.jdt.internal.junit.launcher.ITestKind#getClasspathEntries()
*/
public JUnitRuntimeClasspathEntry[] getClasspathEntries() {
IConfigurationElement[] children= fElement.getChildren(ITestKind.RUNTIME_CLASSPATH_ENTRY);
JUnitRuntimeClasspathEntry[] returnThis= new JUnitRuntimeClasspathEntry[children.length];
for (int i= 0; i < children.length; i++) {
IConfigurationElement element= children[i];
String pluginID= element.getAttribute(ITestKind.CLASSPATH_PLUGIN_ID);
String pathToJar= element.getAttribute(ITestKind.CLASSPATH_PATH_TO_JAR);
returnThis[i]= new JUnitRuntimeClasspathEntry(pluginID, pathToJar);
}
return returnThis;
}
/*
* @see java.lang.Object#toString()
*/
public String toString() {
return getDisplayName() + " (id: " + getId() + ")"; //$NON-NLS-1$ //$NON-NLS-2$
}
}