1
/*******************************************************************************
2
* Copyright (c) 2004, 2008 Intel Corporation and others.
3
* All rights reserved. This program and the accompanying materials
4
* are made available under the terms of the Eclipse Public License v1.0
5
* which accompanies this distribution, and is available at
6
* http://www.eclipse.org/legal/epl-v10.html
9
* Intel Corporation - Initial API and implementation
10
*******************************************************************************/
11
package org.eclipse.cdt.ui.tests.chelp;
13
import junit.framework.Test;
14
import junit.framework.TestCase;
15
import junit.framework.TestSuite;
17
import org.eclipse.core.resources.IProject;
18
import org.eclipse.core.runtime.CoreException;
19
import org.eclipse.core.runtime.IConfigurationElement;
20
import org.eclipse.core.runtime.Platform;
22
import org.eclipse.cdt.core.dom.IPDOMManager;
23
import org.eclipse.cdt.core.model.ICProject;
24
import org.eclipse.cdt.core.model.ITranslationUnit;
25
import org.eclipse.cdt.core.testplugin.CProjectHelper;
26
import org.eclipse.cdt.ui.CUIPlugin;
27
import org.eclipse.cdt.ui.ICHelpBook;
28
import org.eclipse.cdt.ui.ICHelpResourceDescriptor;
29
import org.eclipse.cdt.ui.IFunctionSummary;
30
import org.eclipse.cdt.ui.text.ICHelpInvocationContext;
32
import org.eclipse.cdt.internal.ui.CHelpProviderManager;
33
import org.eclipse.cdt.internal.ui.text.CHelpBookDescriptor;
34
import org.eclipse.cdt.internal.ui.text.CHelpSettings;
40
public class CHelpTest extends TestCase {
41
public final static String TEST_EXTENSION_ID_PREFIX = "org.eclipse.cdt.ui.tests.chelp.extension"; //$NON-NLS-1$
42
private final static String C_PROJECT_NAME = "cHelpTestProject"; //$NON-NLS-1$
43
private final static String CC_PROJECT_NAME = "ccHelpTestProject"; //$NON-NLS-1$
44
private final static String BIN_DIR_NAME = "bin"; //$NON-NLS-1$
46
private ICProject fCProject = null;
47
private ICProject fCCProject = null;
48
private ICHelpInvocationContext fDefaultCCHelpContext = null;
49
private ICHelpInvocationContext fDefaultCHelpContext = null;
51
private ICHelpInvocationContext getDefaultCCHelpContext() throws CoreException{
52
if(fDefaultCCHelpContext == null){
53
final IProject project = getCCProject().getProject();
54
fDefaultCCHelpContext = new ICHelpInvocationContext(){
55
public IProject getProject(){
58
public ITranslationUnit getTranslationUnit(){
63
return fDefaultCCHelpContext;
66
private ICHelpInvocationContext getDefaultCHelpContext() throws CoreException{
67
if(fDefaultCHelpContext == null){
68
final IProject project = getCProject().getProject();
69
fDefaultCHelpContext = new ICHelpInvocationContext(){
70
public IProject getProject(){
73
public ITranslationUnit getTranslationUnit(){
78
return fDefaultCHelpContext;
81
private ICProject getCProject() throws CoreException{
83
fCProject = CProjectHelper.createCProject(C_PROJECT_NAME, BIN_DIR_NAME, IPDOMManager.ID_NO_INDEXER);
87
private ICProject getCCProject() throws CoreException{
88
if(fCCProject == null)
89
fCCProject = CProjectHelper.createCCProject(CC_PROJECT_NAME, BIN_DIR_NAME, IPDOMManager.ID_NO_INDEXER);
93
public static Test suite() {
94
return new TestSuite(CHelpTest.class);
98
protected void setUp() throws Exception {
100
CHelpTestInfoProvider.fgEnabled= true;
104
protected void tearDown() throws Exception {
105
CHelpTestInfoProvider.fgEnabled= false;
109
public void testCHelpProviderManagerGeneral(){
110
CHelpProviderManager mngr = CHelpProviderManager.getDefault();
112
fail("manager not created"); //$NON-NLS-1$
113
if(mngr != CHelpProviderManager.getDefault())
114
fail("getDefault returned an other instance of manager"); //$NON-NLS-1$
117
ICHelpInvocationContext cContext = getDefaultCHelpContext();
118
ICHelpInvocationContext ccContext = getDefaultCCHelpContext();
120
String requestedName = "dummyName"; //$NON-NLS-1$
121
CHelpProviderManager.getDefault().getMatchingFunctions(cContext,requestedName);
122
CHelpProviderManager.getDefault().getMatchingFunctions(ccContext,requestedName);
124
CHelpProviderManager.getDefault().getFunctionInfo(cContext,requestedName);
125
CHelpProviderManager.getDefault().getFunctionInfo(ccContext,requestedName);
127
CHelpProviderManager.getDefault().getHelpResources(cContext,requestedName);
128
CHelpProviderManager.getDefault().getHelpResources(ccContext,requestedName);
130
IConfigurationElement configElements[] = Platform.getExtensionRegistry().getConfigurationElementsFor(CUIPlugin.PLUGIN_ID, CHelpSettings.CONTRIBUTION_EXTENSION);
132
for(int i = 0; i < configElements.length; i++){
133
String id = configElements[i].getAttribute("id"); //$NON-NLS-1$
134
if(id.startsWith(TEST_EXTENSION_ID_PREFIX))
138
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$
139
}catch(CoreException e){
140
fail("CoreException occured: " + e.getMessage()); //$NON-NLS-1$
144
public void testGetMatchingFunctions(){
145
if(!CHelpProviderTester.getDefault().onlyTestInfoProvidersAvailable()){
146
//this test assumes that only CHelpTestInfoProviders are available
150
ICHelpInvocationContext cContext = getDefaultCHelpContext();
151
ICHelpInvocationContext ccContext = getDefaultCCHelpContext();
153
String requestedName = "dummyName"; //$NON-NLS-1$
154
IFunctionSummary summaries[] = CHelpProviderManager.getDefault().getMatchingFunctions(cContext,requestedName);
155
CHelpProviderTester.getDefault().checkMatchingFunctions(summaries, cContext, requestedName);
157
summaries = CHelpProviderManager.getDefault().getMatchingFunctions(ccContext,requestedName);
158
CHelpProviderTester.getDefault().checkMatchingFunctions(summaries, ccContext, requestedName);
160
catch(CoreException e){
161
fail("CoreException occured: " + e.getMessage()); //$NON-NLS-1$
165
public void testGetFunctionInfo(){
166
if(!CHelpProviderTester.getDefault().onlyTestInfoProvidersAvailable()){
167
//this test assumes that only CHelpTestInfoProviders are available
171
ICHelpInvocationContext cContext = getDefaultCHelpContext();
172
ICHelpInvocationContext ccContext = getDefaultCCHelpContext();
174
String requestedName = "dummyName"; //$NON-NLS-1$
175
IFunctionSummary summary = CHelpProviderManager.getDefault().getFunctionInfo(cContext,requestedName);
176
CHelpProviderTester.getDefault().checkFunctionInfo(summary, cContext, requestedName);
178
summary = CHelpProviderManager.getDefault().getFunctionInfo(ccContext,requestedName);
179
CHelpProviderTester.getDefault().checkFunctionInfo(summary, ccContext, requestedName);
181
catch(CoreException e){
182
fail("CoreException occured: " + e.getMessage()); //$NON-NLS-1$
186
public void testGetHelpResources(){
187
if(!CHelpProviderTester.getDefault().onlyTestInfoProvidersAvailable()){
188
//this test assumes that only CHelpTestInfoProviders are available
192
ICHelpInvocationContext cContext = getDefaultCHelpContext();
193
ICHelpInvocationContext ccContext = getDefaultCCHelpContext();
195
String requestedName = "dummyName"; //$NON-NLS-1$
196
ICHelpResourceDescriptor resourceDes[] = CHelpProviderManager.getDefault().getHelpResources(cContext,requestedName);
197
CHelpProviderTester.getDefault().checkHelpResources(resourceDes, cContext, requestedName);
199
resourceDes = CHelpProviderManager.getDefault().getHelpResources(ccContext,requestedName);
200
CHelpProviderTester.getDefault().checkHelpResources(resourceDes, ccContext, requestedName);
202
catch(CoreException e){
203
fail("CoreException occured: " + e.getMessage()); //$NON-NLS-1$
207
public void testCHelpBookDescriptors(){
208
CHelpProviderManager mngr = CHelpProviderManager.getDefault();
211
CHelpBookDescriptor ccBookDescriptors[] = mngr.getCHelpBookDescriptors(getDefaultCCHelpContext());
212
CHelpBookDescriptor cBookDescriptors[] = mngr.getCHelpBookDescriptors(getDefaultCHelpContext());
214
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$
215
ccBookDescriptors.length >= cBookDescriptors.length);
217
for(int i = 0; i < cBookDescriptors.length; i++){
218
CHelpBookDescriptor curBookDes = cBookDescriptors[i];
219
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$
220
curBookDes.getCHelpBook().getCHelpType() != ICHelpBook.HELP_TYPE_CPP);
222
for(; j < ccBookDescriptors.length; j++){
223
if(ccBookDescriptors[j].getCHelpBook().getTitle().equals(curBookDes.getCHelpBook().getTitle()))
226
assertTrue("book \"" + curBookDes.getCHelpBook().getTitle() + "\" was not found in CC books",j < ccBookDescriptors.length); //$NON-NLS-1$ //$NON-NLS-2$
229
for(int i = 0; i < ccBookDescriptors.length; i++){
230
CHelpBookDescriptor curBookDes = ccBookDescriptors[i];
232
for(; j < cBookDescriptors.length; j++){
233
if(cBookDescriptors[j].getCHelpBook().getTitle().equals(curBookDes.getCHelpBook().getTitle()))
236
assertTrue("book \"" + curBookDes.getCHelpBook().getTitle() + "\" of type HELP_TYPE_C was not found in C books", //$NON-NLS-1$ //$NON-NLS-2$
237
j < cBookDescriptors.length || curBookDes.getCHelpBook().getCHelpType() == ICHelpBook.HELP_TYPE_CPP);
240
catch(CoreException e){
241
fail("CoreException occured: " + e.getMessage()); //$NON-NLS-1$