/*******************************************************************************
* Copyright (c) 2006, 2012 Wind River Systems, Inc. and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Markus Schorn - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.ui.tests.includebrowser;
import junit.framework.Test;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeItem;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.dom.IPDOMManager;
import org.eclipse.cdt.core.model.ICProject;
import org.eclipse.cdt.core.testplugin.CProjectHelper;
import org.eclipse.cdt.core.testplugin.TestScannerProvider;
public class BasicIncludeBrowserTest extends IncludeBrowserBaseTest {
public BasicIncludeBrowserTest(String name) {
super(name);
}
public static Test suite() {
return suite(BasicIncludeBrowserTest.class);
}
// // source
// #include "user.h"
// #include <system.h>
// #include "user.h"
public void testSimpleInclusion() throws Exception {
TestScannerProvider.sIncludes= new String[] { getProject().getProject().getLocation().toOSString() };
StringBuilder[] contents= getContentsForTest(1);
IProject project= getProject().getProject();
IFile user= createFile(project, "user.h", "");
IFile system= createFile(project, "system.h", "");
IFile source= createFile(project, "source.cpp", contents[0].toString());
waitUntilFileIsIndexed(fIndex, source);
openIncludeBrowser(source);
Tree tree = getIBTree();
TreeItem node = checkTreeNode(tree, 0, "source.cpp");
checkTreeNode(tree, 0, 0, "user.h");
checkTreeNode(tree, 0, 1, "system.h");
assertEquals(2, node.getItemCount());
// The tree has to be reversed
openIncludeBrowser(user, true);
checkTreeNode(tree, 0, "user.h");
checkTreeNode(tree, 0, 0, "source.cpp");
openIncludeBrowser(system);
checkTreeNode(tree, 0, "system.h");
checkTreeNode(tree, 0, 0, "source.cpp");
}
// // source
// #include "user.h"
// #include <system.h>
public void testInclusionAccrossProjects() throws Exception {
ICProject op= CProjectHelper.createCCProject("__ibTest_other__", "bin", IPDOMManager.ID_FAST_INDEXER);
try {
fIndex= CCorePlugin.getIndexManager().getIndex(new ICProject[] { getProject(), op });
TestScannerProvider.sIncludes= new String[] { op.getProject().getLocation().toOSString() };
StringBuilder[] contents= getContentsForTest(1);
IFile user= createFile(op.getProject(), "user.h", "");
IFile system= createFile(op.getProject(), "system.h", "");
IFile source= createFile(getProject().getProject(), "source.cpp", contents[0].toString());
CCorePlugin.getIndexManager().reindex(op);
waitForIndexer(op);
openIncludeBrowser(source);
Tree tree = getIBTree();
checkTreeNode(tree, 0, "source.cpp");
checkTreeNode(tree, 0, 0, "user.h");
checkTreeNode(tree, 0, 1, "system.h");
// The tree has to be reversed
openIncludeBrowser(user, true);
checkTreeNode(tree, 0, "user.h");
checkTreeNode(tree, 0, 0, "source.cpp");
openIncludeBrowser(system);
checkTreeNode(tree, 0, "system.h");
checkTreeNode(tree, 0, 0, "source.cpp");
} finally {
CProjectHelper.delete(op);
}
}
}