mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-31 21:05:37 +02:00
Code cleanup
Change-Id: If94553894586f8745fff9952f3648160110ba609
This commit is contained in:
parent
83bd6f7ed4
commit
dccd99c843
13 changed files with 809 additions and 838 deletions
|
@ -16,14 +16,13 @@ import java.net.URL;
|
|||
* Helper class to launch a test
|
||||
*/
|
||||
public class TestPluginLauncher {
|
||||
|
||||
public static final String APP_NAME= "org.eclipse.jdt.ui.tests.app";
|
||||
|
||||
public static void run(String location, Class testCase, String[] args) {
|
||||
public static void run(String location, Class<?> testCase, String[] args) {
|
||||
run(APP_NAME, location, testCase, args);
|
||||
}
|
||||
|
||||
public static void run(String application, String location, Class testCase, String[] args) {
|
||||
public static void run(String application, String location, Class<?> testCase, String[] args) {
|
||||
try {
|
||||
String bootLocation= getBootLocation();
|
||||
int nArgs= args.length;
|
||||
|
|
|
@ -10,46 +10,50 @@
|
|||
*******************************************************************************/
|
||||
package org.eclipse.cdt.core.testplugin.util;
|
||||
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
|
||||
/*
|
||||
* Interface to describe a visual test pass for a dialog test.
|
||||
*/
|
||||
public interface IDialogTestPass {
|
||||
/*
|
||||
/**
|
||||
* @return String The title of the test pass.
|
||||
*/
|
||||
public String title();
|
||||
/*
|
||||
|
||||
/**
|
||||
* @return String The description of the test pass.
|
||||
*/
|
||||
public String description();
|
||||
/*
|
||||
|
||||
/**
|
||||
* @return String The label of the test pass to be used
|
||||
* in a selection list. The return includes an '&'
|
||||
* if a mnemonic is desired.
|
||||
*/
|
||||
public String label();
|
||||
/*
|
||||
|
||||
/**
|
||||
* @return ArrayList A list of items to appear in a checklist.
|
||||
* The items in the list must be Strings and should include an
|
||||
* '&' if a mnemonic is desired.
|
||||
*/
|
||||
public ArrayList checkListTexts();
|
||||
/*
|
||||
public ArrayList<String> checkListTexts();
|
||||
|
||||
/**
|
||||
* @return String[] Associated failure messages that correspond
|
||||
* to the checklist items. The size of this array should be the
|
||||
* same size as the checklist.
|
||||
*/
|
||||
public String[] failureTexts();
|
||||
/*
|
||||
|
||||
/**
|
||||
* @return String The test that corresponds to the test pass to
|
||||
* which the tester will respond with a 'yes' or 'no'.
|
||||
*/
|
||||
public String queryText();
|
||||
/*
|
||||
|
||||
/**
|
||||
* @return int A unique number that identifies the test pass.
|
||||
*/
|
||||
public int getID();
|
||||
|
|
|
@ -6,46 +6,36 @@
|
|||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* IBM - Initial API and implementation
|
||||
* IBM - Initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.cdt.core.testplugin.util;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
/*
|
||||
* This test pass verifies visually the sizing of the dialog and its
|
||||
* widgets.
|
||||
* This test pass verifies visually the sizing of the dialog and its widgets.
|
||||
*/
|
||||
class SizingTestPass implements IDialogTestPass {
|
||||
private static final int CHECKLIST_SIZE = 5;
|
||||
|
||||
/**
|
||||
* @see IDialogTestPass#title()
|
||||
*/
|
||||
@Override
|
||||
public String title() {
|
||||
return "Test Pass: Sizing and Display";
|
||||
}
|
||||
/**
|
||||
* @see IDialogTestPass#description()
|
||||
*/
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return "Verify the sizing and display of the dialogs and widgets.";
|
||||
}
|
||||
/**
|
||||
* @see IDialogTestPass#label()
|
||||
*/
|
||||
|
||||
@Override
|
||||
public String label() {
|
||||
return "&Sizing and Display";
|
||||
}
|
||||
/**
|
||||
* @see IDialogTestPass#checkListTexts()
|
||||
*/
|
||||
}
|
||||
|
||||
@Override
|
||||
public ArrayList checkListTexts() {
|
||||
ArrayList list = new ArrayList(CHECKLIST_SIZE);
|
||||
public ArrayList<String> checkListTexts() {
|
||||
ArrayList<String> list = new ArrayList<>(CHECKLIST_SIZE);
|
||||
list.add("&1) the correct dialog displays.");
|
||||
list.add("&2) the dialog is an appropriate size for the required resolution (1024x768).");
|
||||
list.add("&3) the texts are correct and not cut off.");
|
||||
|
@ -53,11 +43,7 @@ class SizingTestPass implements IDialogTestPass {
|
|||
list.add("&5) all the widgets are viewable and not cut off.");
|
||||
return list;
|
||||
}
|
||||
/**
|
||||
* @see IDialogTestPass#failureTexts()
|
||||
* Size of the return array must be the same size as the checkListTexts'
|
||||
* ArrayList.
|
||||
*/
|
||||
|
||||
@Override
|
||||
public String[] failureTexts() {
|
||||
String[] failureText = new String[CHECKLIST_SIZE];
|
||||
|
@ -68,16 +54,12 @@ class SizingTestPass implements IDialogTestPass {
|
|||
failureText[4] = "Some widgets are cut off.";
|
||||
return failureText;
|
||||
}
|
||||
/**
|
||||
* @see IDialogTestPass#queryText()
|
||||
*/
|
||||
|
||||
@Override
|
||||
public String queryText() {
|
||||
return "Is the sizing and display of the dialog correct?";
|
||||
}
|
||||
/**
|
||||
* @see IDialogTestPass#getID()
|
||||
*/
|
||||
|
||||
@Override
|
||||
public int getID() {
|
||||
return VerifyDialog.TEST_SIZING;
|
||||
|
|
|
@ -6,109 +6,107 @@
|
|||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* IBM - Initial API and implementation
|
||||
* IBM - Initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.cdt.ui.testplugin;
|
||||
|
||||
// copied from startup.jar. planned to be removed soon
|
||||
import java.net.*;
|
||||
import java.lang.reflect.*;
|
||||
import java.io.*;
|
||||
import java.util.*;
|
||||
import java.io.File;
|
||||
import java.io.FileFilter;
|
||||
import java.io.IOException;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.Method;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
import java.net.URLClassLoader;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.StringTokenizer;
|
||||
import java.util.Vector;
|
||||
|
||||
|
||||
// Copied from startup.jar. planned to be removed soon
|
||||
|
||||
/**
|
||||
* Startup class for Eclipse. Creates a class loader using
|
||||
* supplied URL of platform installation, loads and calls
|
||||
* the Eclipse Boot Loader. The startup arguments are as follows:
|
||||
* Startup class for Eclipse. Creates a class loader using supplied URL of
|
||||
* platform installation, loads and calls the Eclipse Boot Loader. The startup
|
||||
* arguments are as follows:
|
||||
* <dl>
|
||||
* <dd>
|
||||
* -application <id>: the identifier of the application to run
|
||||
* <dd>-application <id>: the identifier of the application to run</dd>
|
||||
* <dd>-boot <location>: the location, expressed as a URL, of the
|
||||
* platform's boot.jar</dd>
|
||||
* <dd>-consolelog : enables log to the console. Handy when combined with -debug
|
||||
* </dd>
|
||||
* <dd>
|
||||
* -boot <location>: the location, expressed as a URL, of the platform's boot.jar
|
||||
* </dd>
|
||||
* <dd>
|
||||
* -consolelog : enables log to the console. Handy when combined with -debug
|
||||
* </dd>
|
||||
* <dd>
|
||||
* -data <location>: sets the workspace location and the default location for projects
|
||||
* </dd>
|
||||
* <dd>
|
||||
* -debug [options file]: turns on debug mode for the platform and optionally specifies a location
|
||||
* for the .options file. This file indicates what debug points are available for a
|
||||
* plug-in and whether or not they are enabled. If a location is not specified, the platform searches
|
||||
* for the .options file under the install directory
|
||||
* </dd>
|
||||
* <dd>
|
||||
* -dev [entries]: turns on dev mode and optionally specifies comma-separated class path entries
|
||||
* which are added to the class path of each plug-in
|
||||
* </dd>
|
||||
* <dd>
|
||||
* -keyring <location>: the location of the authorization database on disk. This argument
|
||||
* has to be used together with the -password argument
|
||||
* </dd>
|
||||
* <dd>
|
||||
* -password <passwd>: the password for the authorization database
|
||||
* </dd>
|
||||
* <dd>
|
||||
* -plugins <location>: The arg is a URL pointing to a file which specs the plugin
|
||||
* path for the platform. The file is in property file format where the keys are user-defined
|
||||
* names and the values are comma separated lists of either explicit paths to plugin.xml
|
||||
* files or directories containing plugins. (e.g., .../eclipse/plugins).
|
||||
* </dd>
|
||||
* <dd>
|
||||
* -ws <window system>: sets the window system value
|
||||
* <dd>-data <location>: sets the workspace location and the default
|
||||
* location for projects</dd>
|
||||
* <dd>-debug [options file]: turns on debug mode for the platform and
|
||||
* optionally specifies a location for the .options file. This file indicates
|
||||
* what debug points are available for a plug-in and whether or not they are
|
||||
* enabled. If a location is not specified, the platform searches for the
|
||||
* .options file under the install directory</dd>
|
||||
* <dd>-dev [entries]: turns on dev mode and optionally specifies
|
||||
* comma-separated class path entries which are added to the class path of each
|
||||
* plug-in</dd>
|
||||
* <dd>-keyring <location>: the location of the authorization database on
|
||||
* disk. This argument has to be used together with the -password argument</dd>
|
||||
* <dd>-password <passwd>: the password for the authorization database
|
||||
* </dd>
|
||||
* <dd>-plugins <location>: The arg is a URL pointing to a file which
|
||||
* specs the plugin path for the platform. The file is in property file format
|
||||
* where the keys are user-defined names and the values are comma separated
|
||||
* lists of either explicit paths to plugin.xml files or directories containing
|
||||
* plugins. (e.g., .../eclipse/plugins).</dd>
|
||||
* <dd>-ws <window system>: sets the window system value</dd>
|
||||
* </dl>
|
||||
*/
|
||||
public class Main {
|
||||
/**
|
||||
* Indicates whether this instance is running in debug mode.
|
||||
*/
|
||||
protected boolean debug = false;
|
||||
|
||||
protected boolean debug;
|
||||
|
||||
/**
|
||||
* The location of the launcher to run.
|
||||
*/
|
||||
protected String bootLocation = null;
|
||||
|
||||
protected String bootLocation;
|
||||
|
||||
/**
|
||||
* The identifier of the application to run.
|
||||
*/
|
||||
protected String application;
|
||||
|
||||
|
||||
/**
|
||||
* The path for finding find plugins.
|
||||
*/
|
||||
protected URL pluginPathLocation;
|
||||
|
||||
|
||||
/**
|
||||
* The boot path location.
|
||||
*/
|
||||
protected String location;
|
||||
|
||||
|
||||
/**
|
||||
* Indicates whether items for UNinstallation should be looked for.
|
||||
* Indicates whether items for uninstallation should be looked for.
|
||||
*/
|
||||
protected boolean uninstall = false;
|
||||
|
||||
|
||||
/**
|
||||
* The item to be uninstalled.
|
||||
*/
|
||||
protected String uninstallCookie;
|
||||
|
||||
|
||||
/**
|
||||
* The class path entries.
|
||||
*/
|
||||
protected String devClassPath = null;
|
||||
|
||||
protected String devClassPath;
|
||||
|
||||
/**
|
||||
* Indicates whether this instance is running in development mode.
|
||||
*/
|
||||
protected boolean inDevelopmentMode = false;
|
||||
protected boolean inDevelopmentMode;
|
||||
|
||||
// static token describing how to take down the splash screen
|
||||
private static String endSplash = null;
|
||||
|
||||
private static String endSplash;
|
||||
|
||||
// constants
|
||||
private static final String APPLICATION = "-application"; //$NON-NLS-1$
|
||||
private static final String BOOT = "-boot"; //$NON-NLS-1$
|
||||
|
@ -120,7 +118,7 @@ public class Main {
|
|||
private static final String BOOTLOADER = "org.eclipse.core.boot.BootLoader"; //$NON-NLS-1$
|
||||
private static final String UPDATELOADER = "org.eclipse.core.internal.boot.LaunchInfo"; //$NON-NLS-1$
|
||||
|
||||
// The project containing the boot loader code. This is used to construct
|
||||
// The project containing the boot loader code. This is used to construct
|
||||
// the correct class path for running in VAJ and VAME.
|
||||
private static final String PROJECT_NAME = "Eclipse Core Boot"; //$NON-NLS-1$
|
||||
|
||||
|
@ -143,387 +141,411 @@ public class Main {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Executes the launch.
|
||||
*
|
||||
* @return the result of performing the launch
|
||||
* @param args command-line arguments
|
||||
* @exception Exception thrown if a problem occurs during the launch
|
||||
*/
|
||||
protected Object basicRun(String[] args) throws Exception {
|
||||
Class clazz = getBootLoader(bootLocation);
|
||||
Method method = clazz.getDeclaredMethod("run", new Class[] { String.class, URL.class, String.class, String[].class }); //$NON-NLS-1$
|
||||
try {
|
||||
return method.invoke(clazz, new Object[] { application, pluginPathLocation, location, args });
|
||||
} catch (InvocationTargetException e) {
|
||||
if (e.getTargetException() instanceof Error)
|
||||
throw (Error) e.getTargetException();
|
||||
throw e;
|
||||
/**
|
||||
* Executes the launch.
|
||||
*
|
||||
* @param args command-line arguments
|
||||
* @return the result of performing the launch
|
||||
* @exception Exception thrown if a problem occurs during the launch
|
||||
*/
|
||||
protected Object basicRun(String[] args) throws Exception {
|
||||
Class<?> clazz = getBootLoader(bootLocation);
|
||||
Method method = clazz.getDeclaredMethod("run", //$NON-NLS-1$
|
||||
new Class[] { String.class, URL.class, String.class, String[].class });
|
||||
try {
|
||||
return method.invoke(clazz, new Object[] { application, pluginPathLocation, location, args });
|
||||
} catch (InvocationTargetException e) {
|
||||
if (e.getTargetException() instanceof Error)
|
||||
throw (Error) e.getTargetException();
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the result of converting a list of comma-separated tokens into an array
|
||||
*
|
||||
* @return the array of string tokens
|
||||
* @param prop the initial comma-separated string
|
||||
*/
|
||||
private String[] getArrayFromList(String prop) {
|
||||
if (prop == null || prop.trim().isEmpty())
|
||||
return new String[0];
|
||||
Vector list = new Vector();
|
||||
StringTokenizer tokens = new StringTokenizer(prop, ","); //$NON-NLS-1$
|
||||
while (tokens.hasMoreTokens()) {
|
||||
String token = tokens.nextToken().trim();
|
||||
if (!token.isEmpty())
|
||||
list.addElement(token);
|
||||
/**
|
||||
* Returns the result of converting a list of comma-separated tokens into an array.
|
||||
*
|
||||
* @param prop the initial comma-separated string
|
||||
* @return the array of string tokens
|
||||
*/
|
||||
private String[] getArrayFromList(String prop) {
|
||||
if (prop == null || prop.trim().isEmpty())
|
||||
return new String[0];
|
||||
List<String> list = new ArrayList<>();
|
||||
StringTokenizer tokens = new StringTokenizer(prop, ","); //$NON-NLS-1$
|
||||
while (tokens.hasMoreTokens()) {
|
||||
String token = tokens.nextToken().trim();
|
||||
if (!token.isEmpty())
|
||||
list.add(token);
|
||||
}
|
||||
return list.toArray(new String[0]);
|
||||
}
|
||||
return list.isEmpty() ? new String[0] : (String[]) list.toArray(new String[0]);
|
||||
}
|
||||
/**
|
||||
* Creates and returns a platform <code>BootLoader</code> which can be used to start
|
||||
* up and run the platform. The given base, if not <code>null</code>,
|
||||
* is the location of the boot loader code. If the value is <code>null</code>
|
||||
* then the boot loader is located relative to this class.
|
||||
*
|
||||
* @return the new boot loader
|
||||
* @param base the location of the boot loader
|
||||
*/
|
||||
public Class getBootLoader(String base) throws Exception {
|
||||
URLClassLoader loader = new URLClassLoader(getBootPath(base), null);
|
||||
return loader.loadClass(BOOTLOADER);
|
||||
}
|
||||
/**
|
||||
* Returns the <code>URL</code>-based class path describing where the boot classes
|
||||
* are located when running in development mode.
|
||||
*
|
||||
* @return the url-based class path
|
||||
* @param base the base location
|
||||
* @exception MalformedURLException if a problem occurs computing the class path
|
||||
*/
|
||||
protected URL[] getDevPath(URL base) throws MalformedURLException {
|
||||
URL url;
|
||||
String devBase = base.toExternalForm();
|
||||
if (!inDevelopmentMode) {
|
||||
|
||||
/**
|
||||
* Creates and returns a platform <code>BootLoader</code> which can be used
|
||||
* to start up and run the platform. The given base, if not
|
||||
* <code>null</code>, is the location of the boot loader code. If the value
|
||||
* is <code>null</code> then the boot loader is located relative to this
|
||||
* class.
|
||||
*
|
||||
* @param base the location of the boot loader
|
||||
* @return the new boot loader
|
||||
*/
|
||||
public Class<?> getBootLoader(String base) throws Exception {
|
||||
try (URLClassLoader loader = new URLClassLoader(getBootPath(base), null)) {
|
||||
return loader.loadClass(BOOTLOADER);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the <code>URL</code>-based class path describing where the boot
|
||||
* classes are located when running in development mode.
|
||||
*
|
||||
* @param base the base location
|
||||
* @return the url-based class path
|
||||
* @exception MalformedURLException if a problem occurs computing the class path
|
||||
*/
|
||||
protected URL[] getDevPath(URL base) throws MalformedURLException {
|
||||
URL url;
|
||||
String devBase = base.toExternalForm();
|
||||
if (!inDevelopmentMode) {
|
||||
url = new URL(devBase + "boot.jar"); //$NON-NLS-1$
|
||||
return new URL[] { url };
|
||||
}
|
||||
String[] locations = getArrayFromList(devClassPath);
|
||||
ArrayList<URL> result = new ArrayList<>(locations.length);
|
||||
for (int i = 0; i < locations.length; i++) {
|
||||
String spec = devBase + locations[i];
|
||||
char lastChar = spec.charAt(spec.length() - 1);
|
||||
if ((spec.endsWith(".jar") || (lastChar == '/' || lastChar == '\\'))) { //$NON-NLS-1$
|
||||
url = new URL(spec);
|
||||
} else {
|
||||
url = new URL(spec + "/"); //$NON-NLS-1$
|
||||
}
|
||||
// make sure URL exists before adding to path
|
||||
if (new java.io.File(url.getFile()).exists())
|
||||
result.add(url);
|
||||
}
|
||||
url = new URL(devBase + "boot.jar"); //$NON-NLS-1$
|
||||
return new URL[] {url};
|
||||
}
|
||||
String[] locations = getArrayFromList(devClassPath);
|
||||
ArrayList result = new ArrayList(locations.length);
|
||||
for (int i = 0; i < locations.length; i++) {
|
||||
String spec = devBase + locations[i];
|
||||
char lastChar = spec.charAt(spec.length() - 1);
|
||||
if ((spec.endsWith(".jar") || (lastChar == '/' || lastChar == '\\'))) //$NON-NLS-1$
|
||||
url = new URL (spec);
|
||||
else
|
||||
url = new URL(spec + "/"); //$NON-NLS-1$
|
||||
//make sure URL exists before adding to path
|
||||
if (new java.io.File(url.getFile()).exists())
|
||||
result.add(url);
|
||||
return result.toArray(new URL[result.size()]);
|
||||
}
|
||||
url = new URL(devBase + "boot.jar"); //$NON-NLS-1$
|
||||
if (new java.io.File(url.getFile()).exists())
|
||||
result.add(url);
|
||||
return (URL[])result.toArray(new URL[result.size()]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the <code>URL</code>-based class path describing where the boot classes are located.
|
||||
*
|
||||
* @return the url-based class path
|
||||
* @param base the base location
|
||||
* @exception MalformedURLException if a problem occurs computing the class path
|
||||
*/
|
||||
protected URL[] getBootPath(String base) throws MalformedURLException {
|
||||
URL url = null;
|
||||
// if the given location is not null, assume it is correct and use it.
|
||||
if (base != null) {
|
||||
url = new URL(base);
|
||||
if (debug)
|
||||
System.out.println("Boot URL: " + url.toExternalForm()); //$NON-NLS-1$
|
||||
return new URL[] {url};
|
||||
}
|
||||
// Create a URL based on the location of this class' code.
|
||||
// strip off jar file and/or last directory to get
|
||||
// to the directory containing projects.
|
||||
URL[] result = null;
|
||||
url = getClass().getProtectionDomain().getCodeSource().getLocation();
|
||||
String path = url.getFile();
|
||||
if (path.endsWith(".jar")) //$NON-NLS-1$
|
||||
path = path.substring(0, path.lastIndexOf("/")); //$NON-NLS-1$
|
||||
else
|
||||
if (path.endsWith("/")) //$NON-NLS-1$
|
||||
path = path.substring(0, path.length() - 1);
|
||||
if (inVAJ || inVAME) {
|
||||
int ix = path.lastIndexOf("/"); //$NON-NLS-1$
|
||||
path = path.substring(0, ix + 1);
|
||||
path = path + PROJECT_NAME + "/"; //$NON-NLS-1$
|
||||
url = new URL(url.getProtocol(), url.getHost(), url.getPort(), path);
|
||||
result = new URL[] {url};
|
||||
} else {
|
||||
path = searchForPlugins(path);
|
||||
path = searchForBoot(path);
|
||||
// add on any dev path elements
|
||||
url = new URL(url.getProtocol(), url.getHost(), url.getPort(), path);
|
||||
result = getDevPath(url);
|
||||
}
|
||||
if (debug) {
|
||||
System.out.println("Boot URL:"); //$NON-NLS-1$
|
||||
for (int i = 0; i < result.length; i++)
|
||||
System.out.println(" " + result[i].toExternalForm()); //$NON-NLS-1$
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Searches for a plugins root starting at a given location. If one is
|
||||
* found then this location is returned; otherwise an empty string is
|
||||
* returned.
|
||||
*
|
||||
* @return the location where plugins were found, or an empty string
|
||||
* @param start the location to begin searching at
|
||||
*/
|
||||
protected String searchForPlugins(String start) {
|
||||
File path = new File(start);
|
||||
while (path != null) {
|
||||
File test = new File(path, "plugins"); //$NON-NLS-1$
|
||||
if (test.exists())
|
||||
return test.toString();
|
||||
path = path.getParentFile();
|
||||
path = (path == null || path.length() == 1) ? null : path;
|
||||
}
|
||||
return ""; //$NON-NLS-1$
|
||||
}
|
||||
/**
|
||||
* Searches for a boot directory starting at a given location. If one
|
||||
* is found then this location is returned; otherwise an empty string
|
||||
* is returned.
|
||||
*
|
||||
* @return the location where plugins were found, or an empty string
|
||||
* @param start the location to begin searching at
|
||||
*/
|
||||
protected String searchForBoot(String start) {
|
||||
FileFilter filter = new FileFilter() {
|
||||
@Override
|
||||
public boolean accept(File candidate) {
|
||||
return candidate.getName().startsWith(PI_BOOT);
|
||||
/**
|
||||
* Returns the <code>URL</code>-based class path describing where the boot
|
||||
* classes are located.
|
||||
*
|
||||
* @param base the base location
|
||||
* @return the url-based class path
|
||||
* @exception MalformedURLException if a problem occurs computing the class path
|
||||
*/
|
||||
protected URL[] getBootPath(String base) throws MalformedURLException {
|
||||
URL url = null;
|
||||
// if the given location is not null, assume it is correct and use it.
|
||||
if (base != null) {
|
||||
url = new URL(base);
|
||||
if (debug)
|
||||
System.out.println("Boot URL: " + url.toExternalForm()); //$NON-NLS-1$
|
||||
return new URL[] { url };
|
||||
}
|
||||
};
|
||||
File[] boots = new File(start).listFiles(filter);
|
||||
String result = null;
|
||||
String maxVersion = null;
|
||||
for (int i = 0; i < boots.length; i++) {
|
||||
String name = boots[i].getName();
|
||||
int index = name.lastIndexOf('_');
|
||||
if (index == -1) {
|
||||
result = boots[i].getAbsolutePath();
|
||||
i = boots.length;
|
||||
// Create a URL based on the location of this class' code.
|
||||
// strip off jar file and/or last directory to get
|
||||
// to the directory containing projects.
|
||||
URL[] result = null;
|
||||
url = getClass().getProtectionDomain().getCodeSource().getLocation();
|
||||
String path = url.getFile();
|
||||
if (path.endsWith(".jar")) //$NON-NLS-1$
|
||||
path = path.substring(0, path.lastIndexOf("/")); //$NON-NLS-1$
|
||||
else if (path.endsWith("/")) //$NON-NLS-1$
|
||||
path = path.substring(0, path.length() - 1);
|
||||
if (inVAJ || inVAME) {
|
||||
int ix = path.lastIndexOf("/"); //$NON-NLS-1$
|
||||
path = path.substring(0, ix + 1);
|
||||
path = path + PROJECT_NAME + "/"; //$NON-NLS-1$
|
||||
url = new URL(url.getProtocol(), url.getHost(), url.getPort(), path);
|
||||
result = new URL[] { url };
|
||||
} else {
|
||||
if (index > 0) {
|
||||
String version = name.substring(index + 1);
|
||||
if (maxVersion == null) {
|
||||
result = boots[i].getAbsolutePath();
|
||||
maxVersion = version;
|
||||
} else
|
||||
if (maxVersion.compareTo(version) == -1) {
|
||||
path = searchForPlugins(path);
|
||||
path = searchForBoot(path);
|
||||
// add on any dev path elements
|
||||
url = new URL(url.getProtocol(), url.getHost(), url.getPort(), path);
|
||||
result = getDevPath(url);
|
||||
}
|
||||
if (debug) {
|
||||
System.out.println("Boot URL:"); //$NON-NLS-1$
|
||||
for (int i = 0; i < result.length; i++)
|
||||
System.out.println(" " + result[i].toExternalForm()); //$NON-NLS-1$
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Searches for a plugins root starting at a given location. If one is found
|
||||
* then this location is returned; otherwise an empty string is returned.
|
||||
*
|
||||
* @param start the location to begin searching at
|
||||
* @return the location where plugins were found, or an empty string
|
||||
*/
|
||||
protected String searchForPlugins(String start) {
|
||||
File path = new File(start);
|
||||
while (path != null) {
|
||||
File test = new File(path, "plugins"); //$NON-NLS-1$
|
||||
if (test.exists())
|
||||
return test.toString();
|
||||
path = path.getParentFile();
|
||||
path = (path == null || path.length() == 1) ? null : path;
|
||||
}
|
||||
return ""; //$NON-NLS-1$
|
||||
}
|
||||
|
||||
/**
|
||||
* Searches for a boot directory starting at a given location. If one is
|
||||
* found then this location is returned; otherwise an empty string is
|
||||
* returned.
|
||||
*
|
||||
* @param start the location to begin searching at
|
||||
* @return the location where plugins were found, or an empty string
|
||||
*/
|
||||
protected String searchForBoot(String start) {
|
||||
FileFilter filter = new FileFilter() {
|
||||
@Override
|
||||
public boolean accept(File candidate) {
|
||||
return candidate.getName().startsWith(PI_BOOT);
|
||||
}
|
||||
};
|
||||
File[] boots = new File(start).listFiles(filter);
|
||||
String result = null;
|
||||
String maxVersion = null;
|
||||
for (int i = 0; i < boots.length; i++) {
|
||||
String name = boots[i].getName();
|
||||
int index = name.lastIndexOf('_');
|
||||
if (index == -1) {
|
||||
result = boots[i].getAbsolutePath();
|
||||
i = boots.length;
|
||||
} else {
|
||||
if (index > 0) {
|
||||
String version = name.substring(index + 1);
|
||||
if (maxVersion == null) {
|
||||
result = boots[i].getAbsolutePath();
|
||||
maxVersion = version;
|
||||
}
|
||||
} else if (maxVersion.compareTo(version) == -1) {
|
||||
result = boots[i].getAbsolutePath();
|
||||
maxVersion = version;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (result == null)
|
||||
throw new RuntimeException(
|
||||
"Could not find bootstrap code. Check location of boot plug-in or specify -boot."); //$NON-NLS-1$
|
||||
return result.replace(File.separatorChar, '/') + "/"; //$NON-NLS-1$
|
||||
}
|
||||
if (result == null)
|
||||
throw new RuntimeException("Could not find bootstrap code. Check location of boot plug-in or specify -boot."); //$NON-NLS-1$
|
||||
return result.replace(File.separatorChar, '/') + "/"; //$NON-NLS-1$
|
||||
}
|
||||
/**
|
||||
* Returns the update loader for the given boot path.
|
||||
*
|
||||
* @return the update loader
|
||||
* @param base the boot path base
|
||||
* @exception Exception thrown is a problem occurs determining this loader
|
||||
*/
|
||||
public Class getUpdateLoader(String base) throws Exception {
|
||||
URLClassLoader loader = new URLClassLoader(getBootPath(base), null);
|
||||
return loader.loadClass(UPDATELOADER);
|
||||
}
|
||||
/**
|
||||
* Runs the platform with the given arguments. The arguments must identify
|
||||
* an application to run (e.g., <code>-application com.example.application</code>).
|
||||
* After running the application <code>System.exit(N)</code> is executed.
|
||||
* The value of N is derived from the value returned from running the application.
|
||||
* If the application's return value is an <code>Integer</code>, N is this value.
|
||||
* In all other cases, N = 0.
|
||||
* <p>
|
||||
* Clients wishing to run the platform without a following <code>System.exit</code>
|
||||
* call should use <code>run()</code>.
|
||||
*
|
||||
* @see #run
|
||||
*
|
||||
* @param args the command line arguments
|
||||
*/
|
||||
public static void main(String[] args) {
|
||||
Object result = null;
|
||||
try {
|
||||
result = new Main().run(args);
|
||||
} catch (Throwable e) {
|
||||
// try and take down the splash screen.
|
||||
endSplash();
|
||||
System.out.println("Exception launching the Eclipse Platform:"); //$NON-NLS-1$
|
||||
e.printStackTrace();
|
||||
}
|
||||
int exitCode = result instanceof Integer ? ((Integer) result).intValue() : 0;
|
||||
System.exit(exitCode);
|
||||
}
|
||||
/**
|
||||
* Tears down the currently-displayed splash screen.
|
||||
*/
|
||||
public static void endSplash() {
|
||||
if (endSplash == null)
|
||||
return;
|
||||
try {
|
||||
Runtime.getRuntime().exec(endSplash);
|
||||
} catch (Exception e) {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Runs this launcher with the arguments specified in the given string.
|
||||
*
|
||||
* @param argString the arguments string
|
||||
* @exception Exception thrown if a problem occurs during launching
|
||||
*/
|
||||
public static void main(String argString) throws Exception {
|
||||
Vector list = new Vector(5);
|
||||
for (StringTokenizer tokens = new StringTokenizer(argString, " "); tokens.hasMoreElements();) //$NON-NLS-1$
|
||||
list.addElement(tokens.nextElement());
|
||||
main((String[]) list.toArray(new String[list.size()]));
|
||||
}
|
||||
|
||||
/**
|
||||
* Processes the command line arguments
|
||||
*
|
||||
* @return the arguments to pass through to the launched application
|
||||
* @param args the command line arguments
|
||||
*/
|
||||
protected String[] processCommandLine(String[] args) throws Exception {
|
||||
int[] configArgs = new int[100];
|
||||
configArgs[0] = -1; // need to initialize the first element to something that could not be an index.
|
||||
int configArgIndex = 0;
|
||||
for (int i = 0; i < args.length; i++) {
|
||||
boolean found = false;
|
||||
// check for args without parameters (i.e., a flag arg)
|
||||
// check if debug should be enabled for the entire platform
|
||||
if (args[i].equalsIgnoreCase(DEBUG)) {
|
||||
debug = true;
|
||||
// passed thru this arg (i.e., do not set found = true
|
||||
continue;
|
||||
}
|
||||
|
||||
// check if development mode should be enabled for the entire platform
|
||||
// If this is the last arg or there is a following arg (i.e., arg+1 has a leading -),
|
||||
// simply enable development mode. Otherwise, assume that that the following arg is
|
||||
// actually some additional development time class path entries. This will be processed below.
|
||||
if (args[i].equalsIgnoreCase(DEV) && ((i + 1 == args.length) || ((i + 1 < args.length) && (args[i + 1].startsWith("-"))))) { //$NON-NLS-1$
|
||||
inDevelopmentMode = true;
|
||||
// do not mark the arg as found so it will be passed through
|
||||
continue;
|
||||
}
|
||||
|
||||
// done checking for args. Remember where an arg was found
|
||||
if (found) {
|
||||
configArgs[configArgIndex++] = i;
|
||||
continue;
|
||||
}
|
||||
// check for args with parameters. If we are at the last argument or if the next one
|
||||
// has a '-' as the first character, then we can't have an arg with a parm so continue.
|
||||
if (i == args.length - 1 || args[i + 1].startsWith("-")) //$NON-NLS-1$
|
||||
continue;
|
||||
String arg = args[++i];
|
||||
|
||||
// look for the laucher to run
|
||||
if (args[i - 1].equalsIgnoreCase(BOOT)) {
|
||||
bootLocation = arg;
|
||||
found = true;
|
||||
}
|
||||
|
||||
// look for the development mode and class path entries.
|
||||
if (args[i - 1].equalsIgnoreCase(DEV)) {
|
||||
inDevelopmentMode = true;
|
||||
devClassPath = arg;
|
||||
continue;
|
||||
}
|
||||
|
||||
// look for the application to run
|
||||
if (args[i - 1].equalsIgnoreCase(APPLICATION)) {
|
||||
application = arg;
|
||||
found = true;
|
||||
}
|
||||
|
||||
// look for token to use to end the splash screen
|
||||
if (args[i - 1].equalsIgnoreCase(ENDSPLASH)) {
|
||||
endSplash = arg;
|
||||
continue;
|
||||
}
|
||||
|
||||
// look for items to uninstall
|
||||
if (args[i - 1].equalsIgnoreCase(UNINSTALL)) {
|
||||
uninstall = true;
|
||||
uninstallCookie = arg;
|
||||
found = true;
|
||||
}
|
||||
|
||||
// done checking for args. Remember where an arg was found
|
||||
if (found) {
|
||||
configArgs[configArgIndex++] = i - 1;
|
||||
configArgs[configArgIndex++] = i;
|
||||
/**
|
||||
* Returns the update loader for the given boot path.
|
||||
*
|
||||
* @param base the boot path base
|
||||
* @return the update loader
|
||||
* @exception Exception thrown is a problem occurs determining this loader
|
||||
*/
|
||||
public Class<?> getUpdateLoader(String base) throws MalformedURLException, IOException, ClassNotFoundException {
|
||||
try (URLClassLoader loader = new URLClassLoader(getBootPath(base), null)) {
|
||||
return loader.loadClass(UPDATELOADER);
|
||||
}
|
||||
}
|
||||
// remove all the arguments consumed by this argument parsing
|
||||
if (configArgIndex == 0)
|
||||
return args;
|
||||
String[] passThruArgs = new String[args.length - configArgIndex];
|
||||
configArgIndex = 0;
|
||||
int j = 0;
|
||||
for (int i = 0; i < args.length; i++) {
|
||||
if (i == configArgs[configArgIndex])
|
||||
configArgIndex++;
|
||||
else
|
||||
passThruArgs[j++] = args[i];
|
||||
|
||||
/**
|
||||
* Runs the platform with the given arguments. The arguments must identify
|
||||
* an application to run (e.g., <code>-application com.example.application</code>).
|
||||
* After running the application <code>System.exit(N)</code> is executed.
|
||||
* The value of N is derived from the value returned from running the application.
|
||||
* If the application's return value is an <code>Integer</code>, N is this value.
|
||||
* In all other cases, N = 0.
|
||||
* <p>
|
||||
* Clients wishing to run the platform without a following
|
||||
* <code>System.exit</code> call should use <code>run()</code>.
|
||||
*
|
||||
* @param args the command line arguments
|
||||
*
|
||||
* @see #run
|
||||
*/
|
||||
public static void main(String[] args) {
|
||||
Object result = null;
|
||||
try {
|
||||
result = new Main().run(args);
|
||||
} catch (Throwable e) {
|
||||
// try and take down the splash screen.
|
||||
endSplash();
|
||||
System.out.println("Exception launching the Eclipse Platform:"); //$NON-NLS-1$
|
||||
e.printStackTrace();
|
||||
}
|
||||
int exitCode = result instanceof Integer ? ((Integer) result).intValue() : 0;
|
||||
System.exit(exitCode);
|
||||
}
|
||||
return passThruArgs;
|
||||
}
|
||||
/**
|
||||
* Runs the application to be launched.
|
||||
*
|
||||
* @return the return value from the launched application
|
||||
* @param args the arguments to pass to the application
|
||||
* @exception thrown if a problem occurs during launching
|
||||
*/
|
||||
public Object run(String[] args) throws Exception {
|
||||
String[] passThruArgs = processCommandLine(args);
|
||||
if (uninstall)
|
||||
return updateRun(UNINSTALL, uninstallCookie, passThruArgs);
|
||||
return basicRun(passThruArgs);
|
||||
}
|
||||
/**
|
||||
* Performs an update run.
|
||||
*
|
||||
* @return the return value from the update loader
|
||||
* @param flag flag to give to the update loader
|
||||
* @param value value to give to the update loader
|
||||
* @param args arguments to give to the update loader.
|
||||
* @exception Exception thrown if a problem occurs during execution
|
||||
*/
|
||||
protected Object updateRun(String flag, String value, String[] args) throws Exception {
|
||||
Class clazz = getUpdateLoader(bootLocation);
|
||||
Method method = clazz.getDeclaredMethod("run", new Class[] { String.class, String.class, String.class, String[].class }); //$NON-NLS-1$
|
||||
try {
|
||||
return method.invoke(clazz, new Object[] { flag, value, location, args });
|
||||
} catch (InvocationTargetException e) {
|
||||
if (e.getTargetException() instanceof Error)
|
||||
throw (Error) e.getTargetException();
|
||||
throw e;
|
||||
|
||||
/**
|
||||
* Tears down the currently-displayed splash screen.
|
||||
*/
|
||||
public static void endSplash() {
|
||||
if (endSplash == null)
|
||||
return;
|
||||
try {
|
||||
Runtime.getRuntime().exec(endSplash);
|
||||
} catch (Exception e) {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Runs this launcher with the arguments specified in the given string.
|
||||
*
|
||||
* @param argString the arguments string
|
||||
* @exception Exception thrown if a problem occurs during launching
|
||||
*/
|
||||
public static void main(String argString) throws Exception {
|
||||
Vector<Object> list = new Vector<Object>(5);
|
||||
for (StringTokenizer tokens = new StringTokenizer(argString, " "); tokens.hasMoreElements();) //$NON-NLS-1$
|
||||
list.addElement(tokens.nextElement());
|
||||
main(list.toArray(new String[list.size()]));
|
||||
}
|
||||
|
||||
/**
|
||||
* Processes the command line arguments
|
||||
*
|
||||
* @param args the command line arguments
|
||||
* @return the arguments to pass through to the launched application
|
||||
*/
|
||||
protected String[] processCommandLine(String[] args) throws Exception {
|
||||
int[] configArgs = new int[100];
|
||||
configArgs[0] = -1; // need to initialize the first element to something
|
||||
// that could not be an index.
|
||||
int configArgIndex = 0;
|
||||
for (int i = 0; i < args.length; i++) {
|
||||
boolean found = false;
|
||||
// check for args without parameters (i.e., a flag arg)
|
||||
// check if debug should be enabled for the entire platform
|
||||
if (args[i].equalsIgnoreCase(DEBUG)) {
|
||||
debug = true;
|
||||
// passed thru this arg (i.e., do not set found = true
|
||||
continue;
|
||||
}
|
||||
|
||||
// Check if development mode should be enabled for the entire platform.
|
||||
// If this is the last arg or there is a following arg (i.e., arg+1
|
||||
// has a leading -),
|
||||
// simply enable development mode. Otherwise, assume that that the
|
||||
// following arg is
|
||||
// actually some additional development time class path entries.
|
||||
// This will be processed below.
|
||||
if (args[i].equalsIgnoreCase(DEV)
|
||||
&& ((i + 1 == args.length) || ((i + 1 < args.length) && (args[i + 1].startsWith("-"))))) { //$NON-NLS-1$
|
||||
inDevelopmentMode = true;
|
||||
// do not mark the arg as found so it will be passed through
|
||||
continue;
|
||||
}
|
||||
|
||||
// done checking for args. Remember where an arg was found
|
||||
if (found) {
|
||||
configArgs[configArgIndex++] = i;
|
||||
continue;
|
||||
}
|
||||
// check for args with parameters. If we are at the last argument or
|
||||
// if the next one
|
||||
// has a '-' as the first character, then we can't have an arg with
|
||||
// a parm so continue.
|
||||
if (i == args.length - 1 || args[i + 1].startsWith("-")) //$NON-NLS-1$
|
||||
continue;
|
||||
String arg = args[++i];
|
||||
|
||||
// look for the laucher to run
|
||||
if (args[i - 1].equalsIgnoreCase(BOOT)) {
|
||||
bootLocation = arg;
|
||||
found = true;
|
||||
}
|
||||
|
||||
// look for the development mode and class path entries.
|
||||
if (args[i - 1].equalsIgnoreCase(DEV)) {
|
||||
inDevelopmentMode = true;
|
||||
devClassPath = arg;
|
||||
continue;
|
||||
}
|
||||
|
||||
// look for the application to run
|
||||
if (args[i - 1].equalsIgnoreCase(APPLICATION)) {
|
||||
application = arg;
|
||||
found = true;
|
||||
}
|
||||
|
||||
// look for token to use to end the splash screen
|
||||
if (args[i - 1].equalsIgnoreCase(ENDSPLASH)) {
|
||||
endSplash = arg;
|
||||
continue;
|
||||
}
|
||||
|
||||
// look for items to uninstall
|
||||
if (args[i - 1].equalsIgnoreCase(UNINSTALL)) {
|
||||
uninstall = true;
|
||||
uninstallCookie = arg;
|
||||
found = true;
|
||||
}
|
||||
|
||||
// done checking for args. Remember where an arg was found
|
||||
if (found) {
|
||||
configArgs[configArgIndex++] = i - 1;
|
||||
configArgs[configArgIndex++] = i;
|
||||
}
|
||||
}
|
||||
// remove all the arguments consumed by this argument parsing
|
||||
if (configArgIndex == 0)
|
||||
return args;
|
||||
String[] passThruArgs = new String[args.length - configArgIndex];
|
||||
configArgIndex = 0;
|
||||
int j = 0;
|
||||
for (int i = 0; i < args.length; i++) {
|
||||
if (i == configArgs[configArgIndex])
|
||||
configArgIndex++;
|
||||
else
|
||||
passThruArgs[j++] = args[i];
|
||||
}
|
||||
return passThruArgs;
|
||||
}
|
||||
|
||||
/**
|
||||
* Runs the application to be launched.
|
||||
*
|
||||
* @return the return value from the launched application
|
||||
* @param args the arguments to pass to the application
|
||||
* @exception Exception thrown if a problem occurs during launching
|
||||
*/
|
||||
public Object run(String[] args) throws Exception {
|
||||
String[] passThruArgs = processCommandLine(args);
|
||||
if (uninstall)
|
||||
return updateRun(UNINSTALL, uninstallCookie, passThruArgs);
|
||||
return basicRun(passThruArgs);
|
||||
}
|
||||
|
||||
/**
|
||||
* Performs an update run.
|
||||
*
|
||||
* @return the return value from the update loader
|
||||
* @param flag
|
||||
* flag to give to the update loader
|
||||
* @param value
|
||||
* value to give to the update loader
|
||||
* @param args
|
||||
* arguments to give to the update loader.
|
||||
* @exception Exception
|
||||
* thrown if a problem occurs during execution
|
||||
*/
|
||||
protected Object updateRun(String flag, String value, String[] args) throws Exception {
|
||||
Class<?> clazz = getUpdateLoader(bootLocation);
|
||||
Method method = clazz.getDeclaredMethod("run", //$NON-NLS-1$
|
||||
new Class[] { String.class, String.class, String.class, String[].class });
|
||||
try {
|
||||
return method.invoke(clazz, new Object[] { flag, value, location, args });
|
||||
} catch (InvocationTargetException e) {
|
||||
if (e.getTargetException() instanceof Error)
|
||||
throw (Error) e.getTargetException();
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* IBM - Initial API and implementation
|
||||
* IBM - Initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.cdt.ui.testplugin;
|
||||
|
||||
|
@ -14,19 +14,19 @@ import java.io.File;
|
|||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
import java.util.StringTokenizer;
|
||||
import java.util.Vector;
|
||||
|
||||
/**
|
||||
* Application is responsible for calling core launch api
|
||||
*/
|
||||
|
||||
public class NewMain extends Main {
|
||||
private static final String DEFAULT_APPLICATION= "org.eclipse.ui.workbench"; //$NON-NLS-1$
|
||||
|
||||
|
||||
public NewMain(String application, String location, URL pluginPathLocation, String bootLocation, boolean debug) throws IOException {
|
||||
|
||||
public NewMain(String application, String location, URL pluginPathLocation, String bootLocation, boolean debug)
|
||||
throws IOException {
|
||||
this.application= application;
|
||||
this.location= location;
|
||||
this.pluginPathLocation= pluginPathLocation;
|
||||
|
@ -44,17 +44,17 @@ public class NewMain extends Main {
|
|||
System.exit(0);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Run this launcher with the arguments specified in the given string.
|
||||
* Runs this launcher with the arguments specified in the given string.
|
||||
* This is a short cut method for people running the launcher from
|
||||
* a scrapbook (i.e., swip-and-doit facility).
|
||||
*/
|
||||
public static void main(String argString) throws Exception {
|
||||
Vector list= new Vector(5);
|
||||
for (StringTokenizer tokens= new StringTokenizer(argString, " "); tokens.hasMoreElements();) //$NON-NLS-1$
|
||||
list.addElement(tokens.nextElement());
|
||||
main((String[]) list.toArray(new String[list.size()]));
|
||||
List<String> list= new ArrayList<>(5);
|
||||
for (StringTokenizer tokens= new StringTokenizer(argString, " "); tokens.hasMoreElements();) { //$NON-NLS-1$
|
||||
list.add((String) tokens.nextElement());
|
||||
}
|
||||
main(list.toArray(new String[list.size()]));
|
||||
}
|
||||
|
||||
public static String getLocationFromProperties(String key) {
|
||||
|
|
|
@ -10,40 +10,29 @@
|
|||
*******************************************************************************/
|
||||
package org.eclipse.cdt.ui.testplugin.util;
|
||||
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
|
||||
public class AccessibilityTestPass implements IDialogTestPass {
|
||||
private static final int CHECKLIST_SIZE = 5;
|
||||
|
||||
/**
|
||||
* @see IDialogTestPass#title()
|
||||
*/
|
||||
@Override
|
||||
public String title() {
|
||||
return "Test Pass: Accessibility";
|
||||
}
|
||||
/**
|
||||
* @see IDialogTestPass#description()
|
||||
*/
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return "Verify the accessibility of the dialogs.";
|
||||
}
|
||||
/**
|
||||
* @see IDialogTestPass#label()
|
||||
*/
|
||||
|
||||
@Override
|
||||
public String label() {
|
||||
return "&Accessibility";
|
||||
}
|
||||
/**
|
||||
* @see IDialogTestPass#checkListTexts()
|
||||
*/
|
||||
|
||||
@Override
|
||||
public ArrayList checkListTexts() {
|
||||
ArrayList list = new ArrayList(CHECKLIST_SIZE);
|
||||
public ArrayList<String> checkListTexts() {
|
||||
ArrayList<String> list = new ArrayList<>(CHECKLIST_SIZE);
|
||||
list.add("&1) all widgets are accessible by tabbing.");
|
||||
list.add("&2) forwards and backwards tabbing is in a logical order");
|
||||
list.add("&3) all the widgets with labels have an appropriate mnemonic.");
|
||||
|
@ -51,11 +40,7 @@ public class AccessibilityTestPass implements IDialogTestPass {
|
|||
list.add("&5) selectable widgets can be selected using the spacebar.");
|
||||
return list;
|
||||
}
|
||||
/**
|
||||
* @see IDialogTestPass#failureTexts()
|
||||
* Size of the return array must be the same size as the checkListTexts'
|
||||
* ArrayList.
|
||||
*/
|
||||
|
||||
@Override
|
||||
public String[] failureTexts() {
|
||||
String[] failureText = new String[CHECKLIST_SIZE];
|
||||
|
@ -66,16 +51,12 @@ public class AccessibilityTestPass implements IDialogTestPass {
|
|||
failureText[4] = "Some widgets cannot be selected using the spacebar.";
|
||||
return failureText;
|
||||
}
|
||||
/**
|
||||
* @see IDialogTestPass#queryText()
|
||||
*/
|
||||
|
||||
@Override
|
||||
public String queryText() {
|
||||
return "Is the accessibility of the dialog acceptable?";
|
||||
}
|
||||
/**
|
||||
* @see IDialogTestPass#getID()
|
||||
*/
|
||||
|
||||
@Override
|
||||
public int getID() {
|
||||
return VerifyDialog.TEST_ACCESS;
|
||||
|
|
|
@ -19,12 +19,9 @@ import java.util.Stack;
|
|||
* in a structure/list, it will maintain a list of unfound/extra strings.
|
||||
*/
|
||||
public class ExpectedStrings {
|
||||
|
||||
public String [] expStrings;
|
||||
private boolean[] foundStrings;
|
||||
private Stack extraStrings; /* A stack of the unecpected strings we
|
||||
* recieved
|
||||
*/
|
||||
private Stack<String> extraStrings; // A stack of the unexpected strings we received
|
||||
private boolean extra;
|
||||
|
||||
/**
|
||||
|
@ -32,75 +29,71 @@ public class ExpectedStrings {
|
|||
*/
|
||||
public ExpectedStrings() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructor for ExpectedStrings that accepts a list of strings that
|
||||
* we expect to get.
|
||||
* Constructor for ExpectedStrings that accepts a list of strings that we expect to get.
|
||||
*/
|
||||
public ExpectedStrings(String[] values) {
|
||||
int x;
|
||||
expStrings=new String[values.length];
|
||||
for (x=0;x<values.length;x++) {
|
||||
expStrings[x]=values[x];
|
||||
for (int x = 0; x < values.length; x++) {
|
||||
expStrings[x] = values[x];
|
||||
}
|
||||
foundStrings=new boolean[values.length];
|
||||
for (x=0;x<values.length;x++) {
|
||||
foundStrings[x]=false;
|
||||
for (int x = 0; x < values.length; x++) {
|
||||
foundStrings[x] = false;
|
||||
}
|
||||
extraStrings=new Stack();
|
||||
extra=false;
|
||||
extraStrings = new Stack<>();
|
||||
extra = false;
|
||||
}
|
||||
|
||||
public int foundString(String current) {
|
||||
int x;
|
||||
for (x=0;x<expStrings.length;x++) {
|
||||
for (int x = 0; x < expStrings.length; x++) {
|
||||
if (current.equals(expStrings[x])) {
|
||||
foundStrings[x]=true;
|
||||
return(0);
|
||||
foundStrings[x] = true;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
/* If we arrive here, the strings was not found, so this is
|
||||
* and extra string
|
||||
*/
|
||||
|
||||
// If we arrive here, the strings was not found, so this is and extra string.
|
||||
extraStrings.push(current);
|
||||
extra= true;
|
||||
return 1;
|
||||
}
|
||||
|
||||
extraStrings.push(current);
|
||||
extra=true;
|
||||
return(1);
|
||||
}
|
||||
public int getNum(String name) {
|
||||
int x;
|
||||
for (x=0;x<expStrings.length;x++) {
|
||||
for (int x = 0; x < expStrings.length; x++) {
|
||||
if (name.equals(expStrings[x]))
|
||||
return(x);
|
||||
return x;
|
||||
}
|
||||
return(-1);
|
||||
return -1;
|
||||
}
|
||||
|
||||
public boolean gotAll() {
|
||||
int x;
|
||||
for (x=0;x<expStrings.length;x++) {
|
||||
if (foundStrings[x]==false)
|
||||
return(false);
|
||||
for (int x = 0; x < expStrings.length; x++) {
|
||||
if (!foundStrings[x])
|
||||
return false;
|
||||
}
|
||||
return(true);
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean gotExtra() {
|
||||
return(extra);
|
||||
return extra;
|
||||
}
|
||||
|
||||
public String getMissingString() {
|
||||
int x;
|
||||
String missing = "Missing elements: ";
|
||||
for (x=0;x<expStrings.length;x++) {
|
||||
if (foundStrings[x]==false)
|
||||
missing+=expStrings[x];
|
||||
missing+=" ";
|
||||
StringBuilder missing = new StringBuilder("Missing elements: ");
|
||||
for (int x = 0; x < expStrings.length; x++) {
|
||||
if (!foundStrings[x])
|
||||
missing.append(expStrings[x]).append(" ");
|
||||
}
|
||||
return(missing);
|
||||
return missing.toString();
|
||||
}
|
||||
|
||||
public String getExtraString() {
|
||||
String extra= "Extra elements: ";
|
||||
StringBuilder extra = new StringBuilder("Extra elements: ");
|
||||
while (!extraStrings.empty()) {
|
||||
extra+=extraStrings.pop();
|
||||
extra+=" ";
|
||||
extra.append(extraStrings.pop()).append(" ");
|
||||
}
|
||||
return(extra);
|
||||
return extra.toString();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,13 +13,11 @@ package org.eclipse.cdt.ui.testplugin.util;
|
|||
import java.util.ArrayList;
|
||||
|
||||
/*
|
||||
* This test pass verifies the initial focus of a dialog
|
||||
* when it is given focus.
|
||||
* This test pass verifies the initial focus of a dialog when it is given focus.
|
||||
*/
|
||||
public class FocusTestPass implements IDialogTestPass {
|
||||
private static final int CHECKLIST_SIZE = 1;
|
||||
|
||||
|
||||
/**
|
||||
* @see IDialogTestPass#title()
|
||||
*/
|
||||
|
@ -27,6 +25,7 @@ public class FocusTestPass implements IDialogTestPass {
|
|||
public String title() {
|
||||
return "Test Pass: Initial Focus";
|
||||
}
|
||||
|
||||
/**
|
||||
* @see IDialogTestPass#description()
|
||||
*/
|
||||
|
@ -34,22 +33,25 @@ public class FocusTestPass implements IDialogTestPass {
|
|||
public String description() {
|
||||
return "Verify the initial focus of the dialogs.";
|
||||
}
|
||||
|
||||
/**
|
||||
* @see IDialogTestPass#label()
|
||||
*/
|
||||
@Override
|
||||
public String label() {
|
||||
return "&Initial Focus";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @see IDialogTestPass#checkListTexts()
|
||||
*/
|
||||
@Override
|
||||
public ArrayList checkListTexts() {
|
||||
ArrayList list = new ArrayList(CHECKLIST_SIZE);
|
||||
public ArrayList<String> checkListTexts() {
|
||||
ArrayList<String> list = new ArrayList<>(CHECKLIST_SIZE);
|
||||
list.add("&1) the initial focus is appropriate.");
|
||||
return list;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see IDialogTestPass#failureTexts()
|
||||
* Size of the return array must be the same size as the checkListTexts'
|
||||
|
@ -61,6 +63,7 @@ public class FocusTestPass implements IDialogTestPass {
|
|||
failureText[0] = "The initial focus is inappropriate.";
|
||||
return failureText;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see IDialogTestPass#queryText()
|
||||
*/
|
||||
|
@ -68,6 +71,7 @@ public class FocusTestPass implements IDialogTestPass {
|
|||
public String queryText() {
|
||||
return "Is the initial focus of the dialog correct?";
|
||||
}
|
||||
|
||||
/**
|
||||
* @see IDialogTestPass#getID()
|
||||
*/
|
||||
|
|
|
@ -10,46 +10,50 @@
|
|||
*******************************************************************************/
|
||||
package org.eclipse.cdt.ui.testplugin.util;
|
||||
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
|
||||
/*
|
||||
* Interface to describe a visual test pass for a dialog test.
|
||||
*/
|
||||
public interface IDialogTestPass {
|
||||
/*
|
||||
/**
|
||||
* @return String The title of the test pass.
|
||||
*/
|
||||
public String title();
|
||||
/*
|
||||
|
||||
/**
|
||||
* @return String The description of the test pass.
|
||||
*/
|
||||
public String description();
|
||||
/*
|
||||
|
||||
/**
|
||||
* @return String The label of the test pass to be used
|
||||
* in a selection list. The return includes an '&'
|
||||
* if a mnemonic is desired.
|
||||
*/
|
||||
public String label();
|
||||
/*
|
||||
|
||||
/**
|
||||
* @return ArrayList A list of items to appear in a checklist.
|
||||
* The items in the list must be Strings and should include an
|
||||
* '&' if a mnemonic is desired.
|
||||
*/
|
||||
public ArrayList checkListTexts();
|
||||
/*
|
||||
public ArrayList<String> checkListTexts();
|
||||
|
||||
/**
|
||||
* @return String[] Associated failure messages that correspond
|
||||
* to the checklist items. The size of this array should be the
|
||||
* same size as the checklist.
|
||||
*/
|
||||
public String[] failureTexts();
|
||||
/*
|
||||
|
||||
/**
|
||||
* @return String The test that corresponds to the test pass to
|
||||
* which the tester will respond with a 'yes' or 'no'.
|
||||
*/
|
||||
public String queryText();
|
||||
/*
|
||||
|
||||
/**
|
||||
* @return int A unique number that identifies the test pass.
|
||||
*/
|
||||
public int getID();
|
||||
|
|
|
@ -10,10 +10,8 @@
|
|||
*******************************************************************************/
|
||||
package org.eclipse.cdt.ui.testplugin.util;
|
||||
|
||||
|
||||
import java.util.Iterator;
|
||||
|
||||
|
||||
import org.eclipse.jface.dialogs.Dialog;
|
||||
import org.eclipse.jface.dialogs.IDialogConstants;
|
||||
import org.eclipse.jface.dialogs.TitleAreaDialog;
|
||||
|
@ -32,8 +30,7 @@ import org.eclipse.swt.widgets.Group;
|
|||
import org.eclipse.swt.widgets.Label;
|
||||
import org.eclipse.swt.widgets.Shell;
|
||||
|
||||
|
||||
/*
|
||||
/**
|
||||
* This dialog is intended to verify a dialogs in a testing
|
||||
* environment. The tester can test for sizing, initial focus,
|
||||
* or accessibility.
|
||||
|
@ -41,7 +38,7 @@ import org.eclipse.swt.widgets.Shell;
|
|||
public class VerifyDialog extends TitleAreaDialog {
|
||||
private int SIZING_WIDTH = 400;
|
||||
|
||||
static int TEST_TYPE;
|
||||
static int TEST_TYPE;
|
||||
public static final int TEST_SIZING = 0;
|
||||
public static final int TEST_FOCUS = 1;
|
||||
public static final int TEST_ACCESS = 2;
|
||||
|
@ -57,8 +54,8 @@ public class VerifyDialog extends TitleAreaDialog {
|
|||
private Button _checkList[];
|
||||
private String _failureText;
|
||||
|
||||
/*
|
||||
* Create an instance of the verification dialog.
|
||||
/**
|
||||
* Creates an instance of the verification dialog.
|
||||
*/
|
||||
public VerifyDialog(Shell parent) {
|
||||
super(parent);
|
||||
|
@ -71,26 +68,19 @@ public class VerifyDialog extends TitleAreaDialog {
|
|||
_dialogTests[2] = new AccessibilityTestPass();
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* Method declared on Window.
|
||||
*/
|
||||
@Override
|
||||
protected void configureShell(Shell newShell) {
|
||||
super.configureShell(newShell);
|
||||
newShell.setText("Dialog Verification");
|
||||
setShellStyle(SWT.NONE);
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* Method declared on Dialog.
|
||||
*/
|
||||
|
||||
@Override
|
||||
protected void createButtonsForButtonBar(Composite parent) {
|
||||
_yesButton = createButton(parent, IDialogConstants.YES_ID, IDialogConstants.YES_LABEL, true);
|
||||
_noButton = createButton(parent, IDialogConstants.NO_ID, IDialogConstants.NO_LABEL, false);
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* Method declared on Dialog.
|
||||
*/
|
||||
|
||||
@Override
|
||||
protected void buttonPressed(int buttonId) {
|
||||
if (IDialogConstants.YES_ID == buttonId) {
|
||||
|
@ -103,15 +93,12 @@ public class VerifyDialog extends TitleAreaDialog {
|
|||
handleFailure();
|
||||
}
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* Method declared on Dialog.
|
||||
*/
|
||||
|
||||
@Override
|
||||
protected Control createDialogArea(Composite parent) {
|
||||
// top level composite
|
||||
Composite parentComposite = (Composite)super.createDialogArea(parent);
|
||||
|
||||
|
||||
// create a composite with standard margins and spacing
|
||||
Composite composite = new Composite(parentComposite, SWT.NONE);
|
||||
composite.setSize(SIZING_WIDTH, SWT.DEFAULT);
|
||||
|
@ -123,11 +110,9 @@ public class VerifyDialog extends TitleAreaDialog {
|
|||
composite.setLayout(layout);
|
||||
composite.setLayoutData(new GridData(GridData.FILL_BOTH));
|
||||
|
||||
|
||||
createTestSelectionGroup(composite);
|
||||
createCheckListGroup(composite);
|
||||
|
||||
|
||||
_queryLabel = new Label(composite, SWT.NONE);
|
||||
_queryLabel.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
|
||||
|
||||
|
@ -206,16 +191,17 @@ public class VerifyDialog extends TitleAreaDialog {
|
|||
}
|
||||
_yesButton.setEnabled(enable);
|
||||
}
|
||||
/*
|
||||
|
||||
/**
|
||||
* Initializes the checklist, banner texts, and query label
|
||||
*/
|
||||
void initializeTest() {
|
||||
IDialogTestPass test = _dialogTests[TEST_TYPE];
|
||||
setTitle( test.title() );
|
||||
setMessage( test.description() );
|
||||
Iterator iterator = test.checkListTexts().iterator();
|
||||
Iterator<String> iterator = test.checkListTexts().iterator();
|
||||
for (int i = 0; i < _checkList.length; i++) {
|
||||
if ( iterator.hasNext() ) {
|
||||
if (iterator.hasNext()) {
|
||||
_checkList[i].setText( iterator.next().toString() );
|
||||
_checkList[i].setVisible(true);
|
||||
_checkList[i].update();
|
||||
|
@ -227,21 +213,23 @@ public class VerifyDialog extends TitleAreaDialog {
|
|||
}
|
||||
_queryLabel.setText( test.queryText() );
|
||||
}
|
||||
|
||||
public String getFailureText() {
|
||||
return _failureText;
|
||||
}
|
||||
/*
|
||||
|
||||
/**
|
||||
* Can't open the verification dialog without a specified
|
||||
* test dialog, this simply returns a failure and prevents
|
||||
* opening. Should use open(Dialog) instead.
|
||||
*
|
||||
*/
|
||||
@Override
|
||||
public int open() {
|
||||
_failureText = "Testing dialog is required, use VerifyDialog::open(Dialog)";
|
||||
return IDialogConstants.NO_ID;
|
||||
}
|
||||
/*
|
||||
|
||||
/**
|
||||
* Opens the verification dialog to test the specified dialog.
|
||||
*/
|
||||
public int open(Dialog testDialog) {
|
||||
|
@ -259,7 +247,8 @@ public class VerifyDialog extends TitleAreaDialog {
|
|||
|
||||
return super.open();
|
||||
}
|
||||
/*
|
||||
|
||||
/**
|
||||
* Opens the dialog to be verified.
|
||||
*/
|
||||
private void openNewTestDialog() {
|
||||
|
@ -278,7 +267,8 @@ public class VerifyDialog extends TitleAreaDialog {
|
|||
});
|
||||
_testDialog.open();
|
||||
}
|
||||
/*
|
||||
|
||||
/**
|
||||
* The test dialog failed, open the failure dialog.
|
||||
*/
|
||||
private void handleFailure() {
|
||||
|
@ -287,10 +277,10 @@ public class VerifyDialog extends TitleAreaDialog {
|
|||
String label = test.label();
|
||||
label = label.substring(0, label.indexOf("&")) +
|
||||
label.substring(label.indexOf("&") + 1);
|
||||
text.append(label).
|
||||
append(" failed on the ").
|
||||
append(SWT.getPlatform()).
|
||||
append(" platform:\n");
|
||||
text.append(label)
|
||||
.append(" failed on the ")
|
||||
.append(SWT.getPlatform())
|
||||
.append(" platform:\n");
|
||||
|
||||
String failureMessages[] = test.failureTexts();
|
||||
for (int i = 0; i < test.checkListTexts().size(); i++) {
|
||||
|
@ -300,7 +290,6 @@ public class VerifyDialog extends TitleAreaDialog {
|
|||
}
|
||||
FailureDialog dialog = new FailureDialog( getShell() );
|
||||
dialog.create();
|
||||
//String temp = text.toString();
|
||||
dialog.setText( text.toString() );
|
||||
if (dialog.open() == IDialogConstants.OK_ID) {
|
||||
_failureText = dialog.toString();
|
||||
|
@ -311,9 +300,9 @@ public class VerifyDialog extends TitleAreaDialog {
|
|||
close();
|
||||
}
|
||||
}
|
||||
/*
|
||||
* In case the shell was closed by a means other than
|
||||
* the NO button.
|
||||
|
||||
/**
|
||||
* In case the shell was closed by a means other than the NO button.
|
||||
*/
|
||||
@Override
|
||||
protected void handleShellCloseEvent() {
|
||||
|
|
|
@ -4,12 +4,14 @@
|
|||
* 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:
|
||||
*
|
||||
* Contributors:
|
||||
* Intel Corporation - Initial API and implementation
|
||||
**********************************************************************/
|
||||
package org.eclipse.cdt.ui.tests.chelp;
|
||||
|
||||
import static org.eclipse.cdt.ui.tests.chelp.CHelpTest.fail;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
|
@ -17,101 +19,101 @@ import java.util.ArrayList;
|
|||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
|
||||
import junit.framework.Assert;
|
||||
import org.eclipse.core.runtime.IConfigurationElement;
|
||||
import org.eclipse.core.runtime.Platform;
|
||||
import org.eclipse.help.IHelpResource;
|
||||
import org.junit.Assert;
|
||||
|
||||
import org.eclipse.cdt.internal.ui.CHelpProviderManager;
|
||||
import org.eclipse.cdt.internal.ui.text.CHelpBookDescriptor;
|
||||
import org.eclipse.cdt.internal.ui.text.CHelpSettings;
|
||||
import org.eclipse.cdt.ui.CUIPlugin;
|
||||
import org.eclipse.cdt.ui.ICHelpBook;
|
||||
import org.eclipse.cdt.ui.ICHelpResourceDescriptor;
|
||||
import org.eclipse.cdt.ui.IFunctionSummary;
|
||||
import org.eclipse.cdt.ui.IRequiredInclude;
|
||||
import org.eclipse.cdt.ui.text.ICHelpInvocationContext;
|
||||
import org.eclipse.core.runtime.IConfigurationElement;
|
||||
import org.eclipse.core.runtime.Platform;
|
||||
import org.eclipse.help.IHelpResource;
|
||||
|
||||
import org.eclipse.cdt.internal.ui.CHelpProviderManager;
|
||||
import org.eclipse.cdt.internal.ui.text.CHelpBookDescriptor;
|
||||
import org.eclipse.cdt.internal.ui.text.CHelpSettings;
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
*/
|
||||
public class CHelpProviderTester{
|
||||
public class CHelpProviderTester {
|
||||
private static final String KEY_PROVIDER_ID = "providerID";
|
||||
private static final String KEY_REQUESTED_NAME = "requestedName";
|
||||
private static final String KEY_BOOK_TITLE = "bookTitle";
|
||||
private static final String KEY_BOOK_TYPE = "bookType";
|
||||
|
||||
|
||||
private Properties fProperties;
|
||||
private static CHelpProviderTester fDefaultInstance = null;
|
||||
|
||||
private CHelpProviderTester(){
|
||||
private static CHelpProviderTester fDefaultInstance;
|
||||
|
||||
private CHelpProviderTester() {
|
||||
}
|
||||
|
||||
public static CHelpProviderTester getDefault(){
|
||||
if(fDefaultInstance == null)
|
||||
|
||||
public static CHelpProviderTester getDefault() {
|
||||
if (fDefaultInstance == null)
|
||||
fDefaultInstance = new CHelpProviderTester();
|
||||
return fDefaultInstance;
|
||||
}
|
||||
|
||||
private class CHelpBook implements ICHelpBook{
|
||||
|
||||
private class CHelpBook implements ICHelpBook {
|
||||
private int fCHelpType;
|
||||
private String fTitle;
|
||||
|
||||
public CHelpBook(String providerID, int type){
|
||||
|
||||
public CHelpBook(String providerID, int type) {
|
||||
fCHelpType = type;
|
||||
fTitle = generateBookTitle(providerID,type);
|
||||
fTitle = generateBookTitle(providerID, type);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String getTitle(){
|
||||
public String getTitle() {
|
||||
return fTitle;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getCHelpType(){
|
||||
public int getCHelpType() {
|
||||
return fCHelpType;
|
||||
}
|
||||
}
|
||||
|
||||
private class CHelpResourceDescriptor implements ICHelpResourceDescriptor{
|
||||
|
||||
private class CHelpResourceDescriptor implements ICHelpResourceDescriptor {
|
||||
ICHelpBook fBook;
|
||||
String fString;
|
||||
String fLabel;
|
||||
String fHref;
|
||||
IHelpResource fResources[];
|
||||
|
||||
public CHelpResourceDescriptor(ICHelpBook helpBook, String string, String providerID){
|
||||
|
||||
public CHelpResourceDescriptor(ICHelpBook helpBook, String string, String providerID) {
|
||||
fBook = helpBook;
|
||||
fString = string;
|
||||
fHref = string + helpBook.getTitle() + ".html";
|
||||
fLabel = generateHelpString(helpBook, string, providerID);
|
||||
fResources = new IHelpResource[1];
|
||||
fResources[0] = new IHelpResource(){
|
||||
fResources[0] = new IHelpResource() {
|
||||
@Override
|
||||
public String getHref(){
|
||||
public String getHref() {
|
||||
return fHref;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String getLabel(){
|
||||
public String getLabel() {
|
||||
return fLabel;
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public ICHelpBook getCHelpBook(){
|
||||
public ICHelpBook getCHelpBook() {
|
||||
return fBook;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public IHelpResource[] getHelpResources(){
|
||||
public IHelpResource[] getHelpResources() {
|
||||
return fResources;
|
||||
}
|
||||
}
|
||||
|
||||
private class FunctionSummary implements IFunctionSummary {
|
||||
|
||||
private String fName = "Name";
|
||||
private String fReturnType = "ReturnType";
|
||||
private String fPrototype = "Prototype";
|
||||
|
@ -120,231 +122,231 @@ public class CHelpProviderTester{
|
|||
private IRequiredInclude[] incs = new IRequiredInclude[] { new RequiredInclude("dummy.h")};
|
||||
private class RequiredInclude implements IRequiredInclude {
|
||||
private String include;
|
||||
|
||||
|
||||
public RequiredInclude (String file) {
|
||||
include = file;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String getIncludeName() {
|
||||
return include;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean isStandard() {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public FunctionSummary(ICHelpBook helpBook, String string, String providerID){
|
||||
|
||||
public FunctionSummary(ICHelpBook helpBook, String string, String providerID) {
|
||||
fName = string;
|
||||
fSummary = generateHelpString(helpBook, string, providerID);
|
||||
}
|
||||
|
||||
public class FunctionPrototypeSummary implements IFunctionPrototypeSummary {
|
||||
@Override
|
||||
public String getName() { return fName; }
|
||||
public String getName() {
|
||||
return fName;
|
||||
}
|
||||
@Override
|
||||
public String getReturnType() { return fReturnType; }
|
||||
public String getReturnType() {
|
||||
return fReturnType;
|
||||
}
|
||||
@Override
|
||||
public String getArguments() { return fPrototype; }
|
||||
public String getArguments() {
|
||||
return fPrototype;
|
||||
}
|
||||
@Override
|
||||
public String getPrototypeString(boolean namefirst) {
|
||||
if (true == namefirst) {
|
||||
return fName + " (" + fPrototype + ") " + fReturnType;
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
return fReturnType + " " + fName + " (" + fPrototype + ")";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() { return fName; }
|
||||
public String getName() {
|
||||
return fName;
|
||||
}
|
||||
@Override
|
||||
public String getNamespace() { return "dummy namespace"; }
|
||||
public String getNamespace() {
|
||||
return "dummy namespace";
|
||||
}
|
||||
@Override
|
||||
public String getDescription() { return fSummary; }
|
||||
public String getDescription() {
|
||||
return fSummary;
|
||||
}
|
||||
@Override
|
||||
public IFunctionPrototypeSummary getPrototype() { return new FunctionPrototypeSummary(); }
|
||||
|
||||
public IFunctionPrototypeSummary getPrototype() {
|
||||
return new FunctionPrototypeSummary();
|
||||
}
|
||||
|
||||
@Override
|
||||
public IRequiredInclude[] getIncludes() {
|
||||
return incs;
|
||||
return incs;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private static String generateHelpString(ICHelpBook helpBook, String name, String providerID){
|
||||
private static String generateHelpString(ICHelpBook helpBook, String name, String providerID) {
|
||||
Properties props = new Properties();
|
||||
props.setProperty(KEY_PROVIDER_ID, providerID);
|
||||
props.setProperty(KEY_REQUESTED_NAME, name);
|
||||
props.setProperty(KEY_BOOK_TITLE, helpBook.getTitle());
|
||||
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
|
||||
try{
|
||||
props.store(outputStream,null);
|
||||
}
|
||||
catch(Exception e){
|
||||
try {
|
||||
props.store(outputStream, null);
|
||||
} catch (IOException e) {
|
||||
fail(e);
|
||||
}
|
||||
return outputStream.toString();
|
||||
}
|
||||
|
||||
private static String generateBookTitle(String providerID, int bookType){
|
||||
|
||||
private static String generateBookTitle(String providerID, int bookType) {
|
||||
Properties props = new Properties();
|
||||
props.setProperty(KEY_PROVIDER_ID, providerID);
|
||||
props.setProperty(KEY_BOOK_TYPE, String.valueOf(bookType));
|
||||
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
|
||||
try{
|
||||
props.store(outputStream,null);
|
||||
}
|
||||
catch(Exception e){
|
||||
try {
|
||||
props.store(outputStream, null);
|
||||
} catch (IOException e) {
|
||||
fail(e);
|
||||
}
|
||||
return outputStream.toString();
|
||||
}
|
||||
|
||||
private CHelpProviderTester(String string) throws IOException{
|
||||
private CHelpProviderTester(String string) {
|
||||
fProperties = new Properties();
|
||||
ByteArrayInputStream stream = new ByteArrayInputStream(string.getBytes());
|
||||
|
||||
try{
|
||||
try {
|
||||
fProperties.load(stream);
|
||||
}catch(IOException e){
|
||||
//TODO: handle
|
||||
throw e;
|
||||
} catch (IOException e) {
|
||||
fail(e);
|
||||
}
|
||||
}
|
||||
|
||||
private String getValueByKey(String key){
|
||||
|
||||
private String getValueByKey(String key) {
|
||||
String val = fProperties.getProperty(key);
|
||||
if(val == null)
|
||||
if (val == null)
|
||||
val = ""; //$NON-NLS-1$
|
||||
return val;
|
||||
}
|
||||
|
||||
private String getHelpProviderID(){
|
||||
|
||||
private String getHelpProviderID() {
|
||||
return getValueByKey(KEY_PROVIDER_ID);
|
||||
}
|
||||
|
||||
private String getRequestedName(){
|
||||
private String getRequestedName() {
|
||||
return getValueByKey(KEY_REQUESTED_NAME);
|
||||
}
|
||||
|
||||
private String getBookTitle(){
|
||||
private String getBookTitle() {
|
||||
return getValueByKey(KEY_BOOK_TITLE);
|
||||
}
|
||||
|
||||
public boolean onlyTestInfoProvidersAvailable(){
|
||||
IConfigurationElement configElements[] = Platform.getExtensionRegistry().getConfigurationElementsFor(CUIPlugin.PLUGIN_ID, CHelpSettings.CONTRIBUTION_EXTENSION);
|
||||
|
||||
public boolean onlyTestInfoProvidersAvailable() {
|
||||
IConfigurationElement configElements[] = Platform.getExtensionRegistry().getConfigurationElementsFor(
|
||||
CUIPlugin.PLUGIN_ID, CHelpSettings.CONTRIBUTION_EXTENSION);
|
||||
int numExts = 0;
|
||||
for(int i = 0; i < configElements.length; i++){
|
||||
for (int i = 0; i < configElements.length; i++) {
|
||||
String id = configElements[i].getAttribute("id");
|
||||
if(!id.startsWith(CHelpTest.TEST_EXTENSION_ID_PREFIX))
|
||||
if (!id.startsWith(CHelpTest.TEST_EXTENSION_ID_PREFIX))
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public ICHelpResourceDescriptor[] generateHelpResources(ICHelpBook[] helpBooks, String name, String providerID){
|
||||
public ICHelpResourceDescriptor[] generateHelpResources(ICHelpBook[] helpBooks, String name, String providerID) {
|
||||
ICHelpResourceDescriptor des[] = new ICHelpResourceDescriptor[helpBooks.length];
|
||||
for(int i = 0; i < helpBooks.length; i++){
|
||||
des[i] = new CHelpResourceDescriptor(helpBooks[i],name,providerID);
|
||||
for (int i = 0; i < helpBooks.length; i++) {
|
||||
des[i] = new CHelpResourceDescriptor(helpBooks[i], name, providerID);
|
||||
}
|
||||
return des;
|
||||
}
|
||||
|
||||
public IFunctionSummary generateFunctionInfo(ICHelpBook[] helpBooks, String name, String providerID){
|
||||
if(helpBooks.length == 0)
|
||||
|
||||
public IFunctionSummary generateFunctionInfo(ICHelpBook[] helpBooks, String name, String providerID) {
|
||||
if (helpBooks.length == 0)
|
||||
return null;
|
||||
return new FunctionSummary(helpBooks[0],name,providerID);
|
||||
return new FunctionSummary(helpBooks[0], name, providerID);
|
||||
}
|
||||
|
||||
public IFunctionSummary[] generateMatchingFunctions(ICHelpBook[] helpBooks, String prefix, String providerID){
|
||||
|
||||
public IFunctionSummary[] generateMatchingFunctions(ICHelpBook[] helpBooks, String prefix, String providerID) {
|
||||
IFunctionSummary sum[] = new IFunctionSummary[helpBooks.length];
|
||||
for(int i = 0; i < helpBooks.length; i++){
|
||||
sum[i] = new FunctionSummary(helpBooks[i],prefix,providerID);
|
||||
for (int i = 0; i < helpBooks.length; i++) {
|
||||
sum[i] = new FunctionSummary(helpBooks[i], prefix, providerID);
|
||||
}
|
||||
return sum;
|
||||
}
|
||||
|
||||
public ICHelpBook[] generateCHelpBooks(final String providerID){
|
||||
|
||||
public ICHelpBook[] generateCHelpBooks(final String providerID) {
|
||||
ICHelpBook books[] = new ICHelpBook[3];
|
||||
books[0] = new CHelpBook(providerID,ICHelpBook.HELP_TYPE_C);
|
||||
books[1] = new CHelpBook(providerID,ICHelpBook.HELP_TYPE_CPP);
|
||||
books[2] = new CHelpBook(providerID,ICHelpBook.HELP_TYPE_ASM);
|
||||
books[0] = new CHelpBook(providerID, ICHelpBook.HELP_TYPE_C);
|
||||
books[1] = new CHelpBook(providerID, ICHelpBook.HELP_TYPE_CPP);
|
||||
books[2] = new CHelpBook(providerID, ICHelpBook.HELP_TYPE_ASM);
|
||||
return books;
|
||||
}
|
||||
|
||||
private void checkResponse(CHelpProviderTester data[], ICHelpInvocationContext context, String name, boolean allBooksResponded){
|
||||
|
||||
private void checkResponse(CHelpProviderTester data[], ICHelpInvocationContext context, String name, boolean allBooksResponded) {
|
||||
CHelpBookDescriptor bookDes[] = CHelpProviderManager.getDefault().getCHelpBookDescriptors(context);
|
||||
for(int i = 0; i < data.length; i++){
|
||||
for (int i = 0; i < data.length; i++) {
|
||||
CHelpProviderTester tester = data[i];
|
||||
Assert.assertTrue("the name passed to CHelpProvider (" + tester.getRequestedName() + ") differs prom tha name passed to manager (" + name + ")",name.equals(tester.getRequestedName()));
|
||||
Assert.assertTrue("the name passed to CHelpProvider (" + tester.getRequestedName()
|
||||
+ ") differs prom tha name passed to manager (" + name + ")", name.equals(tester.getRequestedName()));
|
||||
String bookTitle = tester.getBookTitle();
|
||||
int j = 0;
|
||||
for(; j < bookDes.length; j++){
|
||||
if(bookTitle.equals(bookDes[j].getCHelpBook().getTitle())){
|
||||
Assert.assertTrue("provider was requested for help in disabled book",bookDes[j].isEnabled());
|
||||
for (; j < bookDes.length; j++) {
|
||||
if (bookTitle.equals(bookDes[j].getCHelpBook().getTitle())) {
|
||||
Assert.assertTrue("provider was requested for help in disabled book", bookDes[j].isEnabled());
|
||||
break;
|
||||
}
|
||||
}
|
||||
Assert.assertFalse("provider was requested for help in non-existent book",j == bookDes.length);
|
||||
Assert.assertFalse("provider was requested for help in non-existent book", j == bookDes.length);
|
||||
}
|
||||
|
||||
if(allBooksResponded){
|
||||
for(int i = 0; i < bookDes.length; i++){
|
||||
if(bookDes[i].isEnabled()){
|
||||
|
||||
if (allBooksResponded) {
|
||||
for (int i = 0; i < bookDes.length; i++) {
|
||||
if (bookDes[i].isEnabled()) {
|
||||
String bookTitle = bookDes[i].getCHelpBook().getTitle();
|
||||
int j = 0;
|
||||
for(; j < data.length; j++){
|
||||
if(bookTitle.equals(data[j].getBookTitle()))
|
||||
for (; j < data.length; j++) {
|
||||
if (bookTitle.equals(data[j].getBookTitle()))
|
||||
break;
|
||||
}
|
||||
Assert.assertFalse("provider was not requested for help in enabled book",j == bookDes.length);
|
||||
Assert.assertFalse("provider was not requested for help in enabled book", j == bookDes.length);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void checkHelpResources(ICHelpResourceDescriptor helpDescriptors[], ICHelpInvocationContext context, String name){
|
||||
if(helpDescriptors == null || helpDescriptors.length == 0)
|
||||
public void checkHelpResources(ICHelpResourceDescriptor helpDescriptors[], ICHelpInvocationContext context,
|
||||
String name) {
|
||||
if (helpDescriptors == null || helpDescriptors.length == 0)
|
||||
return;
|
||||
List dataList = new ArrayList(helpDescriptors.length);
|
||||
for(int i = 0; i < helpDescriptors.length; i++){
|
||||
try{
|
||||
dataList.add(new CHelpProviderTester(helpDescriptors[i].getHelpResources()[0].getLabel()));
|
||||
}catch(IOException e){
|
||||
Assert.fail("checkHelpResources failed to instantiate CHelpProviderTester, IOException occured: " + e.getMessage());
|
||||
}
|
||||
List<CHelpProviderTester> dataList = new ArrayList<>(helpDescriptors.length);
|
||||
for (int i = 0; i < helpDescriptors.length; i++) {
|
||||
dataList.add(new CHelpProviderTester(helpDescriptors[i].getHelpResources()[0].getLabel()));
|
||||
}
|
||||
if(dataList.size() > 0)
|
||||
checkResponse((CHelpProviderTester[])dataList.toArray(new CHelpProviderTester[dataList.size()]), context, name, true);
|
||||
if (!dataList.isEmpty())
|
||||
checkResponse(dataList.toArray(new CHelpProviderTester[dataList.size()]), context, name, true);
|
||||
}
|
||||
|
||||
public void checkMatchingFunctions(IFunctionSummary summaries[], ICHelpInvocationContext context, String name){
|
||||
if(summaries == null || summaries.length == 0)
|
||||
public void checkMatchingFunctions(IFunctionSummary summaries[], ICHelpInvocationContext context, String name) {
|
||||
if (summaries == null || summaries.length == 0)
|
||||
return;
|
||||
List dataList = new ArrayList(summaries.length);
|
||||
for(int i = 0; i < summaries.length; i++){
|
||||
try{
|
||||
dataList.add(new CHelpProviderTester(summaries[i].getDescription()));
|
||||
}catch(IOException e){
|
||||
Assert.fail("checkMatchingFunctions failed to instantiate CHelpProviderTester, IOException occured: " + e.getMessage());
|
||||
}
|
||||
List<CHelpProviderTester> dataList = new ArrayList<>(summaries.length);
|
||||
for (int i = 0; i < summaries.length; i++) {
|
||||
dataList.add(new CHelpProviderTester(summaries[i].getDescription()));
|
||||
}
|
||||
if(dataList.size() > 0)
|
||||
checkResponse((CHelpProviderTester[])dataList.toArray(new CHelpProviderTester[dataList.size()]), context, name, true);
|
||||
if (!dataList.isEmpty())
|
||||
checkResponse(dataList.toArray(new CHelpProviderTester[dataList.size()]), context, name, true);
|
||||
}
|
||||
|
||||
public void checkFunctionInfo(IFunctionSummary summary, ICHelpInvocationContext context, String name){
|
||||
if(summary == null)
|
||||
|
||||
public void checkFunctionInfo(IFunctionSummary summary, ICHelpInvocationContext context, String name) {
|
||||
if (summary == null)
|
||||
return;
|
||||
CHelpProviderTester data[] = new CHelpProviderTester[1];
|
||||
try{
|
||||
data[0] = new CHelpProviderTester(summary.getDescription());
|
||||
checkResponse(data, context, name, false);
|
||||
}catch(IOException e){
|
||||
Assert.fail("checkFunctionInfo failed to instantiate CHelpProviderTester, IOException occured: " + e.getMessage());
|
||||
}
|
||||
|
||||
data[0] = new CHelpProviderTester(summary.getDescription());
|
||||
checkResponse(data, context, name, false);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,14 +10,14 @@
|
|||
*******************************************************************************/
|
||||
package org.eclipse.cdt.ui.tests.chelp;
|
||||
|
||||
import junit.framework.Test;
|
||||
import junit.framework.TestCase;
|
||||
import junit.framework.TestSuite;
|
||||
import java.io.PrintWriter;
|
||||
import java.io.StringWriter;
|
||||
|
||||
import org.eclipse.core.resources.IProject;
|
||||
import org.eclipse.core.runtime.CoreException;
|
||||
import org.eclipse.core.runtime.IConfigurationElement;
|
||||
import org.eclipse.core.runtime.Platform;
|
||||
import org.junit.Assert;
|
||||
|
||||
import org.eclipse.cdt.core.dom.IPDOMManager;
|
||||
import org.eclipse.cdt.core.model.ICProject;
|
||||
|
@ -33,6 +33,10 @@ import org.eclipse.cdt.internal.ui.CHelpProviderManager;
|
|||
import org.eclipse.cdt.internal.ui.text.CHelpBookDescriptor;
|
||||
import org.eclipse.cdt.internal.ui.text.CHelpSettings;
|
||||
|
||||
import junit.framework.Test;
|
||||
import junit.framework.TestCase;
|
||||
import junit.framework.TestSuite;
|
||||
|
||||
/**
|
||||
*
|
||||
* CHelpProvider tests
|
||||
|
@ -49,15 +53,15 @@ public class CHelpTest extends TestCase {
|
|||
private ICHelpInvocationContext fDefaultCHelpContext = null;
|
||||
|
||||
private ICHelpInvocationContext getDefaultCCHelpContext() throws CoreException{
|
||||
if(fDefaultCCHelpContext == null){
|
||||
if (fDefaultCCHelpContext == null) {
|
||||
final IProject project = getCCProject().getProject();
|
||||
fDefaultCCHelpContext = new ICHelpInvocationContext(){
|
||||
fDefaultCCHelpContext = new ICHelpInvocationContext() {
|
||||
@Override
|
||||
public IProject getProject(){
|
||||
public IProject getProject() {
|
||||
return project;
|
||||
}
|
||||
@Override
|
||||
public ITranslationUnit getTranslationUnit(){
|
||||
public ITranslationUnit getTranslationUnit() {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
@ -66,15 +70,15 @@ public class CHelpTest extends TestCase {
|
|||
}
|
||||
|
||||
private ICHelpInvocationContext getDefaultCHelpContext() throws CoreException{
|
||||
if(fDefaultCHelpContext == null){
|
||||
if (fDefaultCHelpContext == null) {
|
||||
final IProject project = getCProject().getProject();
|
||||
fDefaultCHelpContext = new ICHelpInvocationContext(){
|
||||
fDefaultCHelpContext = new ICHelpInvocationContext() {
|
||||
@Override
|
||||
public IProject getProject(){
|
||||
public IProject getProject() {
|
||||
return project;
|
||||
}
|
||||
@Override
|
||||
public ITranslationUnit getTranslationUnit(){
|
||||
public ITranslationUnit getTranslationUnit() {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
@ -83,13 +87,13 @@ public class CHelpTest extends TestCase {
|
|||
}
|
||||
|
||||
private ICProject getCProject() throws CoreException{
|
||||
if(fCProject == null)
|
||||
if (fCProject == null)
|
||||
fCProject = CProjectHelper.createCProject(C_PROJECT_NAME, BIN_DIR_NAME, IPDOMManager.ID_NO_INDEXER);
|
||||
return fCProject;
|
||||
}
|
||||
|
||||
private ICProject getCCProject() throws CoreException{
|
||||
if(fCCProject == null)
|
||||
if (fCCProject == null)
|
||||
fCCProject = CProjectHelper.createCCProject(CC_PROJECT_NAME, BIN_DIR_NAME, IPDOMManager.ID_NO_INDEXER);
|
||||
return fCCProject;
|
||||
}
|
||||
|
@ -110,14 +114,14 @@ public class CHelpTest extends TestCase {
|
|||
super.tearDown();
|
||||
}
|
||||
|
||||
public void testCHelpProviderManagerGeneral(){
|
||||
public void testCHelpProviderManagerGeneral() {
|
||||
CHelpProviderManager mngr = CHelpProviderManager.getDefault();
|
||||
if(mngr == null)
|
||||
if (mngr == null)
|
||||
fail("manager not created"); //$NON-NLS-1$
|
||||
if(mngr != CHelpProviderManager.getDefault())
|
||||
if (mngr != CHelpProviderManager.getDefault())
|
||||
fail("getDefault returned an other instance of manager"); //$NON-NLS-1$
|
||||
|
||||
try{
|
||||
try {
|
||||
ICHelpInvocationContext cContext = getDefaultCHelpContext();
|
||||
ICHelpInvocationContext ccContext = getDefaultCCHelpContext();
|
||||
|
||||
|
@ -133,116 +137,120 @@ public class CHelpTest extends TestCase {
|
|||
|
||||
IConfigurationElement configElements[] = Platform.getExtensionRegistry().getConfigurationElementsFor(CUIPlugin.PLUGIN_ID, CHelpSettings.CONTRIBUTION_EXTENSION);
|
||||
int numExts = 0;
|
||||
for(int i = 0; i < configElements.length; i++){
|
||||
for (int i = 0; i < configElements.length; i++) {
|
||||
String id = configElements[i].getAttribute("id"); //$NON-NLS-1$
|
||||
if(id.startsWith(TEST_EXTENSION_ID_PREFIX))
|
||||
numExts++;
|
||||
}
|
||||
|
||||
assertTrue("number of provider instances created (" + CHelpTestInfoProvider.getNumProviders() + ") is not equal to number of extensions (" + numExts + ")",numExts == CHelpTestInfoProvider.getNumProviders()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
|
||||
}catch(CoreException e){
|
||||
fail("CoreException occured: " + e.getMessage()); //$NON-NLS-1$
|
||||
} catch (CoreException e) {
|
||||
fail(e);
|
||||
}
|
||||
}
|
||||
|
||||
public void testGetMatchingFunctions(){
|
||||
if(!CHelpProviderTester.getDefault().onlyTestInfoProvidersAvailable()){
|
||||
public void testGetMatchingFunctions() {
|
||||
if (!CHelpProviderTester.getDefault().onlyTestInfoProvidersAvailable()) {
|
||||
//this test assumes that only CHelpTestInfoProviders are available
|
||||
return;
|
||||
}
|
||||
try{
|
||||
try {
|
||||
ICHelpInvocationContext cContext = getDefaultCHelpContext();
|
||||
ICHelpInvocationContext ccContext = getDefaultCCHelpContext();
|
||||
|
||||
String requestedName = "dummyName"; //$NON-NLS-1$
|
||||
IFunctionSummary summaries[] = CHelpProviderManager.getDefault().getMatchingFunctions(cContext,requestedName);
|
||||
IFunctionSummary summaries[] = CHelpProviderManager.getDefault().getMatchingFunctions(cContext, requestedName);
|
||||
CHelpProviderTester.getDefault().checkMatchingFunctions(summaries, cContext, requestedName);
|
||||
|
||||
summaries = CHelpProviderManager.getDefault().getMatchingFunctions(ccContext,requestedName);
|
||||
summaries = CHelpProviderManager.getDefault().getMatchingFunctions(ccContext, requestedName);
|
||||
CHelpProviderTester.getDefault().checkMatchingFunctions(summaries, ccContext, requestedName);
|
||||
}
|
||||
catch(CoreException e){
|
||||
fail("CoreException occured: " + e.getMessage()); //$NON-NLS-1$
|
||||
} catch (CoreException e) {
|
||||
fail(e);
|
||||
}
|
||||
}
|
||||
|
||||
public void testGetFunctionInfo(){
|
||||
if(!CHelpProviderTester.getDefault().onlyTestInfoProvidersAvailable()){
|
||||
//this test assumes that only CHelpTestInfoProviders are available
|
||||
public void testGetFunctionInfo() {
|
||||
if (!CHelpProviderTester.getDefault().onlyTestInfoProvidersAvailable()) {
|
||||
// This test assumes that only CHelpTestInfoProviders are available.
|
||||
return;
|
||||
}
|
||||
try{
|
||||
try {
|
||||
ICHelpInvocationContext cContext = getDefaultCHelpContext();
|
||||
ICHelpInvocationContext ccContext = getDefaultCCHelpContext();
|
||||
|
||||
String requestedName = "dummyName"; //$NON-NLS-1$
|
||||
IFunctionSummary summary = CHelpProviderManager.getDefault().getFunctionInfo(cContext,requestedName);
|
||||
IFunctionSummary summary = CHelpProviderManager.getDefault().getFunctionInfo(cContext, requestedName);
|
||||
CHelpProviderTester.getDefault().checkFunctionInfo(summary, cContext, requestedName);
|
||||
|
||||
summary = CHelpProviderManager.getDefault().getFunctionInfo(ccContext,requestedName);
|
||||
summary = CHelpProviderManager.getDefault().getFunctionInfo(ccContext, requestedName);
|
||||
CHelpProviderTester.getDefault().checkFunctionInfo(summary, ccContext, requestedName);
|
||||
}
|
||||
catch(CoreException e){
|
||||
} catch (CoreException e) {
|
||||
fail("CoreException occured: " + e.getMessage()); //$NON-NLS-1$
|
||||
}
|
||||
}
|
||||
|
||||
public void testGetHelpResources(){
|
||||
if(!CHelpProviderTester.getDefault().onlyTestInfoProvidersAvailable()){
|
||||
public void testGetHelpResources() {
|
||||
if (!CHelpProviderTester.getDefault().onlyTestInfoProvidersAvailable()) {
|
||||
//this test assumes that only CHelpTestInfoProviders are available
|
||||
return;
|
||||
}
|
||||
try{
|
||||
try {
|
||||
ICHelpInvocationContext cContext = getDefaultCHelpContext();
|
||||
ICHelpInvocationContext ccContext = getDefaultCCHelpContext();
|
||||
|
||||
String requestedName = "dummyName"; //$NON-NLS-1$
|
||||
ICHelpResourceDescriptor resourceDes[] = CHelpProviderManager.getDefault().getHelpResources(cContext,requestedName);
|
||||
ICHelpResourceDescriptor resourceDes[] = CHelpProviderManager.getDefault().getHelpResources(cContext, requestedName);
|
||||
CHelpProviderTester.getDefault().checkHelpResources(resourceDes, cContext, requestedName);
|
||||
|
||||
resourceDes = CHelpProviderManager.getDefault().getHelpResources(ccContext,requestedName);
|
||||
resourceDes = CHelpProviderManager.getDefault().getHelpResources(ccContext, requestedName);
|
||||
CHelpProviderTester.getDefault().checkHelpResources(resourceDes, ccContext, requestedName);
|
||||
}
|
||||
catch(CoreException e){
|
||||
} catch (CoreException e) {
|
||||
fail("CoreException occured: " + e.getMessage()); //$NON-NLS-1$
|
||||
}
|
||||
}
|
||||
|
||||
public void testCHelpBookDescriptors(){
|
||||
public void testCHelpBookDescriptors() {
|
||||
CHelpProviderManager mngr = CHelpProviderManager.getDefault();
|
||||
|
||||
try{
|
||||
try {
|
||||
CHelpBookDescriptor ccBookDescriptors[] = mngr.getCHelpBookDescriptors(getDefaultCCHelpContext());
|
||||
CHelpBookDescriptor cBookDescriptors[] = mngr.getCHelpBookDescriptors(getDefaultCHelpContext());
|
||||
|
||||
assertTrue("CC book descriptors length (" + ccBookDescriptors.length + ") is less than C book descriptors length (" + cBookDescriptors.length + ")", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
|
||||
ccBookDescriptors.length >= cBookDescriptors.length);
|
||||
|
||||
for(int i = 0; i < cBookDescriptors.length; i++){
|
||||
for (int i = 0; i < cBookDescriptors.length; i++) {
|
||||
CHelpBookDescriptor curBookDes = cBookDescriptors[i];
|
||||
assertTrue("book \"" + curBookDes.getCHelpBook().getTitle() + "\" of type HELP_TYPE_CPP in book descriptors for C project \"" + getDefaultCHelpContext().getProject().getName() + "\"", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
|
||||
curBookDes.getCHelpBook().getCHelpType() != ICHelpBook.HELP_TYPE_CPP);
|
||||
int j = 0;
|
||||
for(; j < ccBookDescriptors.length; j++){
|
||||
if(ccBookDescriptors[j].getCHelpBook().getTitle().equals(curBookDes.getCHelpBook().getTitle()))
|
||||
for (; j < ccBookDescriptors.length; j++) {
|
||||
if (ccBookDescriptors[j].getCHelpBook().getTitle().equals(curBookDes.getCHelpBook().getTitle()))
|
||||
break;
|
||||
}
|
||||
assertTrue("book \"" + curBookDes.getCHelpBook().getTitle() + "\" was not found in CC books",j < ccBookDescriptors.length); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
assertTrue("book \"" + curBookDes.getCHelpBook().getTitle() + "\" was not found in CC books", j < ccBookDescriptors.length); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
}
|
||||
|
||||
for(int i = 0; i < ccBookDescriptors.length; i++){
|
||||
for (int i = 0; i < ccBookDescriptors.length; i++) {
|
||||
CHelpBookDescriptor curBookDes = ccBookDescriptors[i];
|
||||
int j = 0;
|
||||
for(; j < cBookDescriptors.length; j++){
|
||||
for (; j < cBookDescriptors.length; j++) {
|
||||
if(cBookDescriptors[j].getCHelpBook().getTitle().equals(curBookDes.getCHelpBook().getTitle()))
|
||||
break;
|
||||
}
|
||||
assertTrue("book \"" + curBookDes.getCHelpBook().getTitle() + "\" of type HELP_TYPE_C was not found in C books", //$NON-NLS-1$ //$NON-NLS-2$
|
||||
j < cBookDescriptors.length || curBookDes.getCHelpBook().getCHelpType() == ICHelpBook.HELP_TYPE_CPP);
|
||||
}
|
||||
}
|
||||
catch(CoreException e){
|
||||
} catch (CoreException e) {
|
||||
fail("CoreException occured: " + e.getMessage()); //$NON-NLS-1$
|
||||
}
|
||||
}
|
||||
|
||||
static void fail(Throwable t) {
|
||||
StringWriter stringWriter = new StringWriter();
|
||||
PrintWriter printWriter = new PrintWriter(stringWriter);
|
||||
printWriter.println(t);
|
||||
t.printStackTrace(printWriter);
|
||||
Assert.fail(stringWriter.toString());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
**********************************************************************/
|
||||
package org.eclipse.cdt.ui.tests.chelp;
|
||||
|
||||
import junit.framework.Assert;
|
||||
import org.junit.Assert;
|
||||
|
||||
import org.eclipse.cdt.ui.ICHelpBook;
|
||||
import org.eclipse.cdt.ui.ICHelpProvider;
|
||||
|
@ -19,15 +19,14 @@ import org.eclipse.cdt.ui.IFunctionSummary;
|
|||
import org.eclipse.cdt.ui.text.ICHelpInvocationContext;
|
||||
|
||||
/**
|
||||
*
|
||||
* this class implements ICHelpProvider and provides test information
|
||||
* This class implements ICHelpProvider and provides test information
|
||||
*/
|
||||
public class CHelpTestInfoProvider implements ICHelpProvider {
|
||||
private static int fNumProviders = 0;
|
||||
private static final String PROVIDER_ID_PREFIX = "TestInfoProvider_";
|
||||
|
||||
final private String fProviderID;
|
||||
private boolean fIsInitialized = false;
|
||||
private boolean fIsInitialized;
|
||||
|
||||
private ICHelpBook fCHelpBooks[];
|
||||
|
||||
|
@ -37,27 +36,21 @@ public class CHelpTestInfoProvider implements ICHelpProvider {
|
|||
*/
|
||||
static boolean fgEnabled= false;
|
||||
|
||||
public CHelpTestInfoProvider(){
|
||||
public CHelpTestInfoProvider() {
|
||||
fProviderID = PROVIDER_ID_PREFIX + fNumProviders++;
|
||||
fCHelpBooks = CHelpProviderTester.getDefault().generateCHelpBooks(fProviderID);
|
||||
}
|
||||
|
||||
public static int getNumProviders(){
|
||||
public static int getNumProviders() {
|
||||
return fNumProviders;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.ui.ICHelpProvider#initialize()
|
||||
*/
|
||||
@Override
|
||||
public void initialize() {
|
||||
Assert.assertFalse("initialize is called several times",fIsInitialized);
|
||||
Assert.assertFalse("initialize is called several times", fIsInitialized);
|
||||
fIsInitialized = true;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.ui.ICHelpProvider#getCHelpBooks()
|
||||
*/
|
||||
@Override
|
||||
public ICHelpBook[] getCHelpBooks() {
|
||||
if (!fgEnabled) {
|
||||
|
@ -67,22 +60,15 @@ public class CHelpTestInfoProvider implements ICHelpProvider {
|
|||
return fCHelpBooks;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.ui.ICHelpProvider#getFunctionInfo(org.eclipse.cdt.ui.text.ICHelpInvocationContext, org.eclipse.cdt.ui.ICHelpBook[], java.lang.String)
|
||||
*/
|
||||
@Override
|
||||
public IFunctionSummary getFunctionInfo(ICHelpInvocationContext context,
|
||||
ICHelpBook[] helpBooks, String name) {
|
||||
public IFunctionSummary getFunctionInfo(ICHelpInvocationContext context, ICHelpBook[] helpBooks, String name) {
|
||||
if (!fgEnabled) {
|
||||
return null;
|
||||
}
|
||||
Assert.assertTrue("getFunctionInfo is called before completion contributor gets initialized",fIsInitialized);
|
||||
return CHelpProviderTester.getDefault().generateFunctionInfo(helpBooks,name,fProviderID);
|
||||
return CHelpProviderTester.getDefault().generateFunctionInfo(helpBooks, name, fProviderID);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.ui.ICHelpProvider#getMatchingFunctions(org.eclipse.cdt.ui.text.ICHelpInvocationContext, org.eclipse.cdt.ui.ICHelpBook[], java.lang.String)
|
||||
*/
|
||||
@Override
|
||||
public IFunctionSummary[] getMatchingFunctions(
|
||||
ICHelpInvocationContext context, ICHelpBook[] helpBooks,
|
||||
|
@ -90,21 +76,18 @@ public class CHelpTestInfoProvider implements ICHelpProvider {
|
|||
if (!fgEnabled) {
|
||||
return new IFunctionSummary[0];
|
||||
}
|
||||
Assert.assertTrue("getMatchingFunctions is called before completion contributor gets initialized",fIsInitialized);
|
||||
Assert.assertTrue("getMatchingFunctions is called before completion contributor gets initialized", fIsInitialized);
|
||||
return null; // TODO returning null until someone puts in a preference to control it.
|
||||
//return CHelpProviderTester.getDefault().generateMatchingFunctions(helpBooks,prefix,fProviderID);
|
||||
//return CHelpProviderTester.getDefault().generateMatchingFunctions(helpBooks, prefix, fProviderID);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.ui.ICHelpProvider#getHelpResources(org.eclipse.cdt.ui.text.ICHelpInvocationContext, org.eclipse.cdt.ui.ICHelpBook[], java.lang.String)
|
||||
*/
|
||||
@Override
|
||||
public ICHelpResourceDescriptor[] getHelpResources(
|
||||
ICHelpInvocationContext context, ICHelpBook[] helpBooks, String name) {
|
||||
public ICHelpResourceDescriptor[] getHelpResources(ICHelpInvocationContext context, ICHelpBook[] helpBooks,
|
||||
String name) {
|
||||
if (!fgEnabled) {
|
||||
return new ICHelpResourceDescriptor[0];
|
||||
}
|
||||
Assert.assertTrue("getHelpResources is called before completion contributor gets initialized",fIsInitialized);
|
||||
return CHelpProviderTester.getDefault().generateHelpResources(helpBooks,name,fProviderID);
|
||||
Assert.assertTrue("getHelpResources is called before completion contributor gets initialized", fIsInitialized);
|
||||
return CHelpProviderTester.getDefault().generateHelpResources(helpBooks, name, fProviderID);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue