diff --git a/core/org.eclipse.cdt.ui.tests/ChangeLog b/core/org.eclipse.cdt.ui.tests/ChangeLog index e342e03d6cb..3975942c7ba 100644 --- a/core/org.eclipse.cdt.ui.tests/ChangeLog +++ b/core/org.eclipse.cdt.ui.tests/ChangeLog @@ -1,3 +1,9 @@ +2004-11-08 Mikhail Voronin + New tests for help extension. + * ui/org/eclipse/cdt/ui/tests/chelp/CHelpProviderTester.java + * ui/org/eclipse/cdt/ui/tests/chelp/CHelpTest.java + * ui/org/eclipse/cdt/ui/tests/chelp/CHelpTestInfoProvider.java + 2004-11-02 Tanya Wolff added content assist regression tests *ui.tests.text.contentassist/ContentAssistRegressionTests.java diff --git a/core/org.eclipse.cdt.ui.tests/plugin.xml b/core/org.eclipse.cdt.ui.tests/plugin.xml index bbc2e810cc4..945a8c0814e 100644 --- a/core/org.eclipse.cdt.ui.tests/plugin.xml +++ b/core/org.eclipse.cdt.ui.tests/plugin.xml @@ -21,7 +21,22 @@ + + + + + + + + diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/chelp/CHelpProviderTester.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/chelp/CHelpProviderTester.java new file mode 100644 index 00000000000..784502180e3 --- /dev/null +++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/chelp/CHelpProviderTester.java @@ -0,0 +1,332 @@ +/********************************************************************** + * Copyright (c) 2004 Intel Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * Intel Corporation - Initial API and implementation + **********************************************************************/ +package org.eclipse.cdt.ui.tests.chelp; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Properties; + +import junit.framework.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; + +/** + * + */ +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(){ + } + + public static CHelpProviderTester getDefault(){ + if(fDefaultInstance == null) + fDefaultInstance = new CHelpProviderTester(); + return fDefaultInstance; + } + + private class CHelpBook implements ICHelpBook{ + private int fCHelpType; + private String fTitle; + + public CHelpBook(String providerID, int type){ + fCHelpType = type; + fTitle = generateBookTitle(providerID,type); + } + + public String getTitle(){ + return fTitle; + } + + public int getCHelpType(){ + return fCHelpType; + } + } + + private class CHelpResourceDescriptor implements ICHelpResourceDescriptor{ + ICHelpBook fBook; + String fString; + String fLabel; + String fHref; + IHelpResource fResources[]; + + 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(){ + public String getHref(){ + return fHref; + } + + public String getLabel(){ + return fLabel; + } + }; + } + + public ICHelpBook getCHelpBook(){ + return fBook; + } + + public IHelpResource[] getHelpResources(){ + return fResources; + } + } + + private class FunctionSummary implements IFunctionSummary { + + private String fName = "Name"; + private String fReturnType = "ReturnType"; + private String fPrototype = "Prototype"; + private String fSummary = "Summary"; + private String fSynopsis = "Synopsis"; + private class RequiredInclude implements IRequiredInclude { + private String include; + + public RequiredInclude (String file) { + include = file; + } + + public String getIncludeName() { + return include; + } + + public boolean isStandard() { + return true; + } + } + + public FunctionSummary(ICHelpBook helpBook, String string, String providerID){ + fName = string; + fSummary = generateHelpString(helpBook, string, providerID); + } + + public class FunctionPrototypeSummary implements IFunctionPrototypeSummary { + public String getName() { return fName; } + public String getReturnType() { return fReturnType; } + public String getArguments() { return fPrototype; } + public String getPrototypeString(boolean namefirst) { + if (true == namefirst) { + return fName + " (" + fPrototype + ") " + fReturnType; + } + else { + return fReturnType + " " + fName + " (" + fPrototype + ")"; + } + } + } + + public String getName() { return fName; } + public String getNamespace() { return "dummy namespace"; } + public String getDescription() { return fSummary; } + public IFunctionPrototypeSummary getPrototype() { return new FunctionPrototypeSummary(); } + + public IRequiredInclude[] getIncludes() { + return (IRequiredInclude[])null; + } + + } + + 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){ + } + return outputStream.toString(); + } + + 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){ + } + return outputStream.toString(); + } + + private CHelpProviderTester(String string) throws IOException{ + fProperties = new Properties(); + ByteArrayInputStream stream = new ByteArrayInputStream(string.getBytes()); + + try{ + fProperties.load(stream); + }catch(IOException e){ + //TODO: handle + throw e; + } + } + + private String getValueByKey(String key){ + String val = fProperties.getProperty(key); + if(val == null) + val = new String(); + return val; + } + + private String getHelpProviderID(){ + return getValueByKey(KEY_PROVIDER_ID); + } + + private String getRequestedName(){ + return getValueByKey(KEY_REQUESTED_NAME); + } + + private String getBookTitle(){ + return getValueByKey(KEY_BOOK_TITLE); + } + + 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++){ + String id = configElements[i].getAttribute("id"); + if(!id.startsWith(CHelpTest.TEST_EXTENSION_ID_PREFIX)) + return false; + } + return true; + } + + 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); + } + return des; + } + + public IFunctionSummary generateFunctionInfo(ICHelpBook[] helpBooks, String name, String providerID){ + if(helpBooks.length == 0) + return null; + return new FunctionSummary(helpBooks[0],name,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); + } + return sum; + } + + 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); + return books; + } + + 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++){ + 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())); + 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()); + break; + } + } + 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()){ + String bookTitle = bookDes[i].getCHelpBook().getTitle(); + int j = 0; + 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); + } + } + } + } + + 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()); + } + } + if(dataList.size() > 0) + checkResponse((CHelpProviderTester[])dataList.toArray(new CHelpProviderTester[dataList.size()]), context, name, true); + } + + 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()); + } + } + if(dataList.size() > 0) + checkResponse((CHelpProviderTester[])dataList.toArray(new CHelpProviderTester[dataList.size()]), context, name, true); + } + + 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()); + } + + } +} diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/chelp/CHelpTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/chelp/CHelpTest.java new file mode 100644 index 00000000000..d4946ed1bcc --- /dev/null +++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/chelp/CHelpTest.java @@ -0,0 +1,229 @@ +/********************************************************************** + * Copyright (c) 2004 Intel Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * Intel Corporation - Initial API and implementation + **********************************************************************/ +package org.eclipse.cdt.ui.tests.chelp; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +import org.eclipse.cdt.core.model.ICProject; +import org.eclipse.cdt.core.model.ITranslationUnit; +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.testplugin.CProjectHelper; +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.text.ICHelpInvocationContext; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IConfigurationElement; +import org.eclipse.core.runtime.Platform; + +/** + * + * CHelpProvider tests + */ +public class CHelpTest extends TestCase { + public final static String TEST_EXTENSION_ID_PREFIX = "org.eclipse.cdt.ui.tests.chelp.extension"; + private final static String C_PROJECT_NAME = "cHelpTestProject"; + private final static String CC_PROJECT_NAME = "ccHelpTestProject"; + private final static String BIN_DIR_NAME = "bin"; + + private ICProject fCProject = null; + private ICProject fCCProject = null; + private ICHelpInvocationContext fDefaultCCHelpContext = null; + private ICHelpInvocationContext fDefaultCHelpContext = null; + + private ICHelpInvocationContext getDefaultCCHelpContext() throws CoreException{ + if(fDefaultCCHelpContext == null){ + final IProject project = getCCProject().getProject(); + fDefaultCCHelpContext = new ICHelpInvocationContext(){ + public IProject getProject(){ + return project; + } + public ITranslationUnit getTranslationUnit(){ + return null; + } + }; + } + return fDefaultCCHelpContext; + } + + private ICHelpInvocationContext getDefaultCHelpContext() throws CoreException{ + if(fDefaultCHelpContext == null){ + final IProject project = getCProject().getProject(); + fDefaultCHelpContext = new ICHelpInvocationContext(){ + public IProject getProject(){ + return project; + } + public ITranslationUnit getTranslationUnit(){ + return null; + } + }; + } + return fDefaultCHelpContext; + } + + private ICProject getCProject() throws CoreException{ + if(fCProject == null) + fCProject = CProjectHelper.createCProject(C_PROJECT_NAME, BIN_DIR_NAME); + return fCProject; + } + + private ICProject getCCProject() throws CoreException{ + if(fCCProject == null) + fCCProject = CProjectHelper.createCCProject(CC_PROJECT_NAME, BIN_DIR_NAME); + return fCCProject; + } + + public static Test suite() { + return new TestSuite(CHelpTest.class); + } + + public void testCHelpProviderManagerGeneral(){ + CHelpProviderManager mngr = CHelpProviderManager.getDefault(); + if(mngr == null) + fail("manager not created"); + if(mngr != CHelpProviderManager.getDefault()) + fail("getDefault returned an other instance of manager"); + + try{ + ICHelpInvocationContext cContext = getDefaultCHelpContext(); + ICHelpInvocationContext ccContext = getDefaultCCHelpContext(); + + String requestedName = "dummyName"; + CHelpProviderManager.getDefault().getMatchingFunctions(cContext,requestedName); + CHelpProviderManager.getDefault().getMatchingFunctions(ccContext,requestedName); + + CHelpProviderManager.getDefault().getFunctionInfo(cContext,requestedName); + CHelpProviderManager.getDefault().getFunctionInfo(ccContext,requestedName); + + CHelpProviderManager.getDefault().getHelpResources(cContext,requestedName); + CHelpProviderManager.getDefault().getHelpResources(ccContext,requestedName); + + IConfigurationElement configElements[] = Platform.getExtensionRegistry().getConfigurationElementsFor(CUIPlugin.PLUGIN_ID, CHelpSettings.CONTRIBUTION_EXTENSION); + int numExts = 0; + for(int i = 0; i < configElements.length; i++){ + String id = configElements[i].getAttribute("id"); + 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()); + }catch(CoreException e){ + fail("CoreException occured: " + e.getMessage()); + } + } + + public void testGetMatchingFunctions(){ + if(!CHelpProviderTester.getDefault().onlyTestInfoProvidersAvailable()){ + //this test assumes that only CHelpTestInfoProviders are available + return; + } + try{ + ICHelpInvocationContext cContext = getDefaultCHelpContext(); + ICHelpInvocationContext ccContext = getDefaultCCHelpContext(); + + String requestedName = "dummyName"; + IFunctionSummary summaries[] = CHelpProviderManager.getDefault().getMatchingFunctions(cContext,requestedName); + CHelpProviderTester.getDefault().checkMatchingFunctions(summaries, cContext, requestedName); + + summaries = CHelpProviderManager.getDefault().getMatchingFunctions(ccContext,requestedName); + CHelpProviderTester.getDefault().checkMatchingFunctions(summaries, ccContext, requestedName); + } + catch(CoreException e){ + fail("CoreException occured: " + e.getMessage()); + } + } + + public void testGetFunctionInfo(){ + if(!CHelpProviderTester.getDefault().onlyTestInfoProvidersAvailable()){ + //this test assumes that only CHelpTestInfoProviders are available + return; + } + try{ + ICHelpInvocationContext cContext = getDefaultCHelpContext(); + ICHelpInvocationContext ccContext = getDefaultCCHelpContext(); + + String requestedName = "dummyName"; + IFunctionSummary summary = CHelpProviderManager.getDefault().getFunctionInfo(cContext,requestedName); + CHelpProviderTester.getDefault().checkFunctionInfo(summary, cContext, requestedName); + + summary = CHelpProviderManager.getDefault().getFunctionInfo(ccContext,requestedName); + CHelpProviderTester.getDefault().checkFunctionInfo(summary, ccContext, requestedName); + } + catch(CoreException e){ + fail("CoreException occured: " + e.getMessage()); + } + } + + public void testGetHelpResources(){ + if(!CHelpProviderTester.getDefault().onlyTestInfoProvidersAvailable()){ + //this test assumes that only CHelpTestInfoProviders are available + return; + } + try{ + ICHelpInvocationContext cContext = getDefaultCHelpContext(); + ICHelpInvocationContext ccContext = getDefaultCCHelpContext(); + + String requestedName = "dummyName"; + ICHelpResourceDescriptor resourceDes[] = CHelpProviderManager.getDefault().getHelpResources(cContext,requestedName); + CHelpProviderTester.getDefault().checkHelpResources(resourceDes, cContext, requestedName); + + resourceDes = CHelpProviderManager.getDefault().getHelpResources(ccContext,requestedName); + CHelpProviderTester.getDefault().checkHelpResources(resourceDes, ccContext, requestedName); + } + catch(CoreException e){ + fail("CoreException occured: " + e.getMessage()); + } + } + + public void testCHelpBookDescriptors(){ + CHelpProviderManager mngr = CHelpProviderManager.getDefault(); + + 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 + ")", + ccBookDescriptors.length >= cBookDescriptors.length); + + 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() + "\"", + curBookDes.getCHelpBook().getCHelpType() != ICHelpBook.HELP_TYPE_CPP); + int j = 0; + 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); + } + + for(int i = 0; i < ccBookDescriptors.length; i++){ + CHelpBookDescriptor curBookDes = ccBookDescriptors[i]; + int j = 0; + 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", + j < cBookDescriptors.length || curBookDes.getCHelpBook().getCHelpType() == ICHelpBook.HELP_TYPE_CPP); + } + } + catch(CoreException e){ + fail("CoreException occured: " + e.getMessage()); + } + } +} diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/chelp/CHelpTestInfoProvider.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/chelp/CHelpTestInfoProvider.java new file mode 100644 index 00000000000..5150ec8583e --- /dev/null +++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/chelp/CHelpTestInfoProvider.java @@ -0,0 +1,86 @@ +/********************************************************************** + * Copyright (c) 2004 Intel Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * Intel Corporation - Initial API and implementation + **********************************************************************/ +package org.eclipse.cdt.ui.tests.chelp; + +import junit.framework.Assert; + +import org.eclipse.cdt.ui.ICHelpBook; +import org.eclipse.cdt.ui.ICHelpProvider; +import org.eclipse.cdt.ui.ICHelpResourceDescriptor; +import org.eclipse.cdt.ui.IFunctionSummary; +import org.eclipse.cdt.ui.text.ICHelpInvocationContext; + +/** + * + * 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 ICHelpBook fCHelpBooks[]; + + public CHelpTestInfoProvider(){ + fProviderID = PROVIDER_ID_PREFIX + fNumProviders++; + fCHelpBooks = CHelpProviderTester.getDefault().generateCHelpBooks(fProviderID); + } + + public static int getNumProviders(){ + return fNumProviders; + } + + /* (non-Javadoc) + * @see org.eclipse.cdt.ui.ICHelpProvider#initialize() + */ + public void initialize() { + Assert.assertFalse("initialize is called several times",fIsInitialized); + fIsInitialized = true; + } + + /* (non-Javadoc) + * @see org.eclipse.cdt.ui.ICHelpProvider#getCHelpBooks() + */ + public ICHelpBook[] getCHelpBooks() { + Assert.assertTrue("getCHelpBooks is called before completion contributor gets initialized",fIsInitialized); + 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) + */ + public IFunctionSummary getFunctionInfo(ICHelpInvocationContext context, + ICHelpBook[] helpBooks, String name) { + Assert.assertTrue("getFunctionInfo is called before completion contributor gets initialized",fIsInitialized); + 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) + */ + public IFunctionSummary[] getMatchingFunctions( + ICHelpInvocationContext context, ICHelpBook[] helpBooks, + String prefix) { + Assert.assertTrue("getMatchingFunctions is called before completion contributor gets initialized",fIsInitialized); + 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) + */ + public ICHelpResourceDescriptor[] getHelpResources( + ICHelpInvocationContext context, ICHelpBook[] helpBooks, String name) { + Assert.assertTrue("getHelpResources is called before completion contributor gets initialized",fIsInitialized); + return CHelpProviderTester.getDefault().generateHelpResources(helpBooks,name,fProviderID); + } +}