mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-23 17:05:26 +02:00
179322: add unit test
This commit is contained in:
parent
9961b8c3ff
commit
6c3076579d
3 changed files with 53 additions and 0 deletions
|
@ -16,6 +16,9 @@ import java.io.ByteArrayInputStream;
|
|||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import junit.framework.TestSuite;
|
||||
|
@ -44,7 +47,9 @@ import org.eclipse.cdt.core.index.IIndexMacro;
|
|||
import org.eclipse.cdt.core.index.IIndexName;
|
||||
import org.eclipse.cdt.core.index.IndexFilter;
|
||||
import org.eclipse.cdt.core.index.IndexLocationFactory;
|
||||
import org.eclipse.cdt.core.model.CoreModel;
|
||||
import org.eclipse.cdt.core.model.ICProject;
|
||||
import org.eclipse.cdt.core.model.IPathEntry;
|
||||
import org.eclipse.cdt.core.model.ITranslationUnit;
|
||||
import org.eclipse.cdt.core.testplugin.CProjectHelper;
|
||||
import org.eclipse.cdt.core.testplugin.CTestPlugin;
|
||||
|
@ -53,10 +58,12 @@ import org.eclipse.cdt.core.testplugin.util.BaseTestCase;
|
|||
import org.eclipse.cdt.core.testplugin.util.TestSourceReader;
|
||||
import org.eclipse.core.resources.IContainer;
|
||||
import org.eclipse.core.resources.IFile;
|
||||
import org.eclipse.core.resources.IFolder;
|
||||
import org.eclipse.core.resources.IProject;
|
||||
import org.eclipse.core.resources.IProjectDescription;
|
||||
import org.eclipse.core.resources.IResource;
|
||||
import org.eclipse.core.runtime.CoreException;
|
||||
import org.eclipse.core.runtime.FileLocator;
|
||||
import org.eclipse.core.runtime.NullProgressMonitor;
|
||||
import org.eclipse.core.runtime.Path;
|
||||
|
||||
|
@ -537,6 +544,48 @@ public class IndexBugsTests extends BaseTestCase {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Linked headers, referenced via include <> syntax are missed
|
||||
*/
|
||||
public void _test179322() throws Exception {
|
||||
String baseDir= FileLocator.toFileURL(FileLocator.find(CTestPlugin.getDefault().getBundle(), new Path("/resources/indexTests/bugs/179322"), null)).getFile();
|
||||
IFolder content= fCProject.getProject().getFolder("content");
|
||||
content.createLink(new Path(baseDir), IResource.NONE, null);
|
||||
|
||||
// Setup path entries
|
||||
List entries= new ArrayList(Arrays.asList(CoreModel.getRawPathEntries(fCProject)));
|
||||
entries.add(
|
||||
CoreModel.newIncludeEntry(fCProject.getPath(),
|
||||
null, content.getLocation(), true));
|
||||
entries.add(
|
||||
CoreModel.newIncludeEntry(fCProject.getPath(),
|
||||
null, content.getLocation(), false));
|
||||
entries.add(CoreModel.newSourceEntry(content.getProjectRelativePath()));
|
||||
fCProject.setRawPathEntries(
|
||||
(IPathEntry[]) entries.toArray(new IPathEntry[entries.size()]),
|
||||
new NullProgressMonitor()
|
||||
);
|
||||
|
||||
CCorePlugin.getIndexManager().reindex(fCProject);
|
||||
CCorePlugin.getIndexManager().joinIndexer(10000, NPM);
|
||||
|
||||
fIndex.acquireReadLock();
|
||||
try {
|
||||
IBinding[] bindings= fIndex.findBindings(Pattern.compile(".*"), true, IndexFilter.ALL, NPM);
|
||||
assertEquals(2, bindings.length);
|
||||
|
||||
int b= bindings[0].getName().equals("A") ? 1 : 0;
|
||||
assertTrue(bindings[0] instanceof ICPPClassType);
|
||||
assertTrue(bindings[1] instanceof ICPPClassType);
|
||||
assertTrue(((ICPPClassType)bindings[1-b]).getBases().length==0);
|
||||
assertTrue(((ICPPClassType)bindings[b]).getBases().length==1);
|
||||
}
|
||||
finally {
|
||||
fIndex.releaseReadLock();
|
||||
}
|
||||
}
|
||||
|
||||
// class a {};
|
||||
// class A {};
|
||||
// namespace aa {
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
#include <base.h>
|
||||
|
||||
class B : public A {};
|
|
@ -0,0 +1 @@
|
|||
class A {};
|
Loading…
Add table
Reference in a new issue