blob: e9325407cdcbda1dc2b941b9f039f01d1559b015 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2003 IBM 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:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.jdt.core.tests.model;
import java.io.File;
import java.io.IOException;
import java.util.Hashtable;
import org.eclipse.jdt.internal.core.JavaModelStatus;
import org.eclipse.core.resources.*;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IWorkspace;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.Path;
import org.eclipse.jdt.core.*;
import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jdt.core.search.*;
import org.eclipse.jdt.core.compiler.CharOperation;
import junit.framework.*;
/**
* Tests the Java search engine where results are JavaElements and source positions.
*/
public class JavaSearchTests extends AbstractJavaModelTests implements IJavaSearchConstants {
/**
* Collects results as a string.
*/
public static class JavaSearchResultCollector implements IJavaSearchResultCollector {
public StringBuffer results = new StringBuffer();
public boolean showAccuracy = false;
public boolean showProject = false;
public void aboutToStart() {
}
public void accept(IResource resource, int start, int end, IJavaElement element, int accuracy) {
try {
if (results.length() > 0) results.append("\n");
IPath path = resource.getProjectRelativePath();
if (path.segmentCount() == 0) {
IJavaElement root = element;
while (root != null && !(root instanceof IPackageFragmentRoot)) {
root = root.getParent();
}
if (root != null) {
IPackageFragmentRoot pkgFragmentRoot = (IPackageFragmentRoot)root;
if (pkgFragmentRoot.isExternal()) {
results.append(pkgFragmentRoot.getPath().toOSString());
} else {
results.append(pkgFragmentRoot.getPath());
}
}
} else {
results.append(path);
}
if (showProject) {
IProject project = element.getJavaProject().getProject();
results.append(" [in ");
results.append(project.getName());
results.append("]");
}
ICompilationUnit unit = null;
if (element instanceof IMethod) {
results.append(" ");
IMethod method = (IMethod)element;
results.append(method.getDeclaringType().getFullyQualifiedName());
if (!method.isConstructor()) {
results.append(".");
results.append(method.getElementName());
}
results.append("(");
String[] parameters = method.getParameterTypes();
for (int i = 0; i < parameters.length; i++) {
results.append(Signature.toString(parameters[i]));
if (i < parameters.length-1) {
results.append(", ");
}
}
results.append(")");
if (!method.isConstructor()) {
results.append(" -> ");
results.append(Signature.toString(method.getReturnType()));
}
unit = method.getCompilationUnit();
} else if (element instanceof IType) {
results.append(" ");
IType type = (IType)element;
results.append(type.getFullyQualifiedName());
unit = type.getCompilationUnit();
} else if (element instanceof IField) {
results.append(" ");
IField field = (IField)element;
results.append(field.getDeclaringType().getFullyQualifiedName());
results.append(".");
results.append(field.getElementName());
unit = field.getCompilationUnit();
} else if (element instanceof IInitializer) {
results.append(" ");
IInitializer initializer = (IInitializer)element;
results.append(initializer.getDeclaringType().getFullyQualifiedName());
results.append(".");
if (Flags.isStatic(initializer.getFlags())) {
results.append("static ");
}
results.append("{}");
unit = initializer.getCompilationUnit();
} else if (element instanceof IPackageFragment) {
results.append(" ");
results.append(element.getElementName());
}
if (resource instanceof IFile) {
char[] contents = null;
if ("java".equals(resource.getFileExtension())) {
if (!resource.equals(element.getUnderlyingResource())) {
// working copy
contents = unit.getBuffer().getCharacters();
} else {
contents = new org.eclipse.jdt.internal.compiler.batch.CompilationUnit(
null,
((IFile) resource).getLocation().toFile().getPath(),
null).getContents();
}
}
if (start == -1 || contents != null) { // retrieving attached source not implemented here
results.append(" [");
if (start > -1) {
results.append(CharOperation.subarray(contents, start, end));
} else {
results.append("No source");
}
results.append("]");
}
}
if (showAccuracy) {
results.append(" ");
switch (accuracy) {
case EXACT_MATCH:
results.append("EXACT_MATCH");
break;
case POTENTIAL_MATCH:
results.append("POTENTIAL_MATCH");
break;
}
}
} catch (JavaModelException e) {
results.append("\n");
results.append(e.toString());
}
}
public void done() {
}
public IProgressMonitor getProgressMonitor() {
return null;
}
public String toString() {
return results.toString();
}
}
public JavaSearchTests(String name) {
super(name);
}
private IJavaSearchScope getJavaSearchScope() {
return SearchEngine.createJavaSearchScope(new IJavaProject[] {getJavaProject("JavaSearch")});
}
public void setUpSuite() throws Exception {
super.setUpSuite();
setUpJavaProject("JavaSearch");
}
public void tearDownSuite() throws Exception {
deleteProject("JavaSearch");
super.tearDownSuite();
}
public static Test suite() {
TestSuite suite = new Suite(JavaSearchTests.class.getName());
if (false) {
suite.addTest(new JavaSearchTests("testTypeOccurence2"));
return suite;
}
// package declaration
suite.addTest(new JavaSearchTests("testSimplePackageDeclaration"));
suite.addTest(new JavaSearchTests("testVariousPackageDeclarations"));
// package reference
suite.addTest(new JavaSearchTests("testSimplePackageReference"));
suite.addTest(new JavaSearchTests("testPackageReference1"));
suite.addTest(new JavaSearchTests("testPackageReference2"));
suite.addTest(new JavaSearchTests("testVariousPackageReference"));
suite.addTest(new JavaSearchTests("testAccuratePackageReference"));
suite.addTest(new JavaSearchTests("testPatternMatchPackageReference"));
// type declaration
suite.addTest(new JavaSearchTests("testSimpleTypeDeclaration"));
suite.addTest(new JavaSearchTests("testTypeDeclaration"));
suite.addTest(new JavaSearchTests("testTypeDeclarationInJar"));
suite.addTest(new JavaSearchTests("testTypeDeclarationInJar2"));
suite.addTest(new JavaSearchTests("testTypeDeclarationInPackageScope"));
suite.addTest(new JavaSearchTests("testTypeDeclarationInPackageScope2"));
suite.addTest(new JavaSearchTests("testMemberTypeDeclaration"));
suite.addTest(new JavaSearchTests("testPatternMatchTypeDeclaration"));
suite.addTest(new JavaSearchTests("testLongDeclaration"));
// type reference
suite.addTest(new JavaSearchTests("testSimpleTypeReference"));
suite.addTest(new JavaSearchTests("testTypeReference1"));
suite.addTest(new JavaSearchTests("testTypeReference2"));
suite.addTest(new JavaSearchTests("testTypeReference3"));
suite.addTest(new JavaSearchTests("testTypeReference4"));
suite.addTest(new JavaSearchTests("testTypeReferenceInInitializer"));
suite.addTest(new JavaSearchTests("testTypeReferenceAsSingleNameReference"));
suite.addTest(new JavaSearchTests("testMemberTypeReference"));
suite.addTest(new JavaSearchTests("testMemberTypeReference2"));
suite.addTest(new JavaSearchTests("testObjectMemberTypeReference"));
suite.addTest(new JavaSearchTests("testTypeReferenceInQualifiedNameReference"));
suite.addTest(new JavaSearchTests("testTypeReferenceInQualifiedNameReference2"));
suite.addTest(new JavaSearchTests("testTypeReferenceInQualifiedNameReference3"));
suite.addTest(new JavaSearchTests("testTypeReferenceInQualifiedNameReference4"));
suite.addTest(new JavaSearchTests("testTypeReferenceNotInClasspath"));
suite.addTest(new JavaSearchTests("testVariousTypeReferences"));
suite.addTest(new JavaSearchTests("testTypeReferenceInImport"));
suite.addTest(new JavaSearchTests("testTypeReferenceInImport2"));
suite.addTest(new JavaSearchTests("testTypeReferenceInArray"));
suite.addTest(new JavaSearchTests("testTypeReferenceInArray2"));
suite.addTest(new JavaSearchTests("testNegativeTypeReference"));
suite.addTest(new JavaSearchTests("testTypeReferenceInThrows"));
suite.addTest(new JavaSearchTests("testInnacurateTypeReference1"));
suite.addTest(new JavaSearchTests("testInnacurateTypeReference2"));
suite.addTest(new JavaSearchTests("testInnacurateTypeReference3"));
suite.addTest(new JavaSearchTests("testTypeReferenceInCast"));
suite.addTest(new JavaSearchTests("testPatternMatchTypeReference"));
suite.addTest(new JavaSearchTests("testTypeReferenceNotCaseSensitive"));
suite.addTest(new JavaSearchTests("testAccurateTypeReference"));
suite.addTest(new JavaSearchTests("testTypeReferenceInHierarchy"));
suite.addTest(new JavaSearchTests("testTypeReferenceWithRecovery"));
// type occurences
suite.addTest(new JavaSearchTests("testTypeOccurence"));
suite.addTest(new JavaSearchTests("testTypeOccurence2"));
suite.addTest(new JavaSearchTests("testTypeOccurenceWithDollar"));
// interface implementor
suite.addTest(new JavaSearchTests("testInterfaceImplementors"));
suite.addTest(new JavaSearchTests("testInterfaceImplementors2"));
// method declaration
suite.addTest(new JavaSearchTests("testSimpleMethodDeclaration"));
suite.addTest(new JavaSearchTests("testSimpleConstructorDeclaration"));
suite.addTest(new JavaSearchTests("testInnerMethodDeclaration"));
suite.addTest(new JavaSearchTests("testMethodDeclarationInHierarchyScope1"));
suite.addTest(new JavaSearchTests("testMethodDeclarationInHierarchyScope2"));
suite.addTest(new JavaSearchTests("testMethodDeclarationInHierarchyScope3"));
suite.addTest(new JavaSearchTests("testMethodDeclarationInPackageScope"));
suite.addTest(new JavaSearchTests("testMethodDeclarationInJar"));
suite.addTest(new JavaSearchTests("testConstructorDeclarationInJar"));
suite.addTest(new JavaSearchTests("testMethodDeclarationInInitializer"));
// method reference
suite.addTest(new JavaSearchTests("testSimpleMethodReference"));
suite.addTest(new JavaSearchTests("testStaticMethodReference1"));
suite.addTest(new JavaSearchTests("testStaticMethodReference2"));
suite.addTest(new JavaSearchTests("testInnerMethodReference"));
suite.addTest(new JavaSearchTests("testMethodReferenceThroughSuper"));
suite.addTest(new JavaSearchTests("testMethodReferenceInInnerClass"));
suite.addTest(new JavaSearchTests("testMethodReferenceInAnonymousClass"));
suite.addTest(new JavaSearchTests("testMethodReferenceThroughArray"));
suite.addTest(new JavaSearchTests("testMethodReference1"));
suite.addTest(new JavaSearchTests("testMethodReference2"));
suite.addTest(new JavaSearchTests("testMethodReference3"));
suite.addTest(new JavaSearchTests("testMethodReference4"));
// constructor reference
suite.addTest(new JavaSearchTests("testSimpleConstructorReference1"));
suite.addTest(new JavaSearchTests("testSimpleConstructorReference2"));
suite.addTest(new JavaSearchTests("testConstructorReferenceExplicitConstructorCall1"));
suite.addTest(new JavaSearchTests("testConstructorReferenceExplicitConstructorCall2"));
suite.addTest(new JavaSearchTests("testConstructorReferenceImplicitConstructorCall1"));
suite.addTest(new JavaSearchTests("testConstructorReferenceImplicitConstructorCall2"));
suite.addTest(new JavaSearchTests("testConstructorReferenceInFieldInitializer"));
// field declaration
suite.addTest(new JavaSearchTests("testSimpleFieldDeclaration"));
suite.addTest(new JavaSearchTests("testFieldDeclarationInJar"));
suite.addTest(new JavaSearchTests("testFieldDeclarationArrayType"));
suite.addTest(new JavaSearchTests("testFieldDeclarationWithWildCard"));
// field reference
suite.addTest(new JavaSearchTests("testSimpleFieldReference"));
suite.addTest(new JavaSearchTests("testSimpleReadFieldReference"));
suite.addTest(new JavaSearchTests("testSimpleWriteFieldReference"));
suite.addTest(new JavaSearchTests("testMultipleFieldReference"));
suite.addTest(new JavaSearchTests("testStaticFieldReference"));
suite.addTest(new JavaSearchTests("testFieldReference"));
suite.addTest(new JavaSearchTests("testFieldReference2"));
suite.addTest(new JavaSearchTests("testFieldReference3"));
suite.addTest(new JavaSearchTests("testFieldReference4"));
suite.addTest(new JavaSearchTests("testFieldReference5"));
suite.addTest(new JavaSearchTests("testFieldReference6"));
suite.addTest(new JavaSearchTests("testFieldReferenceInInnerClass"));
suite.addTest(new JavaSearchTests("testFieldReferenceInAnonymousClass"));
suite.addTest(new JavaSearchTests("testFieldReferenceThroughSubclass"));
suite.addTest(new JavaSearchTests("testReadWriteFieldReferenceInCompoundExpression"));
suite.addTest(new JavaSearchTests("testReadWriteAccessInQualifiedNameReference"));
suite.addTest(new JavaSearchTests("testFieldReferenceInBrackets"));
suite.addTest(new JavaSearchTests("testAccurateFieldReference1"));
// or pattern
suite.addTest(new JavaSearchTests("testOrPattern"));
// declarations of accessed fields
suite.addTest(new JavaSearchTests("testDeclarationOfAccessedFields1"));
suite.addTest(new JavaSearchTests("testDeclarationOfAccessedFields2"));
suite.addTest(new JavaSearchTests("testDeclarationOfAccessedFields3"));
// declarations of referenced types
suite.addTest(new JavaSearchTests("testDeclarationOfReferencedTypes1"));
suite.addTest(new JavaSearchTests("testDeclarationOfReferencedTypes2"));
suite.addTest(new JavaSearchTests("testDeclarationOfReferencedTypes3"));
suite.addTest(new JavaSearchTests("testDeclarationOfReferencedTypes4"));
suite.addTest(new JavaSearchTests("testDeclarationOfReferencedTypes5"));
suite.addTest(new JavaSearchTests("testDeclarationOfReferencedTypes6"));
suite.addTest(new JavaSearchTests("testDeclarationOfReferencedTypes7"));
// declarations of sent messages
suite.addTest(new JavaSearchTests("testSimpleDeclarationsOfSentMessages"));
suite.addTest(new JavaSearchTests("testDeclarationOfSentMessages"));
// potential match in binary
suite.addTest(new JavaSearchTests("testPotentialMatchInBinary"));
// core exception
suite.addTest(new JavaSearchTests("testCoreException"));
// search scopes
suite.addTest(new JavaSearchTests("testHierarchyScope"));
suite.addTest(new JavaSearchTests("testSubCUSearchScope1"));
suite.addTest(new JavaSearchTests("testSubCUSearchScope2"));
suite.addTest(new JavaSearchTests("testSubCUSearchScope3"));
suite.addTest(new JavaSearchTests("testExternalJarScope"));
return suite;
}
/**
* Type reference test.
*/
public void testAccurateFieldReference1() throws CoreException {
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
"d6.X.CONSTANT",
FIELD,
REFERENCES,
SearchEngine.createJavaSearchScope(new IJavaElement[] {
getPackageFragment("JavaSearch", "src", "d6")
}),
resultCollector);
assertEquals(
"src/d6/Y.java d6.Y.T [CONSTANT]",
resultCollector.toString());
}
/**
* Regression test for 1GBK7B2: ITPJCORE:WINNT - package references: could be more precise
*/
public void testAccuratePackageReference() throws JavaModelException, CoreException {
IPackageFragment pkg = getPackageFragment("JavaSearch", "src", "p3.p2");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
pkg,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/PackageReference/K.java [p3.p2]",
resultCollector.toString());
}
/**
* Type reference test.
*/
public void testAccurateTypeReference() throws CoreException {
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
"d5.X",
TYPE,
REFERENCES,
SearchEngine.createJavaSearchScope(new IJavaElement[] {
getPackageFragment("JavaSearch", "src", "d5")
}),
resultCollector);
assertEquals(
"src/d5/Y.java d5.Y.T [d5.X]\n" +
"src/d5/Y.java d5.Y.c [d5.X]\n" +
"src/d5/Y.java d5.Y.o [d5.X]",
resultCollector.toString());
}
/**
* Constructor declaration in jar file test.
*/
public void testConstructorDeclarationInJar() throws JavaModelException, CoreException {
IType type = getClassFile("JavaSearch", "MyJar.jar", "p1", "A.class").getType();
IMethod method = type.getMethod("A", new String[] {"Ljava.lang.String;"});
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
method,
DECLARATIONS,
getJavaSearchScope(),
resultCollector);
assertEquals(
"MyJar.jar p1.A(java.lang.String) [No source]",
resultCollector.toString());
}
/**
* Constructor reference using an explicit constructor call.
*/
public void testConstructorReferenceExplicitConstructorCall1() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "p", "Y.java").getType("Y");
IMethod method = type.getMethod("Y", new String[] {"I"});
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
method,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/p/Z.java p.Z(int) [super(i)]",
resultCollector.toString());
}
/**
* Constructor reference using an explicit constructor call.
*/
public void testConstructorReferenceExplicitConstructorCall2() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "p", "X.java").getType("X");
IMethod method = type.getMethod("X", new String[] {"I"});
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
method,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/p/Y.java p.Y(int) [super(i)]\n" +
"src/p/Y.java p.Y(boolean) [super(1)]",
resultCollector.toString());
}
/**
* Constructor reference using an implicit constructor call.
* (regression test for bug 23112 search: need a way to search for references to the implicit non-arg constructor)
*/
public void testConstructorReferenceImplicitConstructorCall1() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "c7", "X.java").getType("X");
IMethod method = type.getMethod("X", new String[] {});
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
method,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/c7/Y.java c7.Y() [Y]",
resultCollector.toString());
}
/**
* Constructor reference using an implicit constructor call.
* (regression test for bug 23112 search: need a way to search for references to the implicit non-arg constructor)
*/
public void testConstructorReferenceImplicitConstructorCall2() throws JavaModelException, CoreException {
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
"c8.X()",
CONSTRUCTOR,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/c8/Y.java c8.Y [Y]",
resultCollector.toString());
}
/**
* Constructor reference in a field initializer.
* (regression test for PR 1GKZ8VZ: ITPJCORE:WINNT - Search - did not find references to member constructor)
*/
public void testConstructorReferenceInFieldInitializer() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "", "A.java").getType("A").getType("Inner");
IMethod method = type.getMethod("Inner", new String[] {"I"});
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
method,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/A.java A.field [new Inner(1)]\n" +
"src/A.java A.field [new Inner(2)]",
resultCollector.toString());
}
/**
* CoreException thrown during accept.
* (regression test for PR #1G3UI7A)
*/
public void testCoreException() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "p", "X.java").getType("X");
IJavaSearchResultCollector resultCollector = new IJavaSearchResultCollector() {
public void accept(IResource resource, int start, int end, IJavaElement enclosingElement, int accuracy) throws CoreException {
throw new CoreException(new JavaModelStatus(-1, "test"));
}
public void aboutToStart() {}
public void done() {}
public IProgressMonitor getProgressMonitor() {
return null;
}
};
try {
new SearchEngine().search(
getWorkspace(),
type,
DECLARATIONS,
getJavaSearchScope(),
resultCollector);
} catch (JavaModelException e) {
Throwable wrappedException = e.getException();
assertTrue("Unexpected wrapped exception", wrappedException instanceof CoreException);
assertEquals("Unexpected CoreException has been thrown", "test", ((CoreException)wrappedException).getStatus().getMessage());
return;
}
assertTrue("CoreException should have been thrown", false);
}
/**
* Declaration of accessed fields test.
* (regression test for bug 6538 searchDeclarationsOf* incorrect)
*/
public void testDeclarationOfAccessedFields1() throws JavaModelException, CoreException {
IMethod method =
getCompilationUnit("JavaSearch", "src", "a5", "B.java").
getType("C").getMethod("i", new String[] {});
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().searchDeclarationsOfAccessedFields(
getWorkspace(),
method,
resultCollector
);
assertEquals(
"",
resultCollector.toString());
}
/**
* Declaration of accessed fields test.
* (regression test for bug 6538 searchDeclarationsOf* incorrect)
*/
public void testDeclarationOfAccessedFields2() throws JavaModelException, CoreException {
IMethod method =
getCompilationUnit("JavaSearch", "src", "a6", "A.java").
getType("B").getMethod("m", new String[] {});
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().searchDeclarationsOfAccessedFields(
getWorkspace(),
method,
resultCollector
);
assertEquals(
"src/a6/A.java a6.B.f [f]",
resultCollector.toString());
}
/**
* Declaration of accessed fields test.
* (regression test for bug 10386 NPE in MatchLocator.lookupType)
*/
public void testDeclarationOfAccessedFields3() throws JavaModelException, CoreException {
IMethod method =
getCompilationUnit("JavaSearch", "src", "b6", "A.java").
getType("A").getMethod("foo", new String[] {});
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().searchDeclarationsOfAccessedFields(
getWorkspace(),
method,
resultCollector
);
assertEquals(
"src/b6/A.java b6.A.field [field]",
resultCollector.toString());
}
/**
* Declaration of referenced types test.
*/
public void testDeclarationOfReferencedTypes1() throws JavaModelException, CoreException {
IMethod method =
getCompilationUnit("JavaSearch", "src", "a3", "References.java").
getType("References").getMethod("foo", new String[] {});
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().searchDeclarationsOfReferencedTypes(
getWorkspace(),
method,
resultCollector
);
assertEquals(
"src/a3/X.java a3.X [X]\n" +
"src/a3/Z.java a3.Z [Z]\n" +
"src/a3/b/A.java a3.b.A [A]\n" +
"src/a3/b/A.java a3.b.A$B$C [C]\n" +
"src/a3/b/A.java a3.b.A$B [B]\n" +
getExternalJCLPathString() + " java.lang.Object\n" +
"src/a3/Y.java a3.Y [Y]\n" +
"src/a3/b/B.java a3.b.B [B]",
resultCollector.toString());
}
/**
* Declaration of referenced types test.
* (Regression test for bug 6779 searchDeclarationsOfReferencedTyped - missing exception types)
*/
public void testDeclarationOfReferencedTypes2() throws CoreException {
IMethod method =
getCompilationUnit("JavaSearch", "src", "a7", "X.java").
getType("X").getMethod("foo", new String[] {});
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().searchDeclarationsOfReferencedTypes(
getWorkspace(),
method,
resultCollector
);
assertEquals(
"src/a7/X.java a7.MyException [MyException]",
resultCollector.toString());
}
/**
* Declaration of referenced types test.
* (Regression test for bug 12649 Missing import after move )
*/
public void testDeclarationOfReferencedTypes3() throws CoreException {
ICompilationUnit unit = getCompilationUnit("JavaSearch", "src", "c1", "A.java");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().searchDeclarationsOfReferencedTypes(
getWorkspace(),
unit,
resultCollector
);
assertEquals(
"src/c1/I.java c1.I [I]",
resultCollector.toString());
}
/**
* Declaration of referenced types test.
* (Regression test for bug 12649 Missing import after move )
*/
public void testDeclarationOfReferencedTypes4() throws CoreException {
ICompilationUnit unit = getCompilationUnit("JavaSearch", "src", "c1", "B.java");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().searchDeclarationsOfReferencedTypes(
getWorkspace(),
unit,
resultCollector
);
assertEquals(
"src/c1/I.java c1.I [I]",
resultCollector.toString());
}
/**
* Declaration of referenced types test.
* (Regression test for bug 18418 search: searchDeclarationsOfReferencedTypes reports import declarations)
*/
public void testDeclarationOfReferencedTypes5() throws CoreException {
ICompilationUnit unit = getCompilationUnit("JavaSearch", "src", "c2", "A.java");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().searchDeclarationsOfReferencedTypes(
getWorkspace(),
unit,
resultCollector
);
assertEquals(
"src/c3/C.java c3.C [C]",
resultCollector.toString());
}
/**
* Declaration of referenced types test.
* (Regression test for bug 24934 Move top level doesn't optimize the imports[refactoring])
*/
public void testDeclarationOfReferencedTypes6() throws CoreException {
ICompilationUnit unit = getCompilationUnit("JavaSearch", "src", "d1", "X.java");
IType innerType = unit.getType("X").getType("Inner");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().searchDeclarationsOfReferencedTypes(
getWorkspace(),
innerType,
resultCollector
);
assertEquals(
"src/d2/Y.java d2.Y [Y]",
resultCollector.toString());
}
/**
* Declaration of referenced types test.
* (Regression test for bug 37438 searchenging NPE in searchDeclarationsOfReferencedTypes
)
*/
public void testDeclarationOfReferencedTypes7() throws CoreException {
IPackageFragment pkg = getPackageFragment("JavaSearch", "src", "r7");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().searchDeclarationsOfReferencedTypes(
getWorkspace(),
pkg,
resultCollector
);
assertEquals(
"",
resultCollector.toString());
}
/**
* Declaration of sent messages test.
* (regression test for bug 6538 searchDeclarationsOf* incorrect)
*/
public void testDeclarationOfSentMessages() throws JavaModelException, CoreException {
IMethod method =
getCompilationUnit("JavaSearch", "src", "a5", "B.java").
getType("C").getMethod("i", new String[] {});
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().searchDeclarationsOfSentMessages(
getWorkspace(),
method,
resultCollector
);
assertEquals(
"",
resultCollector.toString());
}
/**
* Java search scope on java element in external jar test.
*/
public void testExternalJarScope() throws CoreException, IOException {
IWorkspace workspace = ResourcesPlugin.getWorkspace();
File workspaceLocation = new File(workspace.getRoot().getLocation().toOSString());
File minimalJar = new File(workspaceLocation, "JavaSearch/MyJar.jar");
File externalJar = new File(workspaceLocation.getParentFile(), "MyJar.jar");
IJavaProject project = this.getJavaProject("JavaSearch");
IClasspathEntry[] classpath = project.getRawClasspath();
try {
copy(minimalJar, externalJar);
int length = classpath.length;
IClasspathEntry[] newClasspath = new IClasspathEntry[length];
System.arraycopy(classpath, 0, newClasspath, 0, length-1);
String externalPath = externalJar.getAbsolutePath();
newClasspath[length-1] = JavaCore.newLibraryEntry(new Path(externalPath), new Path(externalPath), null, false);
project.setRawClasspath(newClasspath, null);
IPackageFragment pkg = this.getPackageFragment("JavaSearch", externalPath, "p0");
IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] {pkg});
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
workspace,
"X",
TYPE,
DECLARATIONS,
scope,
resultCollector);
assertEquals(
externalJar.getCanonicalPath()+ " p0.X",
resultCollector.toString());
IClassFile classFile = pkg.getClassFile("X.class");
scope = SearchEngine.createJavaSearchScope(new IJavaElement[] {classFile});
resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
workspace,
classFile.getType(),
DECLARATIONS,
scope,
resultCollector);
assertEquals(
externalJar.getCanonicalPath()+ " p0.X",
resultCollector.toString());
} finally {
externalJar.delete();
project.setRawClasspath(classpath, null);
}
}
/**
* Field declaration with array type test.
* (regression test for PR 1GKEG73: ITPJCORE:WIN2000 - search (136): missing field declaration)
*/
public void testFieldDeclarationArrayType() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "", "B.java").getType("B");
IField field = type.getField("open");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
field,
DECLARATIONS,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/B.java B.open [open]",
resultCollector.toString());
}
/**
* Field declaration in jar file test.
*/
public void testFieldDeclarationInJar() throws JavaModelException, CoreException {
IType type = getClassFile("JavaSearch", "MyJar.jar", "p1", "A.class").getType();
IField field = type.getField("field");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
field,
DECLARATIONS,
getJavaSearchScope(),
resultCollector);
assertEquals(
"MyJar.jar p1.A.field [No source]",
resultCollector.toString());
}
/**
* Field declaration with wild card test.
* (regression test for bug 21763 Problem in Java search [search] )
*/
public void testFieldDeclarationWithWildCard() throws JavaModelException, CoreException {
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
"class*path",
FIELD,
DECLARATIONS,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/c5/Test.java c5.Test.class_path [class_path]",
resultCollector.toString());
}
/**
* Multiple field references in one ast test.
* (regression test for PR 1GD79XM: ITPJCORE:WINNT - Search - search for field references - not all found)
*/
public void testMultipleFieldReference() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "p5", "A.java").getType("A");
IField field = type.getField("x");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
field,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/p5/A.java p5.A.k() -> void [x]\n" +
"src/p5/A.java p5.A.k() -> void [x]\n" +
"src/p5/A.java p5.A.k() -> void [x]",
resultCollector.toString());
}
/**
* Field reference in inner class test.
* (regression test for PR 1GL11J6: ITPJCORE:WIN2000 - search: missing field references (nested types))
*/
public void testFieldReferenceInInnerClass() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "", "O.java").getType("O");
IField field = type.getField("y");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
field,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/O.java O$I.y() -> void [y]",
resultCollector.toString());
}
/**
* Field reference test.
* (regression test for bug #3433 search: missing field occurrecnces (1GKZ8J6))
*/
public void testFieldReference() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "p8", "A.java").getType("A");
IField field = type.getField("g");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
field,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/p8/A.java p8.A.m() -> void [g]\n" +
"src/p8/A.java p8.B.m() -> void [g]",
resultCollector.toString());
}
/**
* Field reference test.
* (regression test for PR 1GK8TXE: ITPJCORE:WIN2000 - search: missing field reference)
*/
public void testFieldReference2() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "p9", "X.java").getType("X");
IField field = type.getField("f");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
field,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/p9/X.java p9.X.m() -> void [f]",
resultCollector.toString());
}
/**
* Field reference test.
* (regression test for bug 5821 Refactor > Rename renames local variable instead of member in case of name clash )
*/
public void testFieldReference3() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "q8", "EclipseTest.java").getType("EclipseTest");
IField field = type.getField("test");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
field,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/q8/EclipseTest.java q8.EclipseTest.main(String[]) -> void [test]",
resultCollector.toString());
}
/**
* Field reference test.
* (regression test for bug 5923 Search for "length" field refs finds [].length)
*/
public void testFieldReference4() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "a2", "X.java").getType("X");
IField field = type.getField("length");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
field,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/a2/X.java a2.X.foo() -> void [length]",
resultCollector.toString());
}
/**
* Field reference test.
* (regression test for bug 7987 Field reference search should do lookup in 1.4 mode)
*/
public void testFieldReference5() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "b1", "A.java").getType("A");
IField field = type.getField("x");
// Set 1.4 compliance level (no constant yet)
Hashtable options = JavaCore.getOptions();
String currentOption = (String)options.get("org.eclipse.jdt.core.compiler.compliance");
options.put("org.eclipse.jdt.core.compiler.compliance", "1.4");
JavaCore.setOptions(options);
try {
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
field,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/b1/B.java b1.B.foo() -> void [x]",
resultCollector.toString());
} finally {
// Restore compliance level
options.put("org.eclipse.jdt.core.compiler.compliance", currentOption);
JavaCore.setOptions(options);
}
}
/**
* Field reference test.
* (regression test for bug 20693 Finding references to variables does not find all occurances)
*/
public void testFieldReference6() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "c4", "X.java").getType("X");
IField field = type.getField("x");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
field,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/c4/X.java c4.X.foo() -> int [x]",
resultCollector.toString());
}
/**
* Field reference in anonymous class test.
* (regression test for PR 1GL12XE: ITPJCORE:WIN2000 - search: missing field references in inner class)
*/
public void testFieldReferenceInAnonymousClass() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "", "D.java").getType("D");
IField field = type.getField("h");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
field,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/D.java D.g() -> void [h]",
resultCollector.toString());
}
/**
* Field reference in brackets test.
* (regression test for bug 23329 search: incorrect range for type references in brackets)
*/
public void testFieldReferenceInBrackets() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "s3", "A.java").getType("A");
IField field = type.getField("field");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
field,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/s3/A.java s3.A.bar() -> int [field]",
resultCollector.toString());
}
/**
* Field reference through subclass test.
* (regression test for PR 1GKB9YH: ITPJCORE:WIN2000 - search for field refs - incorrect results)
*/
public void testFieldReferenceThroughSubclass() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "p6", "A.java").getType("A");
IField field = type.getField("f");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
field,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/p6/A.java p6.A.m() -> void [f]\n" +
"src/p6/A.java p6.B.m() -> void [f]\n" +
"src/p6/A.java p6.B.m() -> void [f]",
resultCollector.toString());
type = getCompilationUnit("JavaSearch", "src", "p6", "A.java").getType("AA");
field = type.getField("f");
resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
field,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/p6/A.java p6.B.m() -> void [f]",
resultCollector.toString());
}
/**
* Hierarchy scope test.
* (regression test for bug 3445 search: type hierarchy scope incorrect (1GLC8VS))
*/
public void testHierarchyScope() throws JavaModelException, CoreException {
ICompilationUnit cu = this. getCompilationUnit("JavaSearch", "src", "a9", "A.java");
IType type = cu.getType("C");
IJavaSearchScope scope = SearchEngine.createHierarchyScope(type);
assertTrue("a9.C should be included in hierarchy scope", scope.encloses(type));
assertTrue("a9.A should be included in hierarchy scope", scope.encloses(cu.getType("A")));
assertTrue("a9.B should be included in hierarchy scope", scope.encloses(cu.getType("B")));
assertTrue("a9/A.java should be included in hierarchy scope", scope.encloses(cu.getUnderlyingResource().getFullPath().toString()));
}
/**
* Type reference test.
* (Regression test for bug 9642 Search - missing inaccurate type matches)
*/
public void testInnacurateTypeReference1() throws JavaModelException, CoreException {
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
"Zork",
TYPE,
REFERENCES,
SearchEngine.createJavaSearchScope(new IJavaElement[] {
getPackageFragment("JavaSearch", "src", "b5")
}),
resultCollector);
assertEquals(
"src/b5/A.java [Zork]\n" +
"src/b5/A.java b5.A.{} [Zork]\n" +
"src/b5/A.java b5.A.{} [Zork]\n" +
"src/b5/A.java b5.A.{} [Zork]",
resultCollector.toString());
}
/**
* Type reference test.
* (Regression test for bug 9642 Search - missing inaccurate type matches)
*/
public void testInnacurateTypeReference2() throws JavaModelException, CoreException {
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
"p.Zork",
TYPE,
REFERENCES,
SearchEngine.createJavaSearchScope(new IJavaElement[] {
getPackageFragment("JavaSearch", "src", "b5")
}),
resultCollector);
assertEquals(
"src/b5/A.java b5.A.{} [Zork]\n" +
"src/b5/A.java b5.A.{} [Zork]\n" +
"src/b5/A.java b5.A.{} [Zork]",
resultCollector.toString());
}
/**
* Type reference test.
* (Regression test for bug 21485 NPE when doing a reference search to a package)
*/
public void testInnacurateTypeReference3() throws CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "r3", "A21485.java").getType("A21485");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
resultCollector.showAccuracy = true;
new SearchEngine().search(
getWorkspace(),
type,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/r4/B21485.java [A21485] POTENTIAL_MATCH\n" +
"src/r4/B21485.java r4.B21485 [A21485] POTENTIAL_MATCH",
resultCollector.toString());
}
/**
* Inner method declaration test.
*/
public void testInnerMethodDeclaration() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "p", "X.java").getType("X").getType("Inner");
IMethod method = type.getMethod("foo", new String[] {});
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
method,
DECLARATIONS,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/p/X.java p.X$Inner.foo() -> String [foo]",
resultCollector.toString());
}
/**
* Inner method reference test.
*/
public void testInnerMethodReference() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "p", "X.java").getType("X").getType("Inner");
IMethod method = type.getMethod("foo", new String[] {});
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
method,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/p/A.java p.A.foo(int, String, X) -> void [foo()]",
resultCollector.toString());
}
/**
* Interface implementors test.
*/
public void testInterfaceImplementors() throws JavaModelException, CoreException {
// implementors of an interface
IType type = getCompilationUnit("JavaSearch", "src", "p", "I.java").getType("I");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
type,
IMPLEMENTORS,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/InterfaceImplementors.java InterfaceImplementors [p.I]\n" +
"src/p/X.java p.X [I]",
resultCollector.toString());
// implementors of a class should give no match
// (regression test for 1G5HBQA: ITPJUI:WINNT - Search - search for implementors of a class finds subclasses)
type = getCompilationUnit("JavaSearch", "src", "p", "X.java").getType("X");
resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
type,
IMPLEMENTORS,
getJavaSearchScope(),
resultCollector);
assertEquals(
"",
resultCollector.toString());
}
/**
* Interface implementors test.
* (regression test for bug 22102 Not all implementors found for IPartListener)
*/
public void testInterfaceImplementors2() throws JavaModelException, CoreException {
// implementors of an interface
IType type = getCompilationUnit("JavaSearch", "src", "r2", "I.java").getType("I");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
type,
IMPLEMENTORS,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/r2/X.java r2.X.field [I]",
resultCollector.toString());
}
/**
* Long declaration (>255) test.
* (regression test for bug 25859 Error doing Java Search)
*/
public void testLongDeclaration() throws JavaModelException, CoreException {
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
"AbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyz",
TYPE,
DECLARATIONS,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/c9/X.java c9.AbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyz [AbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyz]",
resultCollector.toString());
}
/**
* Memeber type declaration test.
* (regression test for bug 9992 Member class declaration not found)
*/
public void testMemberTypeDeclaration() throws JavaModelException, CoreException {
IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[]{
this.getPackageFragment("JavaSearch", "src", "b4")
});
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
"*.A.B",
TYPE,
DECLARATIONS,
scope,
resultCollector);
assertEquals(
"src/b4/A.java b4.A$B [B]",
resultCollector.toString());
}
/**
* Member type reference test.
*/
public void testMemberTypeReference() throws JavaModelException, CoreException {
// references to second level member type
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
resultCollector.showAccuracy = true;
new SearchEngine().search(
getWorkspace(),
"BMember",
TYPE,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"References to type BMember",
"src/MemberTypeReference/Azz.java MemberTypeReference.Azz.poo() -> void [B.BMember] EXACT_MATCH\n" +
"src/MemberTypeReference/Azz.java MemberTypeReference.Azz$AzzMember [BMember] EXACT_MATCH\n" +
"src/MemberTypeReference/Azz.java MemberTypeReference.X.val [Azz.AzzMember.BMember] EXACT_MATCH\n" +
"src/MemberTypeReference/B.java MemberTypeReference.B.foo() -> void [Azz.AzzMember.BMember] EXACT_MATCH",
resultCollector.toString());
// references to first level member type
resultCollector = new JavaSearchResultCollector();
resultCollector.showAccuracy = true;
new SearchEngine().search(
getWorkspace(),
"AzzMember",
TYPE,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"References to type AzzMember",
"src/MemberTypeReference/Azz.java MemberTypeReference.X.val [Azz.AzzMember] EXACT_MATCH\n" +
"src/MemberTypeReference/B.java MemberTypeReference.B.foo() -> void [Azz.AzzMember] EXACT_MATCH",
resultCollector.toString());
// no reference to a field with same name as member type
resultCollector = new JavaSearchResultCollector();
resultCollector.showAccuracy = true;
new SearchEngine().search(
getWorkspace(),
"BMember",
FIELD,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"References to field BMember",
"",
resultCollector.toString());
}
/**
* Member type reference test.
* (regression test for PR 1GL0MN9: ITPJCORE:WIN2000 - search: not consistent results for nested types)
*/
public void testMemberTypeReference2() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "a", "A.java").getType("A").getType("X");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
type,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/a/A.java a.B.ax [A.X]\n" +
"src/a/A.java a.B.sx [S.X]",
resultCollector.toString());
}
/**
* Method declaration in hierarchy test.
*/
public void testMethodDeclarationInHierarchyScope1() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "p", "X.java").getType("X");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
"foo",
METHOD,
DECLARATIONS,
SearchEngine.createHierarchyScope(type),
resultCollector);
assertEquals(
"src/p/X.java p.X.foo(int, String, X) -> void [foo]\n" +
"src/p/Z.java p.Z.foo(int, String, X) -> void [foo]",
resultCollector.toString());
}
/**
* Method declaration in hierarchy that contains elements in external jar.
* (regression test for PR #1G2E4F1)
*/
public void testMethodDeclarationInHierarchyScope2() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "p", "X.java").getType("X");
IMethod method = type.getMethod("foo", new String[] {"I", "QString;", "QX;"});
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
method,
DECLARATIONS,
SearchEngine.createHierarchyScope(type), // java.lang.Object is in external jcl
resultCollector);
assertEquals(
"src/p/X.java p.X.foo(int, String, X) -> void [foo]\n" +
"src/p/Z.java p.Z.foo(int, String, X) -> void [foo]",
resultCollector.toString());
}
/**
* Method declaration in hierarchy on a secondary type.
*/
public void testMethodDeclarationInHierarchyScope3() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "d3", "A.java").getType("B");
IMethod method = type.getMethod("foo", new String[] {});
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
method,
DECLARATIONS,
SearchEngine.createHierarchyScope(type),
resultCollector);
assertEquals(
"src/d3/A.java d3.B.foo() -> void [foo]",
resultCollector.toString());
}
/**
* Method declaration in field initialzer.
* (regression test for bug 24346 Method declaration not found in field initializer )
*/
public void testMethodDeclarationInInitializer() throws CoreException {
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
"foo24346",
METHOD,
DECLARATIONS,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/c6/X.java c6.X.x [foo24346]",
resultCollector.toString());
}
/**
* Method declaration in jar file test.
*/
public void testMethodDeclarationInJar() throws JavaModelException, CoreException {
IType type = getClassFile("JavaSearch", "MyJar.jar", "p1", "A.class").getType();
IMethod method = type.getMethod("foo", new String[] {"Ljava.lang.String;"});
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
method,
DECLARATIONS,
getJavaSearchScope(),
resultCollector);
// System.out.println(displayString(resultCollector.toString(), 2));
assertEquals(
"MyJar.jar p1.A.foo(java.lang.String) -> boolean [No source]",
resultCollector.toString());
}
/**
* Method declaration in package test.
* (regression tets for PR #1G2KA97)
*/
public void testMethodDeclarationInPackageScope() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "p", "X.java").getType("X");
IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] {type.getPackageFragment()});
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
"main(String[])",
METHOD,
DECLARATIONS,
scope,
resultCollector);
assertEquals(
"src/p/A.java p.A.main(String[]) -> void [main]",
resultCollector.toString());
}
/**
* Type declaration using a package scope test.
* (check that subpackages are not included)
*/
public void testTypeDeclarationInPackageScope() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "p3", "X.java").getType("X");
IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] {type.getPackageFragment()});
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
"X",
TYPE,
DECLARATIONS,
scope,
resultCollector);
assertEquals(
"src/p3/X.java p3.X [X]",
resultCollector.toString());
}
/**
* Type declaration using a binary package scope test.
* (check that subpackages are not included)
*/
public void testTypeDeclarationInPackageScope2() throws JavaModelException, CoreException {
IType type = getClassFile("JavaSearch", "MyJar.jar", "p0", "X.class").getType();
IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] {type.getPackageFragment()});
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getJavaProject("JavaSearch").getProject().getWorkspace(),
"X",
TYPE,
DECLARATIONS,
scope,
resultCollector);
assertEquals(
"MyJar.jar p0.X [No source]",
resultCollector.toString());
}
/**
* Method reference through super test.
*/
public void testMethodReferenceThroughSuper() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "sd", "AQ.java").getType("AQ");
IMethod method = type.getMethod("k", new String[] {});
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
method,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/sd/AQ.java sd.AQE.k() -> void [k()]",
resultCollector.toString());
}
/**
* Method reference test.
* (regression test for bug 5068 search: missing method reference)
*/
public void testMethodReference1() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "q5", "AQ.java").getType("I");
IMethod method = type.getMethod("k", new String[] {});
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
method,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/q5/AQ.java q5.T.m() -> void [k()]",
resultCollector.toString());
}
/**
* Method reference test.
* (regression test for bug 5069 search: method reference in super missing)
*/
public void testMethodReference2() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "q6", "CD.java").getType("AQ");
IMethod method = type.getMethod("k", new String[] {});
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
method,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/q6/CD.java q6.AQE.k() -> void [k()]",
resultCollector.toString());
}
/**
* Method reference test.
* (regression test for bug 5070 search: missing interface method reference )
*/
public void testMethodReference3() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "q7", "AQ.java").getType("I");
IMethod method = type.getMethod("k", new String[] {});
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
method,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/q7/AQ.java q7.D.h() -> void [k()]",
resultCollector.toString());
}
/**
* Method reference test.
* (regression test for bug 8928 Unable to find references or declarations of methods that use static inner classes in the signature)
*/
public void testMethodReference4() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "b2", "Y.java").getType("Y");
IMethod method = type.getMethod("foo", new String[] {"QX.Inner;"});
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
method,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/b2/Z.java b2.Z.bar() -> void [foo(inner)]",
resultCollector.toString());
}
/**
* Method reference through array test.
* (regression test for 1GHDA2V: ITPJCORE:WINNT - ClassCastException when doing a search)
*/
public void testMethodReferenceThroughArray() throws JavaModelException, CoreException {
IType type = getClassFile("JavaSearch", getExternalJCLPathString(), "java.lang", "Object.class").getType();
IMethod method = type.getMethod("clone", new String[] {});
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
method,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/E.java E.foo() -> Object [clone()]",
resultCollector.toString());
}
/**
* Method reference in inner class test.
*/
public void testMethodReferenceInInnerClass() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "", "CA.java").getType("CA");
IMethod method = type.getMethod("m", new String[] {});
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
method,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/CA.java CA$CB.f() -> void [m()]\n" +
"src/CA.java CA$CB$CC.f() -> void [m()]",
resultCollector.toString());
}
/**
* Method reference in anonymous class test.
* (regression test for PR 1GGNOTF: ITPJCORE:WINNT - Search doesn't find method referenced in anonymous inner class)
*/
public void testMethodReferenceInAnonymousClass() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "", "PR_1GGNOTF.java").getType("PR_1GGNOTF");
IMethod method = type.getMethod("method", new String[] {});
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
method,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/PR_1GGNOTF.java PR_1GGNOTF.method2() -> void [method()]",
resultCollector.toString());
}
/**
* Member type named "Object" reference test.
* (regression test for 1G4GHPS: ITPJUI:WINNT - Strange error message in search)
*/
public void testObjectMemberTypeReference() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "ObjectMemberTypeReference", "A.java")
.getType("A")
.getType("Object");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
resultCollector.showAccuracy = true;
new SearchEngine().search(
getWorkspace(),
type,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/ObjectMemberTypeReference/A.java ObjectMemberTypeReference.A.foo() -> void [Object] EXACT_MATCH",
resultCollector.toString());
}
/**
* OrPattern test.
* (regression test for bug 5862 search : too many matches on search with OrPattern)
*/
public void testOrPattern() throws CoreException {
IMethod leftMethod = getCompilationUnit("JavaSearch", "src", "q9", "I.java")
.getType("I").getMethod("m", new String[] {});
ISearchPattern leftPattern = SearchEngine.createSearchPattern(leftMethod, ALL_OCCURRENCES);
IMethod rightMethod = getCompilationUnit("JavaSearch", "src", "q9", "I.java")
.getType("A1").getMethod("m", new String[] {});
ISearchPattern rightPattern = SearchEngine.createSearchPattern(rightMethod, ALL_OCCURRENCES);
ISearchPattern orPattern = SearchEngine.createOrSearchPattern(leftPattern, rightPattern);
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
resultCollector.showAccuracy = true;
new SearchEngine().search(
getWorkspace(),
orPattern,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/q9/I.java q9.I.m() -> void [m] EXACT_MATCH\n" +
"src/q9/I.java q9.A1.m() -> void [m] EXACT_MATCH",
resultCollector.toString());
}
/**
* Package reference test.
* (regression test for PR 1GK90H4: ITPJCORE:WIN2000 - search: missing package reference)
*/
public void testPackageReference1() throws JavaModelException, CoreException {
IPackageFragment pkg = getPackageFragment("JavaSearch", "src", "q2");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
pkg,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/q1/B.java q1.B.m(AA) -> void [q2]",
resultCollector.toString());
}
/**
* Package reference test.
* (regression test for bug 17906 Rename package fails when inner classes are imported)
*/
public void testPackageReference2() throws JavaModelException, CoreException {
IPackageFragment pkg = getPackageFragment("JavaSearch", "src", "b8");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
pkg,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/b9/Foo.java [b8]",
resultCollector.toString());
}
/**
* Test pattern match package references
*/
public void testPatternMatchPackageReference() throws JavaModelException, CoreException {
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
"*p2.*",
PACKAGE,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/PackageReference/A.java [p3.p2.p]\n" +
"src/PackageReference/B.java [p3.p2.p]\n" +
"src/PackageReference/C.java PackageReference.C [p3.p2.p]\n" +
"src/PackageReference/D.java PackageReference.D.x [p3.p2.p]\n" +
"src/PackageReference/E.java PackageReference.E.x [p3.p2.p]\n" +
"src/PackageReference/F.java PackageReference.F.foo() -> p3.p2.p.X [p3.p2.p]\n" +
"src/PackageReference/G.java PackageReference.G.foo(p3.p2.p.X) -> void [p3.p2.p]\n" +
"src/PackageReference/H.java PackageReference.H.foo() -> void [p3.p2.p]\n" +
"src/PackageReference/I.java PackageReference.I.foo() -> void [p3.p2.p]\n" +
"src/PackageReference/J.java PackageReference.J.foo() -> void [p3.p2.p]",
resultCollector.toString());
}
/**
* Test pattern match type declaration
* (regression test for bug 17210 No match found when query contains '?')
*/
public void testPatternMatchTypeDeclaration() throws CoreException {
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
"X?Z",
TYPE,
DECLARATIONS,
getJavaSearchScope(),
resultCollector);
assertEquals("src/r5/XYZ.java r5.XYZ [XYZ]", resultCollector.toString());
}
/**
* Test pattern match type reference in binary
* (regression test for bug 24741 Search does not find patterned type reference in binary project )
*/
public void testPatternMatchTypeReference() throws CoreException {
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
"p24741.*",
TYPE,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"test24741.jar q24741.B",
resultCollector.toString());
}
/**
* Test that we find potential matches in binaries even if we can't resolve the entire
* class file.
* (Regression test for 1G4IN3E: ITPJCORE:WINNT - AbortCompilation using J9 to search for class declaration)
*/
public void testPotentialMatchInBinary() throws JavaModelException, CoreException {
IJavaProject project = this.getJavaProject("JavaSearch");
IClasspathEntry[] classpath = project.getRawClasspath();
try {
// add AbortCompilation.jar to classpath
int length = classpath.length;
IClasspathEntry[] newClasspath = new IClasspathEntry[length+1];
System.arraycopy(classpath, 0, newClasspath, 0, length);
newClasspath[length] = JavaCore.newLibraryEntry(new Path("/JavaSearch/AbortCompilation.jar"), null, null);
project.setRawClasspath(newClasspath, null);
// potential match for a field declaration
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
resultCollector.showAccuracy = true;
new SearchEngine().search(
getWorkspace(),
"MissingFieldType.*",
FIELD,
DECLARATIONS,
getJavaSearchScope(),
resultCollector);
assertEquals(
"AbortCompilation.jar AbortCompilation.MissingFieldType.field [No source] POTENTIAL_MATCH\n" +
"AbortCompilation.jar AbortCompilation.MissingFieldType.missing [No source] POTENTIAL_MATCH\n" +
"AbortCompilation.jar AbortCompilation.MissingFieldType.otherField [No source] POTENTIAL_MATCH",
resultCollector.toString());
// potential match for a method declaration
resultCollector = new JavaSearchResultCollector();
resultCollector.showAccuracy = true;
new SearchEngine().search(
getWorkspace(),
"MissingArgumentType.foo*",
METHOD,
DECLARATIONS,
getJavaSearchScope(),
resultCollector);
assertEquals(
"AbortCompilation.jar AbortCompilation.MissingArgumentType.foo() -> void [No source] POTENTIAL_MATCH\n" +
"AbortCompilation.jar AbortCompilation.MissingArgumentType.foo(java.util.EventListener) -> void [No source] POTENTIAL_MATCH\n" +
"AbortCompilation.jar AbortCompilation.MissingArgumentType.foo2() -> void [No source] POTENTIAL_MATCH",
resultCollector.toString());
// potential match for a type declaration
resultCollector = new JavaSearchResultCollector();
resultCollector.showAccuracy = true;
new SearchEngine().search(
getWorkspace(),
"Missing*",
TYPE,
DECLARATIONS,
getJavaSearchScope(),
resultCollector);
assertEquals(
"AbortCompilation.jar AbortCompilation.EnclosingType$MissingEnclosingType [No source] EXACT_MATCH\n" +
"AbortCompilation.jar AbortCompilation.MissingArgumentType [No source] EXACT_MATCH\n" +
"AbortCompilation.jar AbortCompilation.MissingFieldType [No source] EXACT_MATCH",
resultCollector.toString());
} finally {
// reset classpath
project.setRawClasspath(classpath, null);
}
}
/**
* Read and write access reference in compound expression test.
* (regression test for bug 6158 Search - Prefix and postfix expression not found as write reference)
*/
public void testReadWriteFieldReferenceInCompoundExpression() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "a4", "X.java").getType("X");
IField field = type.getField("field");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
// Read reference
new SearchEngine().search(
getWorkspace(),
field,
READ_ACCESSES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/a4/X.java a4.X.foo() -> void [field]",
resultCollector.toString());
// Write reference
resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
field,
WRITE_ACCESSES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/a4/X.java a4.X.foo() -> void [field]",
resultCollector.toString());
}
/**
* Simple constructor declaration test.
*/
public void testSimpleConstructorDeclaration() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "p", "A.java").getType("A");
IMethod constructor = type.getMethod("A", new String[] {"QX;"});
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
constructor,
DECLARATIONS,
getJavaSearchScope(),
resultCollector);
assertEquals("src/p/A.java p.A(X) [A]", resultCollector.toString());
}
/**
* Simple constructor reference test.
*/
public void testSimpleConstructorReference1() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "p", "A.java").getType("A");
IMethod constructor = type.getMethod("A", new String[] {"QX;"});
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
constructor,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals("src/Test.java Test.main(String[]) -> void [new p.A(y)]", resultCollector.toString());
}
/**
* Simple constructor reference test.
*/
public void testSimpleConstructorReference2() throws JavaModelException, CoreException {
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
"p.A(X)",
CONSTRUCTOR,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals("src/Test.java Test.main(String[]) -> void [new p.A(y)]", resultCollector.toString());
}
/**
* Simple declarations of sent messages test.
*/
public void testSimpleDeclarationsOfSentMessages() throws JavaModelException, CoreException {
ICompilationUnit cu = getCompilationUnit("JavaSearch", "src", "", "Test.java");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().searchDeclarationsOfSentMessages(
getWorkspace(),
cu,
resultCollector);
assertEquals(
"src/p/X.java p.X.foo(int, String, X) -> void [foo(int i, String s, X x)]\n" +
"src/p/Y.java p.Y.bar() -> void [bar()]\n" +
"src/p/Z.java p.Z.foo(int, String, X) -> void [foo(int i, String s, X x)]\n" +
"src/p/A.java p.A.foo(int, String, X) -> void [foo()]",
resultCollector.toString());
}
/**
* Simple field declaration test.
*/
public void testSimpleFieldDeclaration() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "p", "A.java").getType("A");
IField field = type.getField("x");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
field,
DECLARATIONS,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/p/A.java p.A.x [x]",
resultCollector.toString());
}
/**
* Simple field reference test.
*/
public void testSimpleFieldReference() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "p", "A.java").getType("A");
IField field = type.getField("x");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
field,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/Test.java Test.main(String[]) -> void [x]\n" +
"src/p/A.java p.A(X) [x]",
resultCollector.toString());
}
/**
* Simple write field access reference test.
*/
public void testSimpleWriteFieldReference() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "p", "A.java").getType("A");
IField field = type.getField("x");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
field,
WRITE_ACCESSES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/p/A.java p.A(X) [x]",
resultCollector.toString());
}
/**
* Sub-cu java search scope test.
* (regression test for bug 9041 search: cannot create a sub-cu scope)
*/
public void testSubCUSearchScope1() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "b3", "X.java").getType("X");
IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] {type});
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
type,
REFERENCES,
scope,
resultCollector);
assertEquals(
"src/b3/X.java b3.X.field [X]\n" +
"src/b3/X.java b3.X.foo() -> Object [X]\n" +
"src/b3/X.java b3.X$Y.field2 [X]\n" +
"src/b3/X.java b3.X$Y.foo2() -> Object [X]",
resultCollector.toString());
}
/**
* Sub-cu java search scope test.
* (regression test for bug 9041 search: cannot create a sub-cu scope)
*/
public void testSubCUSearchScope2() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "b3", "X.java").getType("X");
IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] {type.getField("field")});
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
type,
REFERENCES,
scope,
resultCollector);
assertEquals(
"src/b3/X.java b3.X.field [X]",
resultCollector.toString());
}
/**
* Sub-cu java search scope test.
* (regression test for bug 9041 search: cannot create a sub-cu scope)
*/
public void testSubCUSearchScope3() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "b3", "X.java").getType("X");
IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] {type.getType("Y")});
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
type,
REFERENCES,
scope,
resultCollector);
assertEquals(
"src/b3/X.java b3.X$Y.field2 [X]\n" +
"src/b3/X.java b3.X$Y.foo2() -> Object [X]",
resultCollector.toString());
}
/**
* Type declaration test.
* (regression test for bug 29524 Search for declaration via patterns adds '"*")
*/
public void testTypeDeclaration() throws JavaModelException, CoreException {
IPackageFragment pkg = this.getPackageFragment("JavaSearch", "src", "d8");
IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] {pkg});
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
"A",
TYPE,
DECLARATIONS,
scope,
resultCollector);
assertEquals("src/d8/A.java d8.A [A]", resultCollector.toString());
}
/**
* Simple method declaration test.
*/
public void testSimpleMethodDeclaration() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "p", "X.java").getType("X");
IMethod method = type.getMethod("foo", new String[] {"I", "QString;", "QX;"});
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
method,
DECLARATIONS,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/p/X.java p.X.foo(int, String, X) -> void [foo]\n" +
"src/p/Z.java p.Z.foo(int, String, X) -> void [foo]",
resultCollector.toString());
}
/**
* Simple method reference test.
*/
public void testSimpleMethodReference() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "p", "X.java").getType("X");
IMethod method = type.getMethod("foo", new String[] {"I", "QString;", "QX;"});
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
method,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/Test.java Test.main(String[]) -> void [foo(1, \"a\", y)]\n" +
"src/Test.java Test.main(String[]) -> void [foo(1, \"a\", z)]\n" +
"src/p/Z.java p.Z.foo(int, String, X) -> void [foo(i, s, new Y(true))]",
resultCollector.toString());
}
/**
* Simple package declaration test.
*/
public void testSimplePackageDeclaration() throws JavaModelException, CoreException {
IPackageFragment pkg = getPackageFragment("JavaSearch", "src", "p");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
pkg,
DECLARATIONS,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/p p",
resultCollector.toString());
}
/**
* Simple package reference test.
*/
public void testSimplePackageReference() throws JavaModelException, CoreException {
IPackageFragment pkg = getPackageFragment("JavaSearch", "src", "p");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
pkg,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/InterfaceImplementors.java InterfaceImplementors [p]\n" +
"src/Test.java Test.main(String[]) -> void [p]\n" +
"src/Test.java Test.main(String[]) -> void [p]\n" +
"src/Test.java Test.main(String[]) -> void [p]\n" +
"src/Test.java Test.main(String[]) -> void [p]\n" +
"src/Test.java Test.main(String[]) -> void [p]\n" +
"src/Test.java Test.main(String[]) -> void [p]\n" +
"src/Test.java Test.main(String[]) -> void [p]\n" +
"src/TypeReferenceInImport/X.java [p]",
resultCollector.toString());
}
/**
* Simple field read access reference test.
*/
public void testSimpleReadFieldReference() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "p", "A.java").getType("A");
IField field = type.getField("x");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
field,
READ_ACCESSES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/Test.java Test.main(String[]) -> void [x]",
resultCollector.toString());
}
/**
* Simple type declaration test.
*/
public void testSimpleTypeDeclaration() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "p", "X.java").getType("X");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
type,
DECLARATIONS,
getJavaSearchScope(),
resultCollector);
assertEquals("src/p/X.java p.X [X]", resultCollector.toString());
}
/**
* Simple type reference test.
*/
public void testSimpleTypeReference() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "p", "X.java").getType("X");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
type,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/p/A.java p.A.x [X]\n" +
"src/p/A.java p.A(X) [X]\n" +
"src/p/A.java p.A.foo(int, String, X) -> void [X]\n" +
"src/p/X.java p.X() [X]\n" +
"src/p/X.java p.X.foo(int, String, X) -> void [X]\n" +
"src/p/Y.java p.Y [X]\n" +
"src/p/Z.java p.Z.foo(int, String, X) -> void [X]",
resultCollector.toString());
}
/**
* Static field reference test.
* (regression test for PR #1G2P5EP)
*/
public void testStaticFieldReference() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "p", "A.java").getType("A");
IField field = type.getField("DEBUG");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
field,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/p/A.java p.A.foo() -> void [DEBUG]",
resultCollector.toString());
}
/**
* Static method reference test.
*/
public void testStaticMethodReference1() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "p", "Y.java").getType("Y");
IMethod method = type.getMethod("bar", new String[] {});
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
method,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/Test.java Test.main(String[]) -> void [bar()]",
resultCollector.toString());
}
/**
* Static method reference test.
*/
public void testStaticMethodReference2() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "p", "X.java").getType("X");
IMethod method = type.getMethod("bar", new String[] {});
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
method,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"",
resultCollector.toString());
}
/**
* Type declaration in jar file test.
*/
public void testTypeDeclarationInJar() throws JavaModelException, CoreException {
IType type = getClassFile("JavaSearch", "MyJar.jar", "p1", "A.class").getType();
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
type,
DECLARATIONS,
getJavaSearchScope(),
resultCollector);
assertEquals(
"MyJar.jar p1.A [No source]",
resultCollector.toString());
}
/**
* Type declaration in jar file and in anonymous class test.
* (regression test for 20631 Declaration of local binary type not found)
*/
public void testTypeDeclarationInJar2() throws JavaModelException, CoreException {
IPackageFragmentRoot root = getPackageFragmentRoot("JavaSearch", "test20631.jar");
IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] {root});
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
"Y",
TYPE,
DECLARATIONS,
scope,
resultCollector);
assertEquals(
"test20631.jar X$1$Y",
resultCollector.toString());
}
/**
* Type ocurrence test.
* (regression test for PR 1GKAQJS: ITPJCORE:WIN2000 - search: incorrect results for nested types)
*/
public void testTypeOccurence() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "r", "A.java").getType("A").getType("X");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
type,
ALL_OCCURRENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/r/A.java r.A.m() -> A [X]\n" +
"src/r/A.java r.A$X [X]\n" +
"src/r/A.java r.A$X(X) [X]\n" +
"src/r/A.java r.A$X(X) [X]\n" +
"src/r/A.java r.B.ax [A.X]\n" +
"src/r/A.java r.B.ax [X]",
resultCollector.toString());
}
/**
* Type ocuurence in unresolvable import test.
* (regression test for bug 37166 NPE in SearchEngine when matching type against ProblemReferenceBinding )
*/
public void testTypeOccurence2() throws CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "r8", "B.java").getType("B");
IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] {type.getPackageFragment()});
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
type,
ALL_OCCURRENCES,
scope,
resultCollector);
assertEquals(
"src/r8/A.java [r8.B]",
resultCollector.toString());
}
/**
* Type name with $ ocurrence test.
* (regression test for bug 3310 Smoke 124: Compile errors introduced with rename refactoring (1GFBK2G))
*/
public void testTypeOccurenceWithDollar() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "q3", "A$B.java").getType("A$B");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
type,
ALL_OCCURRENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/q3/A$B.java q3.A$B [A$B]\n" +
"src/q4/C.java q4.C.foo() -> Object [q3.A$B]",
resultCollector.toString());
}
/**
* Type reference test.
* (Regression test for PR 1GK7K17: ITPJCORE:WIN2000 - search: missing type reference)
*/
public void testTypeReference1() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "", "X.java").getType("X");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
type,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/X.java AA() [X]",
resultCollector.toString());
}
/**
* Type reference test.
* (Regression test for bug 29516 SearchEngine regressions in 20030114)
*/
public void testTypeReference2() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "d7", "A.java").getType("A");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
type,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/d7/A.java d7.A.A [A]\n" +
"src/d7/A.java d7.A.A(A) -> A [A]\n" +
"src/d7/A.java d7.A.A(A) -> A [A]",
resultCollector.toString());
}
/**
* Type reference test.
* (Regression test for bug 31985 NPE searching non-qualified and case insensitive type ref)
*/
public void testTypeReference3() throws JavaModelException, CoreException {
ISearchPattern pattern = SearchEngine.createSearchPattern("x31985", TYPE, REFERENCES, false);
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
resultCollector.showAccuracy = true;
new SearchEngine().search(
getWorkspace(),
pattern,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/e3/X31985.java e3.X31985.CONSTANT [X31985] EXACT_MATCH\n" +
"src/e3/Y31985.java e3.Y31985.foo() -> Object [X31985] EXACT_MATCH",
resultCollector.toString());
}
/**
* Type reference test.
* (Regression test for bug 31997 Refactoring d.n. work for projects with brackets in name.)
*/
public void testTypeReference4() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "otherSrc()", "", "X31997.java").getType("X31997");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
type,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"otherSrc()/Y31997.java Y31997 [X31997]",
resultCollector.toString());
}
/**
* Type reference as a single name reference test.
*/
public void testTypeReferenceAsSingleNameReference() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "", "TypeReferenceAsSingleNameReference.java").getType("TypeReferenceAsSingleNameReference");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
type,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/TypeReferenceAsSingleNameReference.java TypeReferenceAsSingleNameReference.hasReference() -> void [TypeReferenceAsSingleNameReference]\n" +
"src/TypeReferenceAsSingleNameReference.java TypeReferenceAsSingleNameReference.hasReference() -> void [TypeReferenceAsSingleNameReference]",
resultCollector.toString());
}
/**
* Type reference in array test.
* (regression test for PR #1GAL424)
*/
public void testTypeReferenceInArray() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "TypeReferenceInArray", "A.java").getType("A");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
type,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/TypeReferenceInArray/A.java TypeReferenceInArray.A.a [A]\n" +
"src/TypeReferenceInArray/A.java TypeReferenceInArray.A.b [TypeReferenceInArray.A]",
resultCollector.toString());
}
/**
* Type reference in array test.
* (regression test for bug 3230 Search - Too many type references for query ending with * (1GAZVGI) )
*/
public void testTypeReferenceInArray2() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "s1", "X.java").getType("X");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
type,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/s1/Y.java s1.Y.f [X]",
resultCollector.toString());
}
/**
* Type reference in cast test.
* (regression test for bug 23329 search: incorrect range for type references in brackets)
*/
public void testTypeReferenceInCast() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "s3", "A.java").getType("B");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
type,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/s3/A.java s3.A.foo() -> Object [B]",
resultCollector.toString());
}
/**
* Type reference in hierarchy test.
* (regression test for bug 28236 Search for refs to class in hierarchy matches class outside hierarchy )
*/
public void testTypeReferenceInHierarchy() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "d9.p1", "A.java").getType("A");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
IJavaSearchScope scope = SearchEngine.createHierarchyScope(type);
new SearchEngine().search(
getWorkspace(),
type,
REFERENCES,
scope,
resultCollector);
assertEquals(
"",
resultCollector.toString());
}
/**
* Type reference in import test.
* (regression test for PR #1GA7PAS)
*/
public void testTypeReferenceInImport() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "p2", "Z.java").getType("Z");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
type,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/TypeReferenceInImport/X.java [p2.Z]",
resultCollector.toString());
}
/**
* Type reference in import test.
* (regression test for bug 23077 search: does not find type references in some imports)
*/
public void testTypeReferenceInImport2() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "r6", "A.java").getType("A");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
type,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/r6/B.java [r6.A]\n" +
"src/r6/B.java [r6.A]\n" +
"src/r6/B.java [r6.A]\n" +
"src/r6/B.java [r6.A]\n" +
"src/r6/B.java [r6.A]\n" +
"src/r6/B.java [r6.A]",
resultCollector.toString());
}
/**
* Type reference in initializer test.
* (regression test for PR #1G4GO4O)
*/
public void testTypeReferenceInInitializer() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "", "Test.java").getType("Test");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
type,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/Test.java Test.static {} [Test]\n" +
"src/Test.java Test.static {} [Test]\n" +
"src/Test.java Test.{} [Test]",
resultCollector.toString());
}
/**
* Type reference inside a qualified name reference test.
* (Regression test for PR #1G4TSC0)
*/
public void testTypeReferenceInQualifiedNameReference() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "p", "A.java").getType("A");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
type,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/Test.java Test.main(String[]) -> void [p.A]\n" +
"src/Test.java Test.main(String[]) -> void [p.A]\n" +
"src/p/A.java p.A.foo() -> void [A]",
resultCollector.toString());
}
/**
* Type reference inside a qualified name reference test.
* (Regression test for PR #1GLBP65)
*/
public void testTypeReferenceInQualifiedNameReference2() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "p4", "A.java").getType("A");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
type,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/p4/A.java p4.A.A [A]\n" +
"src/p4/A.java p4.X.x() -> void [p4.A]\n" +
"src/p4/A.java p4.X [p4.A]",
resultCollector.toString());
}
/**
* Type reference inside a qualified name reference test.
* (Regression test for PR 1GL9UMH: ITPJCORE:WIN2000 - search: missing type occurrences)
*/
public void testTypeReferenceInQualifiedNameReference3() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "", "W.java").getType("W");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
type,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/W.java W.m() -> int [W]",
resultCollector.toString());
}
/**
* Type reference inside a qualified name reference test.
* (Regression test for bug 16751 Renaming a class doesn't update all references )
*/
public void testTypeReferenceInQualifiedNameReference4() throws CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "b7", "X.java").getType("SubClass");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
type,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/b7/X.java b7.Test.main(String[]) -> void [SubClass]",
resultCollector.toString());
}
/**
* Type reference in a throw clause test.
* (Regression test for bug 6779 searchDeclarationsOfReferencedTyped - missing exception types)
*/
public void testTypeReferenceInThrows() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "a7", "X.java").getType("MyException");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
resultCollector.showAccuracy = true;
new SearchEngine().search(
getWorkspace(),
type,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/a7/X.java a7.X.foo() -> void [MyException] EXACT_MATCH",
resultCollector.toString());
}
/**
* Type reference test (not case sensitive)
*/
public void testTypeReferenceNotCaseSensitive() throws JavaModelException, CoreException {
IPackageFragment pkg = getPackageFragment("JavaSearch", "src", "d4");
IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] {pkg});
ISearchPattern pattern = SearchEngine.createSearchPattern("Y", TYPE, REFERENCES, false);
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
pattern,
scope,
resultCollector);
assertEquals(
"src/d4/X.java d4.X.foo() -> Object [Y]",
resultCollector.toString());
}
/**
* Type reference in a folder that is not in the classpath.
* (regression test for PR #1G5N8KS)
*/
public void testTypeReferenceNotInClasspath() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "p", "X.java").getType("X");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
type,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/p/A.java p.A.x [X]\n" +
"src/p/A.java p.A(X) [X]\n" +
"src/p/A.java p.A.foo(int, String, X) -> void [X]\n" +
"src/p/X.java p.X() [X]\n" +
"src/p/X.java p.X.foo(int, String, X) -> void [X]\n" +
"src/p/Y.java p.Y [X]\n" +
"src/p/Z.java p.Z.foo(int, String, X) -> void [X]",
resultCollector.toString());
}
/**
* Type reference with recovery test.
* (Regression test for bug 29366 Search reporting invalid inaccurate match )
*/
public void testTypeReferenceWithRecovery() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "e1", "A29366.java").getType("A29366");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
resultCollector.showAccuracy = true;
new SearchEngine().search(
getWorkspace(),
type,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/e1/A29366.java e1.A29366.foo() -> void [A29366] EXACT_MATCH",
resultCollector.toString());
}
/**
* Negative type reference test.
* (regression test for 1G52F7P: ITPJCORE:WINNT - Search - finds bogus references to class)
*/
public void testNegativeTypeReference() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "p7", "A.java").getType("A");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
type,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"",
resultCollector.toString());
}
/**
* Various package declarations test.
*/
public void testVariousPackageDeclarations() throws JavaModelException, CoreException {
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
"p3*",
PACKAGE,
DECLARATIONS,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/p3 p3\n" +
"src/p3/p2/p p3.p2.p",
resultCollector.toString());
}
/**
* Various package reference test.
*/
public void testVariousPackageReference() throws JavaModelException, CoreException {
IPackageFragment pkg = getPackageFragment("JavaSearch", "src", "p3.p2.p");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
pkg,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"src/PackageReference/A.java [p3.p2.p]\n" +
"src/PackageReference/B.java [p3.p2.p]\n" +
"src/PackageReference/C.java PackageReference.C [p3.p2.p]\n" +
"src/PackageReference/D.java PackageReference.D.x [p3.p2.p]\n" +
"src/PackageReference/E.java PackageReference.E.x [p3.p2.p]\n" +
"src/PackageReference/F.java PackageReference.F.foo() -> p3.p2.p.X [p3.p2.p]\n" +
"src/PackageReference/G.java PackageReference.G.foo(p3.p2.p.X) -> void [p3.p2.p]\n" +
"src/PackageReference/H.java PackageReference.H.foo() -> void [p3.p2.p]\n" +
"src/PackageReference/I.java PackageReference.I.foo() -> void [p3.p2.p]\n" +
"src/PackageReference/J.java PackageReference.J.foo() -> void [p3.p2.p]",
resultCollector.toString());
}
/**
* Type reference inside an argument, a return type or a field type.
* (Regression test for PR #1GA7QA1)
*/
public void testVariousTypeReferences() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "NoReference", "A.java").getType("A");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
type,
REFERENCES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"", // no reference should be found
resultCollector.toString());
}
/**
* Write access reference in a qualified name reference test.
* (regression test for bug 7344 Search - write acces give wrong result)
*/
public void testReadWriteAccessInQualifiedNameReference() throws JavaModelException, CoreException {
IType type = getCompilationUnit("JavaSearch", "src", "a8", "A.java").getType("A");
IField field = type.getField("a");
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
resultCollector = new JavaSearchResultCollector();
new SearchEngine().search(
getWorkspace(),
field,
WRITE_ACCESSES,
getJavaSearchScope(),
resultCollector);
assertEquals(
"",
resultCollector.toString());
}
}