/******************************************************************************* * Copyright (c) 2000, 2015 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation * Stephan Herrmann - Contribution for bug 215139 *******************************************************************************/ package org.eclipse.jdt.core.tests.model; import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.Hashtable; import junit.framework.Test; import org.eclipse.core.resources.*; import org.eclipse.core.runtime.*; import org.eclipse.jdt.core.*; import org.eclipse.jdt.core.search.*; import org.eclipse.jdt.core.tests.util.Util; import org.eclipse.jdt.internal.core.JavaModelStatus; /** * Tests the Java search engine where results are JavaElements and source positions. */ @SuppressWarnings({"rawtypes", "unchecked"}) public class JavaSearchTests extends AbstractJavaSearchTests { public JavaSearchTests(String name) { super(name); } public static Test suite() { return buildModelTestSuite(JavaSearchTests.class); } // Use this static initializer to specify subset for tests // All specified tests which do not belong to the class are skipped... static { // org.eclipse.jdt.internal.core.search.BasicSearchEngine.VERBOSE = true; // TESTS_PREFIX = "testPackageDeclaration"; // TESTS_NAMES = new String[] { "testMethodReference17" }; // TESTS_NUMBERS = new int[] { 113671 }; // TESTS_RANGE = new int[] { 16, -1 }; } /* (non-Javadoc) * @see org.eclipse.jdt.core.tests.model.AbstractJavaModelTests#copyDirectory(java.io.File, java.io.File) */ protected void copyDirectory(File sourceDir, File targetDir) throws IOException { if (!targetDir.exists()) { super.copyDirectory(sourceDir, targetDir); } } /* (non-Javadoc) * @see org.eclipse.jdt.core.tests.model.SuiteOfTestCases#setUpSuite() */ public void setUpSuite() throws Exception { super.setUpSuite(); if (JAVA_PROJECT == null) { JAVA_PROJECT = setUpJavaProject("JavaSearch"); setUpJavaProject("JavaSearch15", "1.5"); } } public void tearDownSuite() throws Exception { if (JAVA_SEARCH_SUITES == null) { deleteProject("JavaSearch"); deleteProject("JavaSearch15"); } else { JAVA_SEARCH_SUITES.remove(getClass()); if (JAVA_SEARCH_SUITES.size() == 0) { deleteProject("JavaSearch"); deleteProject("JavaSearch15"); } } super.tearDownSuite(); } /** * Simple constructor declaration test. */ public void testConstructorDeclaration01() throws CoreException { // was testSimpleConstructorDeclaration IType type = getCompilationUnit("JavaSearch", "src", "p", "A.java").getType("A"); IMethod constructor = type.getMethod("A", new String[] {"QX;"}); search( constructor, DECLARATIONS, getJavaSearchScope(), this.resultCollector); assertSearchResults("src/p/A.java p.A(X) [A]", this.resultCollector); } /** * Constructor declaration in jar file test. */ public void testConstructorDeclaration02() throws CoreException { // was testConstructorDeclarationInJar IType type = getClassFile("JavaSearch", "MyJar.jar", "p1", "A.class").getType(); IMethod method = type.getMethod("A", new String[] {"Ljava.lang.String;"}); search( method, DECLARATIONS, getJavaSearchScope(), this.resultCollector); assertSearchResults( "MyJar.jar p1.A(java.lang.String) [No source]", this.resultCollector); } /** * Simple constructor reference test. */ public void testConstructorReference01() throws CoreException { // was testSimpleConstructorReference1 IType type = getCompilationUnit("JavaSearch", "src", "p", "A.java").getType("A"); IMethod constructor = type.getMethod("A", new String[] {"QX;"}); search( constructor, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/Test.java void Test.main(String[]) [new p.A(y)]", this.resultCollector); } /** * Simple constructor reference test. */ public void testConstructorReference02() throws CoreException { // was testSimpleConstructorReference2 search( "p.A(X)", CONSTRUCTOR, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/Test.java void Test.main(String[]) [new p.A(y)]", this.resultCollector); } /** * Constructor reference using an explicit constructor call. */ public void testConstructorReference03() throws CoreException { // was testConstructorReferenceExplicitConstructorCall1 IType type = getCompilationUnit("JavaSearch", "src", "p", "Y.java").getType("Y"); IMethod method = type.getMethod("Y", new String[] {"I"}); search( method, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/p/Z.java p.Z(int) [super(i);]", this.resultCollector); } /** * Constructor reference using an explicit constructor call. */ public void testConstructorReference04() throws CoreException { // was testConstructorReferenceExplicitConstructorCall2 IType type = getCompilationUnit("JavaSearch", "src", "p", "X.java").getType("X"); IMethod method = type.getMethod("X", new String[] {"I"}); search( method, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/p/Y.java p.Y(int) [super(i);]\n" + "src/p/Y.java p.Y(boolean) [super(1);]", this.resultCollector); } /** * 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 testConstructorReference05() throws CoreException { // was testConstructorReferenceImplicitConstructorCall1 IType type = getCompilationUnit("JavaSearch", "src", "c7", "X.java").getType("X"); IMethod method = type.getMethod("X", new String[] {}); search( method, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/c7/Y.java c7.Y() [Y]", this.resultCollector); } /** * 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 testConstructorReference06() throws CoreException { // was testConstructorReferenceImplicitConstructorCall2 search( "c8.X()", CONSTRUCTOR, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/c8/Y.java c8.Y [Y]", this.resultCollector); } /** * Constructor reference in a field initializer. * (regression test for PR 1GKZ8VZ: ITPJCORE:WINNT - Search - did not find references to member constructor) */ public void testConstructorReference07() throws CoreException { // was testConstructorReferenceInFieldInitializer IType type = getCompilationUnit("JavaSearch", "src", "", "A.java").getType("A").getType("Inner"); IMethod method = type.getMethod("Inner", new String[] {"I"}); search( method, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/A.java A.field [new Inner(1)]\n" + "src/A.java A.field [new Inner(2)]", this.resultCollector); } /** * Constructor reference in case of default constructor of member type * (regression test for bug 43276) */ public void testConstructorReference08() throws CoreException { // was testConstructorReferenceDefaultConstructorOfMemberClass search( "c10.X.Inner()", CONSTRUCTOR, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/c10/X.java c10.B() [new X().super();]", this.resultCollector); } /* * Generic constructor reference */ public void testConstructorReference09() throws CoreException { IType type = getCompilationUnit("JavaSearch15/src/p2/X.java").getType("X"); IMethod method = type.getMethod("X", new String[] {"QE;"}); search( method, REFERENCES, ERASURE_RULE, getJavaSearchScope15(), this.resultCollector); assertSearchResults( "src/p2/Y.java Object p2.Y.foo() [new X<Object>(this)]", this.resultCollector); } /** * 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 testConstructorReference10() throws CoreException { // was testConstructorReferenceImplicitConstructorCall2 this.resultCollector.showSynthetic(); search( "c11.A()", CONSTRUCTOR, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/c11/A.java c11.A1 [A1] SYNTHETIC\n" + "src/c11/A.java c11.A2() [A2] SYNTHETIC\n" + "src/c11/A.java c11.A3() [super();]", this.resultCollector); } /** * CoreException thrown during accept. * (regression test for PR #1G3UI7A) */ public void testCoreException() throws CoreException { IType type = getCompilationUnit("JavaSearch", "src", "p", "X.java").getType("X"); SearchRequestor result = new SearchRequestor() { public void acceptSearchMatch(SearchMatch match) throws CoreException { throw new CoreException(new JavaModelStatus(-1, "test")); } }; try { search( type, DECLARATIONS, getJavaSearchScope(), result); } catch (CoreException e) { assertEquals("Unexpected CoreException has been thrown", "test", e.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 CoreException { IMethod method = getCompilationUnit("JavaSearch", "src", "a5", "B.java"). getType("C").getMethod("i", new String[] {}); searchDeclarationsOfAccessedFields( method, this.resultCollector ); assertSearchResults( "", this.resultCollector); } /** * Declaration of accessed fields test. * (regression test for bug 6538 searchDeclarationsOf* incorrect) */ public void testDeclarationOfAccessedFields2() throws CoreException { IMethod method = getCompilationUnit("JavaSearch", "src", "a6", "A.java"). getType("B").getMethod("m", new String[] {}); searchDeclarationsOfAccessedFields( method, this.resultCollector ); assertSearchResults( "src/a6/A.java a6.B.f [f]", this.resultCollector); } /** * Declaration of accessed fields test. * (regression test for bug 10386 NPE in MatchLocator.lookupType) */ public void testDeclarationOfAccessedFields3() throws CoreException { IMethod method = getCompilationUnit("JavaSearch", "src", "b6", "A.java"). getType("A").getMethod("foo", new String[] {}); searchDeclarationsOfAccessedFields( method, this.resultCollector ); assertSearchResults( "src/b6/A.java b6.A.field [field]", this.resultCollector); } /** * https://bugs.eclipse.org/bugs/show_bug.cgi?id=328554 */ public void testDeclarationOfAccessedFields4() throws CoreException { IMethod method = getCompilationUnit("JavaSearch", "src", "b10", "A.java"). getType("A").getMethod("foo", new String[] {}); searchDeclarationsOfAccessedFields( method, this.resultCollector ); assertSearchResults( "", this.resultCollector); } /** * Declaration of referenced types test. */ public void testDeclarationOfReferencedTypes01() throws CoreException { IMethod method = getCompilationUnit("JavaSearch", "src", "a3", "References.java"). getType("References").getMethod("foo", new String[] {}); searchDeclarationsOfReferencedTypes( method, this.resultCollector ); assertSearchResults( "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]", this.resultCollector); } /** * Declaration of referenced types test. * (Regression test for bug 6779 searchDeclarationsOfReferencedTyped - missing exception types) */ public void testDeclarationOfReferencedTypes02() throws CoreException { IMethod method = getCompilationUnit("JavaSearch", "src", "a7", "X.java"). getType("X").getMethod("foo", new String[] {}); searchDeclarationsOfReferencedTypes( method, this.resultCollector ); assertSearchResults( "src/a7/X.java a7.MyException [MyException]", this.resultCollector); } /** * Declaration of referenced types test. * (Regression test for bug 12649 Missing import after move ) */ public void testDeclarationOfReferencedTypes03() throws CoreException { ICompilationUnit unit = getCompilationUnit("JavaSearch", "src", "c1", "A.java"); searchDeclarationsOfReferencedTypes( unit, this.resultCollector ); assertSearchResults( "src/c1/I.java c1.I [I]", this.resultCollector); } /** * Declaration of referenced types test. * (Regression test for bug 12649 Missing import after move ) */ public void testDeclarationOfReferencedTypes04() throws CoreException { ICompilationUnit unit = getCompilationUnit("JavaSearch", "src", "c1", "B.java"); searchDeclarationsOfReferencedTypes( unit, this.resultCollector ); assertSearchResults( "src/c1/I.java c1.I [I]", this.resultCollector); } /** * Declaration of referenced types test. * (Regression test for bug 18418 search: searchDeclarationsOfReferencedTypes reports import declarations) */ public void testDeclarationOfReferencedTypes05() throws CoreException { ICompilationUnit unit = getCompilationUnit("JavaSearch", "src", "c2", "A.java"); searchDeclarationsOfReferencedTypes( unit, this.resultCollector ); assertSearchResults( "src/c3/C.java c3.C [C]", this.resultCollector); } /** * Declaration of referenced types test. * (Regression test for bug 24934 Move top level doesn't optimize the imports[refactoring]) */ public void testDeclarationOfReferencedTypes06() throws CoreException { ICompilationUnit unit = getCompilationUnit("JavaSearch", "src", "d1", "X.java"); IType innerType = unit.getType("X").getType("Inner"); searchDeclarationsOfReferencedTypes( innerType, this.resultCollector ); assertSearchResults( "src/d2/Y.java d2.Y [Y]", this.resultCollector); } /** * Declaration of referenced types test. * (Regression test for bug 37438 searchenging NPE in searchDeclarationsOfReferencedTypes ) */ public void testDeclarationOfReferencedTypes07() throws CoreException { IPackageFragment pkg = getPackageFragment("JavaSearch", "src", "r7"); boolean iae = false; try { searchDeclarationsOfReferencedTypes( pkg, this.resultCollector ); } catch (IllegalArgumentException exception) { assertSearchResults(""); iae = true; } assertTrue("We should get an IAE!", iae); } /** * Declaration of referenced types test. * (Regression test for bug 47787 IJavaSearchResultCollector.aboutToStart() and done() not called) */ public void testDeclarationOfReferencedTypes08() throws CoreException { ICompilationUnit unit = getCompilationUnit("JavaSearch", "src", "r7", "A.java"); JavaSearchResultCollector result = new JavaSearchResultCollector() { public void beginReporting() { addLine("Starting search..."); } public void endReporting() { addLine("Done searching."); } }; searchDeclarationsOfReferencedTypes(unit, result); assertSearchResults( "Starting search...\n"+ "Done searching.", result); } /** * Declaration of referenced types test. * (Regression test for bug 68862 [1.5] ClassCastException when moving a a java file ) */ public void testDeclarationOfReferencedTypes09() throws CoreException { ICompilationUnit cu = getCompilationUnit("JavaSearch15/src/p3/X.java"); JavaSearchResultCollector result = new JavaSearchResultCollector() { public void beginReporting() { addLine("Starting search..."); } public void endReporting() { addLine("Done searching."); } }; searchDeclarationsOfReferencedTypes( cu, result ); assertSearchResults( "Starting search...\n" + getExternalJCLPathString("1.5") + " java.lang.Object\n" + "Done searching.", result); } /** * Simple declarations of sent messages test. */ public void testDeclarationsOfSentMessages01() throws CoreException { // was testSimpleDeclarationsOfSentMessages ICompilationUnit cu = getCompilationUnit("JavaSearch", "src", "", "Test.java"); searchDeclarationsOfSentMessages( cu, this.resultCollector); assertSearchResults( "src/p/X.java void p.X.foo(int, String, X) [foo(int i, String s, X x)]\n" + "src/p/Y.java void p.Y.bar() [bar()]\n" + "src/p/Z.java void p.Z.foo(int, String, X) [foo(int i, String s, X x)]\n" + "src/p/A.java void p.A.foo(int, String, X) [foo(int i, String s, X x)]", this.resultCollector); } /** * Declaration of sent messages test. * (regression test for bug 6538 searchDeclarationsOf* incorrect) */ public void testDeclarationsOfSentMessages02() throws CoreException { // was testDeclarationOfSentMessages IMethod method = getCompilationUnit("JavaSearch", "src", "a5", "B.java"). getType("C").getMethod("i", new String[] {}); searchDeclarationsOfSentMessages( method, this.resultCollector ); assertSearchResults( "", this.resultCollector); } /* * Ensures that a method declaration in an external library folder can be found */ public void testExternalFolder1() throws CoreException { try { createExternalFolder("externalLib"); Util.compile( new String[] { "p/X.java", "package p;\n" + "public class X {\n" + " public void foo() {\n" + " }\n" + "}" }, new HashMap(), getExternalResourcePath("externalLib") ); createJavaProject("P", new String[0], new String[] {getExternalResourcePath("externalLib")}, ""); IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaProject[] {getJavaProject("P")}); search("foo", METHOD, DECLARATIONS, scope); assertSearchResults( getExternalPath() + "externalLib void p.X.foo()", this.resultCollector); } finally { deleteProject("P"); deleteExternalResource("externalLib"); } } /* * Ensures that search all type names returns the types in an external library folder */ public void testExternalFolder2() throws CoreException { try { createExternalFolder("externalLib"); Util.compile( new String[] { "p/ExternalType.java", "package p;\n" + "public class ExternalType {\n" + "}" }, new HashMap(), getExternalResourcePath("externalLib") ); createJavaProject("P", new String[0], new String[] {getExternalResourcePath("externalLib")}, ""); TypeNameMatchCollector collector = new TypeNameMatchCollector(); new SearchEngine(this.workingCopies).searchAllTypeNames( null, SearchPattern.R_EXACT_MATCH, "ExternalType".toCharArray(), SearchPattern.R_EXACT_MATCH, TYPE, SearchEngine.createJavaSearchScope(new IJavaProject[] {getJavaProject("P")}), collector, IJavaSearchConstants.WAIT_UNTIL_READY_TO_SEARCH, null ); assertSearchResults( "ExternalType (not open) [in ExternalType.class [in p [in "+ getExternalPath() + "externalLib]]]", collector ); } finally { deleteProject("P"); deleteExternalResource("externalLib"); } } /* * Ensures that search all type names returns the types in an external library folder * when using a workspace scope * (regression test for https://bugs.eclipse.org/bugs/show_bug.cgi?id=229304 ) */ public void testExternalFolder3() throws CoreException { try { createExternalFolder("externalLib"); Util.compile( new String[] { "p/ExternalType229304.java", "package p;\n" + "public class ExternalType229304 {\n" + "}" }, new HashMap(), getExternalResourcePath("externalLib") ); createJavaProject("P", new String[0], new String[] {getExternalResourcePath("externalLib")}, ""); TypeNameMatchCollector collector = new TypeNameMatchCollector(); new SearchEngine(this.workingCopies).searchAllTypeNames( null, SearchPattern.R_EXACT_MATCH, "ExternalType229304".toCharArray(), SearchPattern.R_EXACT_MATCH, TYPE, SearchEngine.createWorkspaceScope(), collector, IJavaSearchConstants.WAIT_UNTIL_READY_TO_SEARCH, null ); assertSearchResults( "ExternalType229304 (not open) [in ExternalType229304.class [in p [in "+ getExternalPath() + "externalLib]]]", collector ); } finally { deleteProject("P"); deleteExternalResource("externalLib"); } } /* * Ensures that a method declaration in an external ZIP archive can be found */ public void testZIPArchive1() throws Exception { try { createJar( new String[] { "p/X.java", "package p;\n" + "public class X {\n" + " public void foo() {\n" + " }\n" + "}" }, getExternalResourcePath("externalLib.abc")); IJavaProject p = createJavaProject("P", new String[0], new String[] {getExternalResourcePath("externalLib.abc")}, ""); refreshExternalArchives(p); waitUntilIndexesReady(); IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaProject[] {getJavaProject("P")}); search("foo", METHOD, DECLARATIONS, scope); assertSearchResults( getExternalPath() + "externalLib.abc void p.X.foo()", this.resultCollector); } finally { deleteExternalResource("externalLib.abc"); deleteProject("P"); } } /* * Ensures that search all type names returns the types in an external ZIP archive */ public void testZIPArchive2() throws Exception { try { IJavaProject p = createJavaProject("P", new String[0], new String[] {getExternalResourcePath("externalLib.abc")}, ""); createJar( new String[] { "p/ExternalType.java", "package p;\n" + "public class ExternalType {\n" + "}" }, getExternalResourcePath("externalLib.abc")); refreshExternalArchives(p); waitUntilIndexesReady(); TypeNameMatchCollector collector = new TypeNameMatchCollector(); new SearchEngine(this.workingCopies).searchAllTypeNames( null, SearchPattern.R_EXACT_MATCH, "ExternalType".toCharArray(), SearchPattern.R_EXACT_MATCH, TYPE, SearchEngine.createJavaSearchScope(new IJavaProject[] {getJavaProject("P")}), collector, IJavaSearchConstants.WAIT_UNTIL_READY_TO_SEARCH, null ); assertSearchResults( "ExternalType (not open) [in ExternalType.class [in p [in "+ getExternalPath() + "externalLib.abc]]]", collector ); } finally { deleteExternalResource("externalLib.abc"); deleteProject("P"); } } /** * Simple field declaration test. */ public void testFieldDeclaration01() throws CoreException { // was testSimpleFieldDeclaration IType type = getCompilationUnit("JavaSearch", "src", "p", "A.java").getType("A"); IField field = type.getField("x"); search( field, DECLARATIONS, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/p/A.java p.A.x [x]", this.resultCollector); } /** * Field declaration in jar file test. */ public void testFieldDeclaration02() throws CoreException { // was testFieldDeclarationInJar IType type = getClassFile("JavaSearch", "MyJar.jar", "p1", "A.class").getType(); IField field = type.getField("field"); search( field, DECLARATIONS, getJavaSearchScope(), this.resultCollector); assertSearchResults( "MyJar.jar p1.A.field [No source]", this.resultCollector); } /** * Field declaration with array type test. * (regression test for PR 1GKEG73: ITPJCORE:WIN2000 - search (136): missing field declaration) */ public void testFieldDeclaration03() throws CoreException { // was testFieldDeclarationArrayType IType type = getCompilationUnit("JavaSearch", "src", "", "B.java").getType("B"); IField field = type.getField("open"); search( field, DECLARATIONS, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/B.java B.open [open]", this.resultCollector); } /** * Field declaration with wild card test. * (regression test for bug 21763 Problem in Java search [search] ) */ public void testFieldDeclaration04() throws CoreException { // was testFieldDeclarationWithWildCard search( "class*path", FIELD, DECLARATIONS, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/c5/Test.java c5.Test.class_path [class_path]", this.resultCollector); } /** * Field reference test. * (regression test for bug #3433 search: missing field occurrecnces (1GKZ8J6)) */ public void testFieldReference01() throws CoreException { // was testFieldReference IType type = getCompilationUnit("JavaSearch", "src", "p8", "A.java").getType("A"); IField field = type.getField("g"); search( field, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/p8/A.java void p8.A.m() [g]\n" + "src/p8/A.java void p8.B.m() [g]", this.resultCollector); } /** * Field reference test. * (regression test for PR 1GK8TXE: ITPJCORE:WIN2000 - search: missing field reference) */ public void testFieldReference02() throws CoreException { IType type = getCompilationUnit("JavaSearch", "src", "p9", "X.java").getType("X"); IField field = type.getField("f"); search( field, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/p9/X.java void p9.X.m() [f]", this.resultCollector); } /** * Field reference test. * (regression test for bug 5821 Refactor > Rename renames local variable instead of member in case of name clash ) */ public void testFieldReference03() throws CoreException { IType type = getCompilationUnit("JavaSearch", "src", "q8", "EclipseTest.java").getType("EclipseTest"); IField field = type.getField("test"); this.resultCollector.showPotential(false); search(field, REFERENCES, getJavaSearchScope()); assertSearchResults( "src/q8/EclipseTest.java void q8.EclipseTest.main(String[]) [test]" ); } /** * Field reference test. * (regression test for bug 5923 Search for "length" field refs finds [].length) */ public void testFieldReference04() throws CoreException { IType type = getCompilationUnit("JavaSearch", "src", "a2", "X.java").getType("X"); IField field = type.getField("length"); search( field, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/a2/X.java void a2.X.foo() [length]", this.resultCollector); } /** * Field reference test. * (regression test for bug 7987 Field reference search should do lookup in 1.4 mode) */ public void testFieldReference05() throws 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 { search( field, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/b1/B.java void b1.B.foo() [x]", this.resultCollector); } 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 testFieldReference06() throws CoreException { IType type = getCompilationUnit("JavaSearch", "src", "c4", "X.java").getType("X"); IField field = type.getField("x"); search( field, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/c4/X.java int c4.X.foo() [x]", this.resultCollector); } /** * Field reference test. * (regression test for bug 61017 Refactoring - test case that results in uncompilable source) */ public void testFieldReference07() throws CoreException { IType type = getCompilationUnit("JavaSearch", "src", "s5", "A.java").getType("A"); IField field = type.getField("b"); search( field, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/s5/A.java void s5.A.method() [b]", this.resultCollector); } /** * Simple field reference test. */ public void testFieldReference08() throws CoreException { // was testSimpleFieldReference IType type = getCompilationUnit("JavaSearch", "src", "p", "A.java").getType("A"); IField field = type.getField("x"); search( field, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/Test.java void Test.main(String[]) [x]\n" + "src/p/A.java p.A(X) [x]", this.resultCollector); } /** * Simple field read access reference test. */ public void testFieldReference09() throws CoreException { // was testSimpleReadFieldReference IType type = getCompilationUnit("JavaSearch", "src", "p", "A.java").getType("A"); IField field = type.getField("x"); search( field, READ_ACCESSES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/Test.java void Test.main(String[]) [x]", this.resultCollector); } /** * Simple write field access reference test. */ public void testFieldReference10() throws CoreException { // was testSimpleWriteFieldReference IType type = getCompilationUnit("JavaSearch", "src", "p", "A.java").getType("A"); IField field = type.getField("x"); search( field, WRITE_ACCESSES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/p/A.java p.A(X) [x]", this.resultCollector); } /** * Multiple field references in one ast test. * (regression test for PR 1GD79XM: ITPJCORE:WINNT - Search - search for field references - not all found) */ public void testFieldReference11() throws CoreException { // was testMultipleFieldReference IType type = getCompilationUnit("JavaSearch", "src", "p5", "A.java").getType("A"); IField field = type.getField("x"); search( field, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/p5/A.java void p5.A.k() [x]\n" + "src/p5/A.java void p5.A.k() [x]\n" + "src/p5/A.java void p5.A.k() [x]", this.resultCollector); } /** * Static field reference test. * (regression test for PR #1G2P5EP) */ public void testFieldReference12() throws CoreException { // was testStaticFieldReference IType type = getCompilationUnit("JavaSearch", "src", "p", "A.java").getType("A"); IField field = type.getField("DEBUG"); search( field, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/p/A.java void p.A.foo() [DEBUG]", this.resultCollector); } /** * Field reference in inner class test. * (regression test for PR 1GL11J6: ITPJCORE:WIN2000 - search: missing field references (nested types)) */ public void testFieldReference13() throws CoreException { // was testFieldReferenceInInnerClass IType type = getCompilationUnit("JavaSearch", "src", "", "O.java").getType("O"); IField field = type.getField("y"); search( field, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/O.java void O$I.y() [y]", this.resultCollector); } /** * Field reference in anonymous class test. * (regression test for PR 1GL12XE: ITPJCORE:WIN2000 - search: missing field references in inner class) */ public void testFieldReference14() throws CoreException { // was testFieldReferenceInAnonymousClass IType type = getCompilationUnit("JavaSearch", "src", "", "D.java").getType("D"); IField field = type.getField("h"); search( field, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/D.java void void D.g():<anonymous>#1.run() [h]", this.resultCollector); } /** * Field reference through subclass test. * (regression test for PR 1GKB9YH: ITPJCORE:WIN2000 - search for field refs - incorrect results) */ public void testFieldReference15() throws CoreException { // was testFieldReferenceThroughSubclass IType type = getCompilationUnit("JavaSearch", "src", "p6", "A.java").getType("A"); IField field = type.getField("f"); search( field, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/p6/A.java void p6.A.m() [f]\n" + "src/p6/A.java void p6.B.m() [f]\n" + "src/p6/A.java void p6.B.m() [f]", this.resultCollector); type = getCompilationUnit("JavaSearch", "src", "p6", "A.java").getType("AA"); field = type.getField("f"); this.resultCollector = new JavaSearchResultCollector(); search( field, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/p6/A.java void p6.B.m() [f]", this.resultCollector); } /** * 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 testFieldReference16() throws CoreException { // was testReadWriteFieldReferenceInCompoundExpression IType type = getCompilationUnit("JavaSearch", "src", "a4", "X.java").getType("X"); IField field = type.getField("field"); // Read reference search( field, READ_ACCESSES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/a4/X.java void a4.X.foo() [field]", this.resultCollector); // Write reference this.resultCollector = new JavaSearchResultCollector(); search( field, WRITE_ACCESSES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/a4/X.java void a4.X.foo() [field]", this.resultCollector); } /** * Write access reference in a qualified name reference test. * (regression test for bug 7344 Search - write acces give wrong result) */ public void testFieldReference17() throws CoreException { // was testReadWriteAccessInQualifiedNameReference IType type = getCompilationUnit("JavaSearch", "src", "a8", "A.java").getType("A"); IField field = type.getField("a"); search( field, WRITE_ACCESSES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "", this.resultCollector); } /** * Field reference in brackets test. * (regression test for bug 23329 search: incorrect range for type references in brackets) */ public void testFieldReference18() throws CoreException { // was testFieldReferenceInBrackets IType type = getCompilationUnit("JavaSearch", "src", "s3", "A.java").getType("A"); IField field = type.getField("field"); search( field, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/s3/A.java int s3.A.bar() [field]", this.resultCollector); } /** * Accurate field reference test. */ public void testFieldReference19() throws CoreException { // was testAccurateFieldReference1 search( "d6.X.CONSTANT", FIELD, REFERENCES, SearchEngine.createJavaSearchScope(new IJavaElement[] { getPackageFragment("JavaSearch", "src", "d6") }), this.resultCollector); assertSearchResults( "src/d6/Y.java d6.Y.T [CONSTANT]", this.resultCollector); } /** * Field reference inside/outside doc comment. */ public void testFieldReference20() throws CoreException { // was testFieldReferenceInOutDocComment IType type = getCompilationUnit("JavaSearch", "src", "s4", "X.java").getType("X"); IField field = type.getField("x"); this.resultCollector.showInsideDoc(); search(field, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/s4/X.java int s4.X.foo() [x] OUTSIDE_JAVADOC\n" + "src/s4/X.java void s4.X.bar() [x] INSIDE_JAVADOC", this.resultCollector); } /** * Interface implementors test. */ public void testInterfaceImplementors1() throws CoreException { // was testInterfaceImplementors // implementors of an interface IType type = getCompilationUnit("JavaSearch", "src", "p", "I.java").getType("I"); search( type, IMPLEMENTORS, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/InterfaceImplementors.java InterfaceImplementors [p.I]\n" + "src/p/X.java p.X [I]", this.resultCollector); /** * Implementors of a class should now give a match * Bug 1G5HBQA: "ITPJUI:WINNT - Search - search for implementors of a class finds subclasses" is cancelled * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=124645" */ type = getCompilationUnit("JavaSearch", "src", "p", "X.java").getType("X"); this.resultCollector = new JavaSearchResultCollector(); search( type, IMPLEMENTORS, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/p/Y.java p.Y [X]", this.resultCollector); } /** * Interface implementors test. * (regression test for bug 22102 Not all implementors found for IPartListener) */ public void testInterfaceImplementors2() throws CoreException { // implementors of an interface IType type = getCompilationUnit("JavaSearch", "src", "r2", "I.java").getType("I"); search( type, IMPLEMENTORS, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/r2/X.java r2.X.field:<anonymous>#1 [I]", this.resultCollector); } /* * Local variable declaration test. * (SingleNameReference) */ public void testLocalVariableDeclaration1() throws CoreException { ILocalVariable localVar = getLocalVariable("/JavaSearch/src/f1/X.java", "var1 = 1;", "var1"); search( localVar, DECLARATIONS, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/f1/X.java void f1.X.foo1().var1 [var1]", this.resultCollector); } /* * Local variable declaration test. * (QualifiedNameReference) */ public void testLocalVariableDeclaration2() throws CoreException { ILocalVariable localVar = getLocalVariable("/JavaSearch/src/f1/X.java", "var2 = new X();", "var2"); search( localVar, DECLARATIONS, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/f1/X.java void f1.X.foo2().var2 [var2]", this.resultCollector); } /** * @bug 207257: [search] SearchEngine returns incorrectly typed SearchMatch when searching for local variable declarations * @test The accepted match should be a {@link LocalVariableDeclarationMatch} * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=207257" */ public void testLocalVariableDeclaration_Bug207257() throws CoreException { ILocalVariable localVar = getLocalVariable("/JavaSearch/src/f1/X.java", "var1 = 1;", "var1"); search( localVar, DECLARATIONS, getJavaSearchScope(), this.resultCollector); assertEquals("Invalid Search Match class", LocalVariableDeclarationMatch.class, this.resultCollector.match.getClass()); } /* * Local variable occurrences test. * (SingleNameReference) */ public void testLocalVariableOccurrences1() throws CoreException { ILocalVariable localVar = getLocalVariable("/JavaSearch/src/f1/X.java", "var1 = 1;", "var1"); search( localVar, ALL_OCCURRENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/f1/X.java void f1.X.foo1().var1 [var1]\n" + "src/f1/X.java void f1.X.foo1() [var1]", this.resultCollector); } /* * Local variable occurences test. * (QualifiedNameReference) */ public void testLocalVariableOccurrences2() throws CoreException { ILocalVariable localVar = getLocalVariable("/JavaSearch/src/f1/X.java", "var2 = new X();", "var2"); search( localVar, ALL_OCCURRENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/f1/X.java void f1.X.foo2().var2 [var2]\n" + "src/f1/X.java void f1.X.foo2() [var2]", this.resultCollector); } /* * Local variable reference test. * (SingleNameReference) */ public void testLocalVariableReference1() throws CoreException { ILocalVariable localVar = getLocalVariable("/JavaSearch/src/f1/X.java", "var1 = 1;", "var1"); search( localVar, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/f1/X.java void f1.X.foo1() [var1]", this.resultCollector); } /* * Local variable reference test. * (QualifiedNameReference) */ public void testLocalVariableReference2() throws CoreException { ILocalVariable localVar = getLocalVariable("/JavaSearch/src/f1/X.java", "var2 = new X();", "var2"); search( localVar, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/f1/X.java void f1.X.foo2() [var2]", this.resultCollector); } /* * Local variable reference test. * (regression test for bug 48725 Cannot search for local vars in jars.) */ public void testLocalVariableReference3() throws CoreException { IClassFile classFile = getClassFile("JavaSearch", "test48725.jar", "p48725", "X.class"); ILocalVariable localVar = (ILocalVariable) codeSelect(classFile, "local = 1;", "local")[0]; search( localVar, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "test48725.jar int p48725.<anonymous>.bar()", this.resultCollector); } /** * Simple method declaration test. */ public void testMethodDeclaration01() throws CoreException { // was testSimpleMethodDeclaration IType type = getCompilationUnit("JavaSearch", "src", "p", "X.java").getType("X"); IMethod method = type.getMethod("foo", new String[] {"I", "QString;", "QX;"}); search( method, DECLARATIONS, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/p/X.java void p.X.foo(int, String, X) [foo]\n" + "src/p/Z.java void p.Z.foo(int, String, X) [foo]", this.resultCollector); } /** * Method declaration test. * (regression test for bug 38568 Search for method declarations fooled by array types) */ public void testMethodDeclaration02() throws CoreException { // was testMethodDeclaration IType type = getCompilationUnit("JavaSearch", "src", "e2", "X.java").getType("X"); search( "foo(String, String)", METHOD, DECLARATIONS, SearchEngine.createJavaSearchScope(new IJavaElement[] {type}), this.resultCollector); assertSearchResults( "src/e2/X.java void e2.X.foo(String, String) [foo]", this.resultCollector); } /** * Inner method declaration test. */ public void testMethodDeclaration03() throws CoreException { // was testInnerMethodDeclaration IType type = getCompilationUnit("JavaSearch", "src", "p", "X.java").getType("X").getType("Inner"); IMethod method = type.getMethod("foo", new String[] {}); search( method, DECLARATIONS, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/p/X.java String p.X$Inner.foo() [foo]", this.resultCollector); } /** * Method declaration in hierarchy test. */ public void testMethodDeclaration04() throws CoreException { // was testMethodDeclarationInHierarchyScope1 IType type = getCompilationUnit("JavaSearch", "src", "p", "X.java").getType("X"); search( "foo", METHOD, DECLARATIONS, SearchEngine.createHierarchyScope(type), this.resultCollector); assertSearchResults( "src/p/X.java void p.X.foo(int, String, X) [foo]\n" + "src/p/X.java String p.X$Inner.foo() [foo]\n" + "src/p/Z.java void p.Z.foo(int, String, X) [foo]", this.resultCollector); } /** * Method declaration in hierarchy that contains elements in external jar. * (regression test for PR #1G2E4F1) */ public void testMethodDeclaration05() throws CoreException { // was testMethodDeclarationInHierarchyScope2 IType type = getCompilationUnit("JavaSearch", "src", "p", "X.java").getType("X"); IMethod method = type.getMethod("foo", new String[] {"I", "QString;", "QX;"}); search( method, DECLARATIONS, SearchEngine.createHierarchyScope(type), this.resultCollector); assertSearchResults( "src/p/X.java void p.X.foo(int, String, X) [foo]\n" + "src/p/Z.java void p.Z.foo(int, String, X) [foo]", this.resultCollector); } /** * Method declaration in hierarchy on a secondary type. */ public void testMethodDeclaration06() throws CoreException { // was testMethodDeclarationInHierarchyScope3 IType type = getCompilationUnit("JavaSearch", "src", "d3", "A.java").getType("B"); IMethod method = type.getMethod("foo", new String[] {}); search( method, DECLARATIONS, SearchEngine.createHierarchyScope(type), this.resultCollector); assertSearchResults( "src/d3/A.java void d3.B.foo() [foo]", this.resultCollector); } /** * Method declaration in package test. * (regression tets for PR #1G2KA97) */ public void testMethodDeclaration07() throws CoreException { // was testMethodDeclarationInPackageScope IType type = getCompilationUnit("JavaSearch", "src", "p", "X.java").getType("X"); IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] {type.getPackageFragment()}); search( "main(String[])", METHOD, DECLARATIONS, scope, this.resultCollector); assertSearchResults( "src/p/A.java void p.A.main(String[]) [main]", this.resultCollector); } /** * Method declaration in jar file test. */ public void testMethodDeclaration08() throws CoreException { // was testMethodDeclarationInJar IType type = getClassFile("JavaSearch", "MyJar.jar", "p1", "A.class").getType(); IMethod method = type.getMethod("foo", new String[] {"Ljava.lang.String;"}); search( method, DECLARATIONS, getJavaSearchScope(), this.resultCollector); assertSearchResults( "MyJar.jar boolean p1.A.foo(java.lang.String) [No source]", this.resultCollector); } /** * Method declaration in field initialzer. * (regression test for bug 24346 Method declaration not found in field initializer ) */ public void testMethodDeclaration09() throws CoreException { // was testMethodDeclarationInInitializer search( "foo24346", METHOD, DECLARATIONS, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/c6/X.java void c6.X.x:<anonymous>#1.foo24346() [foo24346]", this.resultCollector); } /* * Method declaration with a missing return type. * (regression test for bug 43080 NPE when searching in CU with incomplete method declaration) */ public void testMethodDeclaration10() throws CoreException { // was testMethodDeclarationNoReturnType IType type = getCompilationUnit("JavaSearch", "src", "e8", "A.java").getType("A"); IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] {type.getPackageFragment()}); search( "m() int", METHOD, DECLARATIONS, scope, this.resultCollector); assertSearchResults( "src/e8/A.java void e8.A.m() [m]", this.resultCollector); } /** * Method declaration with source folder as java search scope. * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=92210" */ public void testMethodDeclaration11() throws CoreException { ICompilationUnit unit = getCompilationUnit("JavaSearch", "otherSrc()", "", "X92210.java"); assertNotNull("Should have found an unit", unit); IJavaElement root = unit.getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT); assertNotNull("Should have found package fragment root", root); IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] {root}); search( "foo", METHOD, DECLARATIONS, scope, this.resultCollector); assertSearchResults( "otherSrc()/X92210.java void X92210.foo() [foo]", this.resultCollector); } /** * Method reference test. * (regression test for bug 5068 search: missing method reference) */ public void testMethodReference01() throws CoreException { IType type = getCompilationUnit("JavaSearch", "src", "q5", "AQ.java").getType("I"); IMethod method = type.getMethod("k", new String[] {}); search( method, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/q5/AQ.java void q5.T.m() [k()]", this.resultCollector); } /** * Method reference test. * (regression test for bug 5069 search: method reference in super missing) */ public void testMethodReference02() throws CoreException { IType type = getCompilationUnit("JavaSearch", "src", "q6", "CD.java").getType("AQ"); IMethod method = type.getMethod("k", new String[] {}); search( method, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/q6/CD.java void q6.AQE.k() [k()]", this.resultCollector); } /** * Method reference test. * (regression test for bug 5070 search: missing interface method reference ) */ public void testMethodReference03() throws CoreException { IType type = getCompilationUnit("JavaSearch", "src", "q7", "AQ.java").getType("I"); IMethod method = type.getMethod("k", new String[] {}); search( method, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/q7/AQ.java void q7.D.h() [k()]", this.resultCollector); } /** * 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 testMethodReference04() throws CoreException { IType type = getCompilationUnit("JavaSearch", "src", "b2", "Y.java").getType("Y"); IMethod method = type.getMethod("foo", new String[] {"QX.Inner;"}); search( method, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/b2/Z.java void b2.Z.bar() [foo(inner)]", this.resultCollector); } /** * Method reference test. * (regression test for bug 49120 search doesn't find references to anonymous inner methods) */ public void testMethodReference05() throws CoreException { IType type = getCompilationUnit("JavaSearch/src/e9/A.java").getType("A").getMethod("foo", new String[] {}).getType("", 1); IMethod method = type.getMethod("bar", new String[] {}); search( method, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/e9/A.java void e9.A.foo() [bar()]", this.resultCollector); } /* * Method reference in second anonymous and second local type of a method test. */ public void testMethodReference06() throws CoreException { IMethod method= getCompilationUnit("JavaSearch/src/f3/X.java").getType("X").getMethod("bar", new String[] {}); search( method, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/f3/X.java void void f3.X.foo():<anonymous>#2.foobar() [bar()]\n" + "src/f3/X.java void void f3.X.foo():Y#2.foobar() [bar()]", this.resultCollector); } /** * Simple method reference test. */ public void testMethodReference07() throws CoreException { // was testSimpleMethodReference IType type = getCompilationUnit("JavaSearch", "src", "p", "X.java").getType("X"); IMethod method = type.getMethod("foo", new String[] {"I", "QString;", "QX;"}); search( method, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/Test.java void Test.main(String[]) [foo(1, \"a\", y)]\n" + // since bug 160301 fix, subclass overridden method calls are not reported //"src/Test.java void Test.main(String[]) [foo(1, \"a\", z)]\n" + "src/p/Z.java void p.Z.foo(int, String, X) [foo(i, s, new Y(true))]", this.resultCollector); } /** * Static method reference test. */ public void testMethodReference08() throws CoreException { // was testStaticMethodReference1 IType type = getCompilationUnit("JavaSearch", "src", "p", "Y.java").getType("Y"); IMethod method = type.getMethod("bar", new String[] {}); search( method, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/Test.java void Test.main(String[]) [bar()]", this.resultCollector); } /** * Static method reference test. */ public void testMethodReference09() throws CoreException { // was testStaticMethodReference2 IType type = getCompilationUnit("JavaSearch", "src", "p", "X.java").getType("X"); IMethod method = type.getMethod("bar", new String[] {}); search( method, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "", this.resultCollector); } /** * Inner method reference test. */ public void testMethodReference10() throws CoreException { // was testInnerMethodReference IType type = getCompilationUnit("JavaSearch", "src", "p", "X.java").getType("X").getType("Inner"); IMethod method = type.getMethod("foo", new String[] {}); search( method, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/p/A.java void p.A.foo(int, String, X) [foo()]", this.resultCollector); } /** * Method reference through super test. */ public void testMethodReference11() throws CoreException { // was testMethodReferenceThroughSuper IType type = getCompilationUnit("JavaSearch", "src", "sd", "AQ.java").getType("AQ"); IMethod method = type.getMethod("k", new String[] {}); search( method, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/sd/AQ.java void sd.AQE.k() [k()]", this.resultCollector); } /** * Method reference in inner class test. */ public void testMethodReference12() throws CoreException { // was testMethodReferenceInInnerClass IType type = getCompilationUnit("JavaSearch", "src", "", "CA.java").getType("CA"); IMethod method = type.getMethod("m", new String[] {}); search( method, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/CA.java void CA$CB.f() [m()]\n" + "src/CA.java void CA$CB$CC.f() [m()]", this.resultCollector); } /** * 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 testMethodReference13() throws CoreException { // was testMethodReferenceInAnonymousClass IType type = getCompilationUnit("JavaSearch", "src", "", "PR_1GGNOTF.java").getType("PR_1GGNOTF"); IMethod method = type.getMethod("method", new String[] {}); search( method, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/PR_1GGNOTF.java void void PR_1GGNOTF.method2():<anonymous>#1.run() [method()]", this.resultCollector); } /** * Method reference through array test. * (regression test for 1GHDA2V: ITPJCORE:WINNT - ClassCastException when doing a search) */ public void testMethodReference14() throws CoreException { // was testMethodReferenceThroughArray IType type = getClassFile("JavaSearch", getExternalJCLPathString(), "java.lang", "Object.class").getType(); IMethod method = type.getMethod("clone", new String[] {}); search( method, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/E.java Object E.foo() [clone()]", this.resultCollector); } /** * Method reference inside/outside doc comment. */ public void testMethodReference15() throws CoreException { // was testMethodReferenceInOutDocComment IType type = getCompilationUnit("JavaSearch", "src", "s4", "X.java").getType("X"); IMethod method = type.getMethod("foo", new String[] {}); this.resultCollector.showInsideDoc(); search(method, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/s4/X.java void s4.X.bar() [foo()] INSIDE_JAVADOC\n" + "src/s4/X.java void s4.X.fred() [foo()] OUTSIDE_JAVADOC", this.resultCollector); } /* * Generic method reference. */ public void testMethodReference16() throws CoreException { IType type = getCompilationUnit("JavaSearch15/src/p2/X.java").getType("X"); IMethod method = type.getMethod("foo", new String[] {"QE;"}); search(method, REFERENCES, ERASURE_RULE, getJavaSearchScope15(), this.resultCollector); assertSearchResults( "src/p2/Y.java void p2.Y.bar() [foo(this)]", this.resultCollector); } /** * Bug 111416: [search] wrong potential matches on a static method open * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=111416" */ public void testMethodReference17() throws CoreException { IType type = getCompilationUnit("JavaSearch/src/b111416/X.java").getType("X"); IMethod method = type.getMethod("open", new String[] {"QString;"}); this.resultCollector.showAccuracy(true); search(method, REFERENCES, ERASURE_RULE, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/b111416/X.java void b111416.X.foo() [open(\"\")] EXACT_MATCH", this.resultCollector); } /** * 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[] {}); SearchPattern leftPattern = createPattern(leftMethod, ALL_OCCURRENCES); IMethod rightMethod = getCompilationUnit("JavaSearch", "src", "q9", "I.java") .getType("A1").getMethod("m", new String[] {}); SearchPattern rightPattern = createPattern(rightMethod, ALL_OCCURRENCES); SearchPattern orPattern = SearchPattern.createOrPattern(leftPattern, rightPattern); this.resultCollector.showAccuracy(true); search( orPattern, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/e8/A.java void e8.A.m() [m] POTENTIAL_MATCH\n" + "src/q9/I.java void q9.I.m() [m] EXACT_MATCH\n" + "src/q9/I.java void q9.A1.m() [m] EXACT_MATCH", this.resultCollector); } /** * Simple package declaration test. */ public void testPackageDeclaration1() throws CoreException { // was testSimplePackageDeclaration IPackageFragment pkg = getPackageFragment("JavaSearch", "src", "p"); search( pkg, DECLARATIONS, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/p p", this.resultCollector); } /** * Various package declarations test. */ public void testPackageDeclaration2() throws CoreException { // was testVariousPackageDeclarations JavaSearchResultCollector packageCollector = new JavaSearchResultCollector(true); search( "p3*", PACKAGE, DECLARATIONS, getJavaSearchScope(), packageCollector); assertSearchResults( "src/p3 p3\n" + "src/p3/p2 p3.p2\n" + "src/p3/p2/p p3.p2.p", packageCollector); } /** * Package declaration test. * (regression test for bug 62698 NPE while searching for declaration of binary package) */ public void testPackageDeclaration3() throws CoreException { // was testPackageDeclaration IPackageFragment pkg = getPackageFragment("JavaSearch", getExternalJCLPathString(), "java.lang"); search( pkg, DECLARATIONS, getJavaSearchScope(), this.resultCollector); assertSearchResults( getExternalJCLPath() + " java.lang", this.resultCollector); } /** * Package declaration with corrupt jar on the classpath test. * (regression test for bug 75561 Rename package results in I/O exception) */ public void testPackageDeclaration4() throws CoreException { IJavaProject project = getJavaProject("JavaSearch"); IClasspathEntry[] originalCP = project.getRawClasspath(); try { // add corrupt.jar to classpath int cpLength = originalCP.length; IClasspathEntry[] newCP = new IClasspathEntry[cpLength+1]; System.arraycopy(originalCP, 0, newCP, 0, cpLength); newCP[cpLength] = JavaCore.newLibraryEntry(new Path("/JavaSearch/corrupt.jar"), null, null); project.setRawClasspath(newCP, null); search("r9", PACKAGE, DECLARATIONS, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/r9 r9", this.resultCollector); } finally { project.setRawClasspath(originalCP, null); } } /** * Bug 73551: NPE while searching package declaration * @see "http://bugs.eclipse.org/bugs/show_bug.cgi?id=73551" */ public void testPackageDeclarationBug73551() throws CoreException { JavaSearchResultCollector result = new JavaSearchResultCollector(); result.showAccuracy(true); IPackageDeclaration packDecl = getCompilationUnit("JavaSearch", "src", "p71267", "Test.java").getPackageDeclaration("p71267"); search(packDecl, DECLARATIONS, getJavaSearchScope(), result); assertSearchResults( "src/p71267/Test.java p71267 [No source] EXACT_MATCH", result); } /** * Bug 117020: [search] Search for '*' does not report empty packages * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=117020" */ public void testPackageDeclarationBug117020() throws CoreException { IFolder srcFolder = getFolder(new Path("/JavaSearch/src")); IPackageFragmentRoot srcRoot = JAVA_PROJECT.getPackageFragmentRoot(srcFolder); IPackageFragment test = null; try { test = srcRoot.createPackageFragment("b117020", true, null); JavaSearchResultCollector result = new JavaSearchResultCollector(); result.showAccuracy(true); search(test, DECLARATIONS, getJavaSearchScope(), result); assertSearchResults( "src/b117020 b117020 EXACT_MATCH", result); } catch (JavaModelException jme) { // give up } finally { if (test != null && test.exists()) { test.delete(true, null); } } } public void testPackageDeclarationBug183062a() throws CoreException { JavaSearchResultCollector packageCollector = new JavaSearchResultCollector(true); search("j?", PACKAGE, DECLARATIONS, getJavaSearchScope(), packageCollector); assertSearchResults( "src/j1 j1\n" + "src/j2 j2\n" + "src/j3 j3\n" + "src/j4 j4\n" + "src/j5 j5\n" + "src/j6 j6\n" + "src/j7 j7\n" + "test47909.jar j3 [No source]", packageCollector); } public void testPackageDeclarationBug183062b() throws CoreException { JavaSearchResultCollector packageCollector = new JavaSearchResultCollector(true); search("j*", PACKAGE, DECLARATIONS, getJavaSearchScope(), packageCollector); assertSearchResults( ""+ getExternalJCLPathString() + " java\n" + ""+ getExternalJCLPathString() + " java.io\n" + ""+ getExternalJCLPathString() + " java.lang\n" + "src/j1 j1\n" + "src/j2 j2\n" + "src/j3 j3\n" + "src/j4 j4\n" + "src/j5 j5\n" + "src/j6 j6\n" + "src/j7 j7\n" + "src/j7/qua j7.qua\n" + "src/j7/qua/li j7.qua.li\n" + "src/j7/qua/li/fied j7.qua.li.fied\n" + "test47909.jar j3 [No source]", packageCollector); } public void testPackageDeclarationBug183062c() throws CoreException { JavaSearchResultCollector packageCollector = new JavaSearchResultCollector(true); search("j7.*", PACKAGE, DECLARATIONS, getJavaSearchScope(), packageCollector); assertSearchResults( "src/j7/qua j7.qua\n" + "src/j7/qua/li j7.qua.li\n" + "src/j7/qua/li/fied j7.qua.li.fied", packageCollector); } public void testPackageDeclarationBug183062d() throws CoreException { JavaSearchResultCollector packageCollector = new JavaSearchResultCollector(true); search("j7.*.*", PACKAGE, DECLARATIONS, getJavaSearchScope(), packageCollector); assertSearchResults( "src/j7/qua/li j7.qua.li\n" + "src/j7/qua/li/fied j7.qua.li.fied", packageCollector); } public void testPackageDeclarationBug183062e() throws CoreException { JavaSearchResultCollector packageCollector = new JavaSearchResultCollector(true); search("????.????", PACKAGE, DECLARATIONS, getJavaSearchScope(), packageCollector); assertSearchResults( ""+ getExternalJCLPathString() + " java.lang", packageCollector); } /** * Package reference test. * (regression test for PR 1GK90H4: ITPJCORE:WIN2000 - search: missing package reference) */ public void testPackageReference1() throws CoreException { IPackageFragment pkg = getPackageFragment("JavaSearch", "src", "q2"); search( pkg, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/q1/B.java void q1.B.m(AA) [q2]", this.resultCollector); } /** * Package reference test. * (regression test for bug 17906 Rename package fails when inner classes are imported) */ public void testPackageReference2() throws CoreException { IPackageFragment pkg = getPackageFragment("JavaSearch", "src", "b8"); search( pkg, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/b9/Foo.java [b8]", this.resultCollector); } /** * Package reference in jar test. * (regression test for bug 47989 Exception when searching for IPackageFragment "java.util.zip") */ public void testPackageReference3() throws CoreException { IPackageFragment pkg = getPackageFragment("JavaSearch", "test47989.jar", "p1"); IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] {pkg.getParent()}); search( pkg, REFERENCES, scope, this.resultCollector); assertSearchResults( "test47989.jar java.lang.Object p2.Y.foo()", this.resultCollector); } /** * Simple package reference test. */ public void testPackageReference4() throws CoreException { // was testSimplePackageReference IPackageFragment pkg = getPackageFragment("JavaSearch", "src", "p"); search( pkg, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/InterfaceImplementors.java InterfaceImplementors [p]\n" + "src/Test.java void Test.main(String[]) [p]\n" + "src/Test.java void Test.main(String[]) [p]\n" + "src/Test.java void Test.main(String[]) [p]\n" + "src/Test.java void Test.main(String[]) [p]\n" + "src/Test.java void Test.main(String[]) [p]\n" + "src/Test.java void Test.main(String[]) [p]\n" + "src/Test.java void Test.main(String[]) [p]\n" + "src/TypeReferenceInImport/X.java [p]", this.resultCollector); } /** * Various package reference test. */ public void testPackageReference5() throws CoreException { // was testVariousPackageReference IPackageFragment pkg = getPackageFragment("JavaSearch", "src", "p3.p2.p"); search( pkg, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "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 p3.p2.p.X PackageReference.F.foo() [p3.p2.p]\n" + "src/PackageReference/G.java void PackageReference.G.foo(p3.p2.p.X) [p3.p2.p]\n" + "src/PackageReference/H.java void PackageReference.H.foo() [p3.p2.p]\n" + "src/PackageReference/I.java void PackageReference.I.foo() [p3.p2.p]\n" + "src/PackageReference/J.java void PackageReference.J.foo() [p3.p2.p]", this.resultCollector); } /** * Regression test for 1GBK7B2: ITPJCORE:WINNT - package references: could be more precise */ public void testPackageReference6() throws CoreException { // was testAccuratePackageReference IPackageFragment pkg = getPackageFragment("JavaSearch", "src", "p3.p2"); search( pkg, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/PackageReference/K.java [p3.p2]", this.resultCollector); } /** * Test pattern match package references */ public void testPackageReference7() throws CoreException { // was testPatternMatchPackageReference search( "*p2.*", PACKAGE, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "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 p3.p2.p.X PackageReference.F.foo() [p3.p2.p]\n" + "src/PackageReference/G.java void PackageReference.G.foo(p3.p2.p.X) [p3.p2.p]\n" + "src/PackageReference/H.java void PackageReference.H.foo() [p3.p2.p]\n" + "src/PackageReference/I.java void PackageReference.I.foo() [p3.p2.p]\n" + "src/PackageReference/J.java void PackageReference.J.foo() [p3.p2.p]", this.resultCollector); } /** * Test pattern match package references * Just verify that there's no ArrayOutOfBoundException to validate fix for * bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=64421 */ public void testPackageReference8() throws CoreException { // was testPatternMatchPackageReference2 search( "*", PACKAGE, REFERENCES, getJavaSearchScope(), this.resultCollector); this.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 testSearchFieldInBinaryWithResolution() throws CoreException { IClasspathEntry[] classpath = JAVA_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); JAVA_PROJECT.setRawClasspath(newClasspath, null); // potential match for a field declaration this.resultCollector.showAccuracy(true); search("MissingFieldType.*", FIELD, DECLARATIONS, getJavaSearchScope()); assertSearchResults( "AbortCompilation.jar AbortCompilation.MissingFieldType.field [No source] EXACT_MATCH\n" + "AbortCompilation.jar AbortCompilation.MissingFieldType.missing [No source] EXACT_MATCH\n" + "AbortCompilation.jar AbortCompilation.MissingFieldType.otherField [No source] EXACT_MATCH" ); } finally { // reset classpath JAVA_PROJECT.setRawClasspath(classpath, null); } } // bug 186333: Pattern which does not resolve should find all the matches exact public void testSearchFieldInBinaryNoResolution() throws CoreException { IClasspathEntry[] classpath = JAVA_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); JAVA_PROJECT.setRawClasspath(newClasspath, null); // exact match for a field declaration JavaSearchResultCollector collector = new JavaSearchResultCollector() { public void acceptSearchMatch(SearchMatch searchMatch) throws CoreException { IField field = (IField) searchMatch.getElement(); if (field.getDeclaringType().getElementName().equals("MissingFieldType")) { super.acceptSearchMatch(searchMatch); } } }; collector.showAccuracy(true); search("*", FIELD, DECLARATIONS, getJavaSearchScope(), collector); assertSearchResults( "AbortCompilation.jar AbortCompilation.MissingFieldType.field [No source] EXACT_MATCH\n" + "AbortCompilation.jar AbortCompilation.MissingFieldType.missing [No source] EXACT_MATCH\n" + "AbortCompilation.jar AbortCompilation.MissingFieldType.otherField [No source] EXACT_MATCH", collector ); } finally { // reset classpath JAVA_PROJECT.setRawClasspath(classpath, null); } } /** * 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 testSearchMethodInBinaryWithResolution() throws CoreException { IClasspathEntry[] classpath = JAVA_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); JAVA_PROJECT.setRawClasspath(newClasspath, null); // potential match for a method declaration this.resultCollector.showAccuracy(true); search("MissingArgumentType.foo*", METHOD, DECLARATIONS, getJavaSearchScope()); assertSearchResults( "AbortCompilation.jar void AbortCompilation.MissingArgumentType.foo() [No source] EXACT_MATCH\n" + "AbortCompilation.jar void AbortCompilation.MissingArgumentType.foo(java.util.EventListener) [No source] EXACT_MATCH\n" + "AbortCompilation.jar void AbortCompilation.MissingArgumentType.foo2() [No source] EXACT_MATCH" ); } finally { // reset classpath JAVA_PROJECT.setRawClasspath(classpath, null); } } // bug 186333: Pattern which does not resolve should find all the matches exact public void testSearchMethodInBinaryNoResolution() throws CoreException { IClasspathEntry[] classpath = JAVA_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); JAVA_PROJECT.setRawClasspath(newClasspath, null); // exact match for a method declaration JavaSearchResultCollector collector = new JavaSearchResultCollector() { public void acceptSearchMatch(SearchMatch searchMatch) throws CoreException { IMethod method = (IMethod) searchMatch.getElement(); if (method.getDeclaringType().getElementName().equals("MissingArgumentType")) { super.acceptSearchMatch(searchMatch); } } }; collector.showAccuracy(true); search("*", METHOD, DECLARATIONS, getJavaSearchScope(), collector); assertSearchResults( "AbortCompilation.jar void AbortCompilation.MissingArgumentType.foo() [No source] EXACT_MATCH\n" + "AbortCompilation.jar void AbortCompilation.MissingArgumentType.foo(java.util.EventListener) [No source] EXACT_MATCH\n" + "AbortCompilation.jar void AbortCompilation.MissingArgumentType.foo2() [No source] EXACT_MATCH\n" + "AbortCompilation.jar AbortCompilation.MissingArgumentType() [No source] EXACT_MATCH", collector ); } finally { // reset classpath JAVA_PROJECT.setRawClasspath(classpath, null); } } /** * 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 testSearchTypesInBinaryWithResolution() throws CoreException { IClasspathEntry[] classpath = JAVA_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); JAVA_PROJECT.setRawClasspath(newClasspath, null); // exact match for a type declaration this.resultCollector.showAccuracy(true); search("AbortCompilation.*Missing*", TYPE, DECLARATIONS, getJavaSearchScope()); assertSearchResults( "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" ); } finally { // reset classpath JAVA_PROJECT.setRawClasspath(classpath, null); } } public void testSearchTypeInBinaryNoResolution() throws CoreException { IClasspathEntry[] classpath = JAVA_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); JAVA_PROJECT.setRawClasspath(newClasspath, null); // exact match for a type declaration this.resultCollector.showAccuracy(true); search("Missing*", TYPE, DECLARATIONS, getJavaSearchScope()); assertSearchResults( "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" ); } finally { // reset classpath JAVA_PROJECT.setRawClasspath(classpath, null); } } /** * Hierarchy scope test. * (regression test for bug 3445 search: type hierarchy scope incorrect (1GLC8VS)) */ public void testSearchScope01() throws CoreException { // was testHierarchyScope 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())); } /** * Sub-cu java search scope test. * (regression test for bug 9041 search: cannot create a sub-cu scope) */ public void testSearchScope02() throws CoreException { // was testSubCUSearchScope1 IType type = getCompilationUnit("JavaSearch", "src", "b3", "X.java").getType("X"); IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] {type}); search( type, REFERENCES, scope, this.resultCollector); assertSearchResults( "src/b3/X.java b3.X.field [X]\n" + "src/b3/X.java Object b3.X.foo() [X]\n" + "src/b3/X.java b3.X$Y.field2 [X]\n" + "src/b3/X.java Object b3.X$Y.foo2() [X]", this.resultCollector); } /** * Sub-cu java search scope test. * (regression test for bug 9041 search: cannot create a sub-cu scope) */ public void testSearchScope03() throws CoreException { // was testSubCUSearchScope2 IType type = getCompilationUnit("JavaSearch", "src", "b3", "X.java").getType("X"); IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] {type.getField("field")}); search( type, REFERENCES, scope, this.resultCollector); assertSearchResults( "src/b3/X.java b3.X.field [X]", this.resultCollector); } /** * Sub-cu java search scope test. * (regression test for bug 9041 search: cannot create a sub-cu scope) */ public void testSearchScope04() throws CoreException { // was testSubCUSearchScope3 IType type = getCompilationUnit("JavaSearch", "src", "b3", "X.java").getType("X"); IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] {type.getType("Y")}); search( type, REFERENCES, scope, this.resultCollector); assertSearchResults( "src/b3/X.java b3.X$Y.field2 [X]\n" + "src/b3/X.java Object b3.X$Y.foo2() [X]", this.resultCollector); } /** * Java search scope on java element in external jar test. */ public void testSearchScope05() throws CoreException, IOException { // was testExternalJarScope 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().getCanonicalFile(), "MyJar.jar"); // canonicalize the external path as this is not done on case sensitive platforms when creating a new lib entry IJavaProject project = 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 = getPackageFragment("JavaSearch", externalPath, "p0"); IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] {pkg}); search( "X", TYPE, DECLARATIONS, scope, this.resultCollector); assertSearchResults( externalJar + " p0.X", this.resultCollector); IClassFile classFile = pkg.getClassFile("X.class"); scope = SearchEngine.createJavaSearchScope(new IJavaElement[] {classFile}); this.resultCollector = new JavaSearchResultCollector(); search( classFile.getType(), DECLARATIONS, scope, this.resultCollector); assertSearchResults( externalJar.getCanonicalPath()+ " p0.X", this.resultCollector); } finally { Util.delete(externalJar); project.setRawClasspath(classpath, null); } } /** * Hierarchy scope test. * (test for enhancement bug 215139 encloses(): find only subtypes). */ public void testSearchScope06() throws CoreException { ICompilationUnit cuB = this. getCompilationUnit("JavaSearch", "src", "a10", "B.java"); ICompilationUnit cuC = this. getCompilationUnit("JavaSearch", "src", "a10", "C.java"); IType type = cuC.getType("C"); IJavaSearchScope scope = SearchEngine.createStrictHierarchyScope(null, type, true, false, null); // don't include super-classes: assertFalse("a10.A should not be included in hierarchy scope", scope.encloses(cuB.getType("A"))); assertFalse("a10.B should not be included in hierarchy scope", scope.encloses(cuB.getType("B"))); assertFalse("a10/B.java should not be included in hierarchy scope", scope.encloses(cuB.getUnderlyingResource().getFullPath().toString())); } /** * Hierarchy scope test. * (test for enhancement bug 215139 encloses(): find only subtypes). */ public void testSearchScope07() throws CoreException { ICompilationUnit cuC = this. getCompilationUnit("JavaSearch", "src", "a10", "C.java"); IType type = cuC.getType("C"); IJavaSearchScope scope = SearchEngine.createStrictHierarchyScope(null, type, true, false, null); // don't include focus type: assertFalse("a10.C should not be included in hierarchy scope", scope.encloses(type)); assertFalse("a10/C.java should not be included in hierarchy scope", scope.encloses(cuC.getUnderlyingResource().getFullPath().toString())); } /** * Hierarchy scope test. * test for enhancement bug 215139 encloses(): find only subtypes. * also test enhancement bug 295894: include focus type. */ public void testSearchScope07a() throws CoreException { ICompilationUnit cuC = this. getCompilationUnit("JavaSearch", "src", "a10", "C.java"); IType type = cuC.getType("C"); IJavaSearchScope scope = SearchEngine.createStrictHierarchyScope(null, type, true, true, null); // include focus type: assertTrue("a10.C should be included in hierarchy scope", scope.encloses(type)); assertTrue("a10/C.java should be included in hierarchy scope", scope.encloses(cuC.getUnderlyingResource().getFullPath().toString())); } /** * Hierarchy scope test. * (test for enhancement bug 215139 encloses(): find only subtypes). */ public void testSearchScope08() throws CoreException { ICompilationUnit cuC = this. getCompilationUnit("JavaSearch", "src", "a10", "C.java"); ICompilationUnit cuD = this. getCompilationUnit("JavaSearch", "src", "a10", "D.java"); ICompilationUnit cuE = this. getCompilationUnit("JavaSearch", "src", "a10", "E.java"); IType type = cuC.getType("C"); IJavaSearchScope scope = SearchEngine.createStrictHierarchyScope(null, type, true, false, null); // regular sub-types: assertTrue("a10.D should be included in hierarchy scope", scope.encloses(cuD.getType("D"))); assertTrue("a10/D.java should be included in hierarchy scope", scope.encloses(cuD.getUnderlyingResource().getFullPath().toString())); assertTrue("a10.E should be included in hierarchy scope", scope.encloses(cuE.getType("E"))); assertTrue("a10.F should be included in hierarchy scope", scope.encloses(cuE.getType("F"))); } /** * Hierarchy scope test. * (test for enhancement bug 215139 encloses(): find only subtypes). */ public void testSearchScope09() throws CoreException { ICompilationUnit cuC = this. getCompilationUnit("JavaSearch", "src", "a10", "C.java"); ICompilationUnit cuE = this. getCompilationUnit("JavaSearch", "src", "a10", "E.java"); IType type = cuC.getType("C"); IJavaSearchScope scope = SearchEngine.createStrictHierarchyScope(null, type, true, false, null); // sub-type is a nested type: assertTrue("a10.H$I should be included in hierarchy scope", scope.encloses(cuE.getType("H").getType("I"))); } /** * Hierarchy scope test. * (test for enhancement bug 215139 encloses(): find only subtypes). */ public void testSearchScope10() throws CoreException { ICompilationUnit cuC = this. getCompilationUnit("JavaSearch", "src", "a10", "C.java"); ICompilationUnit cuE = this. getCompilationUnit("JavaSearch", "src", "a10", "E.java"); IType type = cuC.getType("C"); IJavaSearchScope scope = SearchEngine.createStrictHierarchyScope(null, type, true, false, null); // member of a sub-type: assertFalse("a10.F$G should not be included in hierarchy scope", scope.encloses(cuE.getType("F").getType("G"))); } /** * Hierarchy scope test. * (test for enhancement bug 215139 encloses(): find only subtypes). */ public void testSearchScope12() throws CoreException { ICompilationUnit cuC = this. getCompilationUnit("JavaSearch", "src", "a10", "C.java"); ICompilationUnit cuE = this. getCompilationUnit("JavaSearch", "src", "a10", "E.java"); IType type = cuC.getType("C"); IJavaSearchScope scope = SearchEngine.createStrictHierarchyScope(null, type, true, false, null); // enclosing of a sub-type: assertFalse("a10.H should not be included in hierarchy scope", scope.encloses(cuE.getType("H"))); assertTrue("a10/E.java should be included in hierarchy scope", scope.encloses(cuE.getUnderlyingResource().getFullPath().toString())); } /** * Hierarchy scope test. * (test for enhancement bug 215139 search: find only subtypes). */ public void testSearchScope13() throws CoreException { ICompilationUnit cuC = this. getCompilationUnit("JavaSearch", "src", "a10", "C.java"); IType type = cuC.getType("C"); IJavaSearchScope scope = SearchEngine.createStrictHierarchyScope(null, type, true, false, null); search("**", TYPE, DECLARATIONS, scope); assertSearchResults( "src/a10/D.java a10.D [D]\n" + "src/a10/E.java a10.E [E]\n" + "src/a10/E.java a10.F [F]\n" + "src/a10/E.java a10.H$I [I]" ); } /** * Hierarchy scope test. * (test for enhancement bug 215139 search: find only subtypes - disabled). */ public void testSearchScope14() throws CoreException { ICompilationUnit cuC = this. getCompilationUnit("JavaSearch", "src", "a10", "C.java"); IType type = cuC.getType("C"); IJavaSearchScope scope = SearchEngine.createStrictHierarchyScope(null, type, /*onlySubTypes*/false, true, null); search("**", TYPE, DECLARATIONS, scope); assertSearchResults( "src/a10/B.java a10.A [A]\n" + "src/a10/B.java a10.B [B]\n" + "src/a10/C.java a10.C [C]\n" + "src/a10/D.java a10.D [D]\n" + "src/a10/E.java a10.E [E]\n" + "src/a10/E.java a10.F [F]\n" + "src/a10/E.java a10.H$I [I]\n" + getExternalJCLPathString() + " java.lang.Object" ); } /** * Hierarchy scope test. * test for enhancement bug 215139 search: find only subtypes - disabled, * also test enhancement bug 295894: exclude focus type. */ public void testSearchScope14a() throws CoreException { ICompilationUnit cuC = this. getCompilationUnit("JavaSearch", "src", "a10", "C.java"); IType type = cuC.getType("C"); IJavaSearchScope scope = SearchEngine.createStrictHierarchyScope(null, type, /*onlySubTypes*/false, false, null); search("**", TYPE, DECLARATIONS, scope); assertSearchResults( "src/a10/B.java a10.A [A]\n" + "src/a10/B.java a10.B [B]\n" + "src/a10/D.java a10.D [D]\n" + "src/a10/E.java a10.E [E]\n" + "src/a10/E.java a10.F [F]\n" + "src/a10/E.java a10.H$I [I]\n" + getExternalJCLPathString() + " java.lang.Object" ); } /** * Hierarchy scope test. * (test for enhancement bug 215139 search: find only subtypes - different call chain). */ public void testSearchScope15() throws CoreException { ICompilationUnit cuC = this. getCompilationUnit("JavaSearch", "src", "a10", "C.java"); IType type = cuC.getType("C"); IJavaSearchScope scope = SearchEngine.createStrictHierarchyScope(null, type, true, false, null); TypeNameMatchCollector collector = new TypeNameMatchCollector() { public String toString(){ return toFullyQualifiedNamesString(); } }; new SearchEngine().searchAllTypeNames( null, null, scope, collector, IJavaSearchConstants.WAIT_UNTIL_READY_TO_SEARCH, null); String expected = "a10.D\n" + "a10.E\n" + "a10.F\n" + "a10.H$I"; assertTrue("We should get some types!", collector.size() > 0); assertEquals("Found types sound not to be correct", expected, collector.toString()); } /** * Hierarchy scope test. * (test for enhancement bug 215139 encloses(method): find only subtypes). */ public void testSearchScope17() throws CoreException { ICompilationUnit cuC = this. getCompilationUnit("JavaSearch", "src", "a10", "C.java"); ICompilationUnit cuE = this. getCompilationUnit("JavaSearch", "src", "a10", "E.java"); IType type = cuC.getType("C"); IJavaSearchScope scope = SearchEngine.createStrictHierarchyScope(null, type, true, false, null); // method of a member of a sub-type: assertFalse("a10.F$G.m() should not be included in hierarchy scope", scope.encloses(cuE.getType("F").getType("G").getMethod("m", new String[0]))); } /** * Simple type declaration test. */ public void testTypeDeclaration01() throws CoreException { // was testSimpleTypeDeclaration IType type = getCompilationUnit("JavaSearch", "src", "p", "X.java").getType("X"); search( type, DECLARATIONS, getJavaSearchScope(), this.resultCollector); assertSearchResults("src/p/X.java p.X [X]", this.resultCollector); } /** * Type declaration test. * (generic type) */ public void testTypeDeclaration02() throws CoreException { IPackageFragment pkg = getPackageFragment("JavaSearch15", "src", "p1"); IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] {pkg}); search( "Y", TYPE, DECLARATIONS, scope, this.resultCollector); assertSearchResults( "src/p1/Y.java p1.Y [Y]", this.resultCollector); } /** * Type declaration test. * (regression test for bug 29524 Search for declaration via patterns adds '"*") */ public void testTypeDeclaration03() throws CoreException { // was testTypeDeclaration IPackageFragment pkg = getPackageFragment("JavaSearch", "src", "d8"); IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] {pkg}); search( "A", TYPE, DECLARATIONS, scope, this.resultCollector); assertSearchResults("src/d8/A.java d8.A [A]", this.resultCollector); } /** * Type declaration in jar file test. */ public void testTypeDeclaration04() throws CoreException { // was testTypeDeclarationInJar IType type = getClassFile("JavaSearch", "MyJar.jar", "p1", "A.class").getType(); search( type, DECLARATIONS, getJavaSearchScope(), this.resultCollector); assertSearchResults( "MyJar.jar p1.A [No source]", this.resultCollector); } /** * Type declaration in jar file and in anonymous class test. * (regression test for 20631 Declaration of local binary type not found) */ public void testTypeDeclaration05() throws CoreException { // was testTypeDeclarationInJar2 IPackageFragmentRoot root = getPackageFragmentRoot("JavaSearch", "test20631.jar"); IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] {root}); search( "Y", TYPE, DECLARATIONS, scope, this.resultCollector); assertSearchResults( "test20631.jar Y", this.resultCollector); } /** * Type declaration using a package scope test. * (check that subpackages are not included) */ public void testTypeDeclaration06() throws CoreException { // was testTypeDeclarationInPackageScope IType type = getCompilationUnit("JavaSearch", "src", "p3", "X.java").getType("X"); IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] {type.getPackageFragment()}); search( "X", TYPE, DECLARATIONS, scope, this.resultCollector); assertSearchResults( "src/p3/X.java p3.X [X]", this.resultCollector); } /** * Type declaration using a binary package scope test. * (check that subpackages are not included) */ public void testTypeDeclaration07() throws CoreException { // was testTypeDeclarationInPackageScope2 IType type = getClassFile("JavaSearch", "MyJar.jar", "p0", "X.class").getType(); IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] {type.getPackageFragment()}); search( "X", TYPE, DECLARATIONS, scope, this.resultCollector); assertSearchResults( "MyJar.jar p0.X [No source]", this.resultCollector); } /** * Member type declaration test. * (regression test for bug 9992 Member class declaration not found) */ public void testTypeDeclaration08() throws CoreException { // was testMemberTypeDeclaration IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[]{ getPackageFragment("JavaSearch", "src", "b4") }); search( "*.A.B", TYPE, DECLARATIONS, scope, this.resultCollector); assertSearchResults( "src/b4/A.java b4.A$B [B]", this.resultCollector); } /** * Test pattern match type declaration * (regression test for bug 17210 No match found when query contains '?') */ public void testTypeDeclaration09() throws CoreException { search( "X?Z", TYPE, DECLARATIONS, getJavaSearchScope(), this.resultCollector); assertSearchResults("src/r5/XYZ.java r5.XYZ [XYZ]", this.resultCollector); } /** * Long declaration (>255) test. * (regression test for bug 25859 Error doing Java Search) */ public void testTypeDeclaration10() throws CoreException { // was testLongDeclaration search( "AbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyz", TYPE, DECLARATIONS, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/c9/X.java c9.AbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyz [AbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyz]", this.resultCollector); } /* * Local type declaration test. */ public void testTypeDeclaration11() throws CoreException { // was testLocalTypeDeclaration1 IPackageFragment pkg = getPackageFragment("JavaSearch", "src", "f2"); IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] {pkg}); search( "Y", TYPE, DECLARATIONS, scope, this.resultCollector); assertSearchResults( "src/f2/X.java Object f2.X.foo1():Y#1 [Y]", this.resultCollector); } /* * Local type declaration test. */ public void testTypeDeclaration12() throws CoreException { // was testLocalTypeDeclaration2 IType type = getCompilationUnit("JavaSearch/src/f2/X.java").getType("X").getMethod("foo1", new String[0]).getType("Y", 1); IJavaSearchScope scope = SearchEngine.createWorkspaceScope(); search( type, DECLARATIONS, scope, this.resultCollector); assertSearchResults( "src/f2/X.java Object f2.X.foo1():Y#1 [Y]", this.resultCollector); } /** * Type ocurrence test. * (regression test for PR 1GKAQJS: ITPJCORE:WIN2000 - search: incorrect results for nested types) */ public void testTypeOccurence1() throws CoreException { // was testTypeOccurence IType type = getCompilationUnit("JavaSearch", "src", "r", "A.java").getType("A").getType("X"); search( type, ALL_OCCURRENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/r/A.java A r.A.m() [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]", this.resultCollector); } /** * 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()}); search( type, ALL_OCCURRENCES, scope, this.resultCollector); assertSearchResults( "src/r8/A.java [B]", this.resultCollector); } /** * Type occurences test. * Ensures that correct positions are reported for an inner type reference using a ALL_OCCURENCES pattern */ public void testTypeOccurence3() throws CoreException { IType type = getCompilationUnit("JavaSearch", "src", "e4", "A.java").getType("A").getType("Inner"); search( type, ALL_OCCURRENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/e4/A.java e4.A$Inner [Inner]\n" + "src/e5/A1.java [e4.A.Inner]\n" + "src/e5/A1.java e5.A1.a [e4.A.Inner]\n" + "src/e5/A1.java e5.A1.a1 [e4.A.Inner]\n" + "src/e5/A1.java e5.A1.a2 [Inner]\n" + "src/e5/A1.java e5.A1.a3 [Inner]", this.resultCollector); } /** * Type name with $ ocurrence test. * (regression test for bug 3310 Smoke 124: Compile errors introduced with rename refactoring (1GFBK2G)) */ public void testTypeOccurence4() throws CoreException { // was testTypeOccurenceWithDollar IType type = getCompilationUnit("JavaSearch", "src", "q3", "A$B.java").getType("A$B"); search( type, ALL_OCCURRENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/q3/A$B.java q3.A$B [A$B]\n" + "src/q4/C.java Object q4.C.foo() [q3.A$B]", this.resultCollector); } /** * Type reference test. * (Regression test for PR 1GK7K17: ITPJCORE:WIN2000 - search: missing type reference) */ public void testTypeReference01() throws CoreException { IType type = getCompilationUnit("JavaSearch", "src", "", "X.java").getType("X"); search( type, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/X.java AA() [X]", this.resultCollector); } /** * Type reference test. * (Regression test for bug 29516 SearchEngine regressions in 20030114) */ public void testTypeReference02() throws CoreException { IType type = getCompilationUnit("JavaSearch", "src", "d7", "A.java").getType("A"); search( type, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/d7/A.java d7.A.A [A]\n" + "src/d7/A.java A d7.A.A(A) [A]\n" + "src/d7/A.java A d7.A.A(A) [A]", this.resultCollector); } /** * Type reference test. * (Regression test for bug 31985 NPE searching non-qualified and case insensitive type ref) */ public void testTypeReference03() throws CoreException { SearchPattern pattern = createPattern("x31985", TYPE, REFERENCES, false); this.resultCollector.showAccuracy(true); search( pattern, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/e3/X31985.java e3.X31985.CONSTANT [X31985] EXACT_MATCH\n" + "src/e3/Y31985.java Object e3.Y31985.foo() [X31985] EXACT_MATCH", this.resultCollector); } /** * Type reference test. * (Regression test for bug 31997 Refactoring d.n. work for projects with brackets in name.) */ public void testTypeReference04() throws CoreException { IType type = getCompilationUnit("JavaSearch", "otherSrc()", "", "X31997.java").getType("X31997"); search( type, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "otherSrc()/Y31997.java Y31997 [X31997]", this.resultCollector); } /** * Type reference test. * (Regression test for bug 48261 Search does not show results) */ public void testTypeReference05() throws CoreException { IType type = getCompilationUnit("JavaSearch", "test48261.jar", "p", "X.java").getType("X"); IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] {type.getPackageFragment().getParent()}); search( type, REFERENCES, scope, this.resultCollector); assertSearchResults( "test48261.jar p.X$Y(java.lang.String)", this.resultCollector); } /** * Type reference test * (in a generic type) */ public void testTypeReference06() throws CoreException { IType type = getCompilationUnit("JavaSearch15/src/p1/X.java").getType("X"); search( type, REFERENCES, getJavaSearchScope15("p1", true), this.resultCollector); assertSearchResults( "src/p1/Y.java Object p1.Y.foo() [X]", this.resultCollector); } /** * Simple type reference test. */ public void testTypeReference07() throws CoreException { // was testTypeDeclaration01 IType type = getCompilationUnit("JavaSearch", "src", "p", "X.java").getType("X"); search( type, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/p/A.java p.A.x [X]\n" + "src/p/A.java p.A(X) [X]\n" + "src/p/A.java void p.A.foo(int, String, X) [X]\n" + "src/p/X.java p.X() [X]\n" + "src/p/X.java void p.X.foo(int, String, X) [X]\n" + "src/p/Y.java p.Y [X]\n" + "src/p/Z.java void p.Z.foo(int, String, X) [X]", this.resultCollector); } /** * Type reference in initializer test. * (regression test for PR #1G4GO4O) */ public void testTypeReference08() throws CoreException { // was testTypeReferenceInInitializer IType type = getCompilationUnit("JavaSearch", "src", "", "Test.java").getType("Test"); search( type, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/Test.java Test.static {} [Test]\n" + "src/Test.java Test.static {} [Test]\n" + "src/Test.java Test.{} [Test]", this.resultCollector); } /** * Type reference as a single name reference test. */ public void testTypeReference09() throws CoreException { // was testTypeReferenceAsSingleNameReference IType type = getCompilationUnit("JavaSearch", "src", "", "TypeReferenceAsSingleNameReference.java").getType("TypeReferenceAsSingleNameReference"); search( type, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/TypeReferenceAsSingleNameReference.java void TypeReferenceAsSingleNameReference.hasReference() [TypeReferenceAsSingleNameReference]\n" + "src/TypeReferenceAsSingleNameReference.java void TypeReferenceAsSingleNameReference.hasReference() [TypeReferenceAsSingleNameReference]", this.resultCollector); } /** * Member type reference test. */ public void testTypeReference10() throws CoreException { // was testMemberTypeReference // references to second level member type this.resultCollector.showAccuracy(true); search( "BMember", TYPE, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "References to type BMember", "src/MemberTypeReference/Azz.java void MemberTypeReference.Azz.poo() [BMember] EXACT_MATCH\n" + "src/MemberTypeReference/Azz.java MemberTypeReference.Azz$AzzMember [BMember] EXACT_MATCH\n" + "src/MemberTypeReference/Azz.java MemberTypeReference.X.val [BMember] EXACT_MATCH\n" + "src/MemberTypeReference/B.java void MemberTypeReference.B.foo() [BMember] EXACT_MATCH", this.resultCollector); // references to first level member type this.resultCollector = new JavaSearchResultCollector(); this.resultCollector.showAccuracy(true); search( "AzzMember", TYPE, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "References to type AzzMember", "src/MemberTypeReference/Azz.java MemberTypeReference.X.val [AzzMember] EXACT_MATCH\n" + "src/MemberTypeReference/B.java void MemberTypeReference.B.foo() [AzzMember] EXACT_MATCH", this.resultCollector); // no reference to a field with same name as member type this.resultCollector = new JavaSearchResultCollector(); this.resultCollector.showAccuracy(true); search( "BMember", FIELD, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "References to field BMember", "", this.resultCollector); } /** * Member type reference test. * (regression test for PR 1GL0MN9: ITPJCORE:WIN2000 - search: not consistent results for nested types) */ public void testTypeReference11() throws CoreException { // was testMemberTypeReference2 IType type = getCompilationUnit("JavaSearch", "src", "a", "A.java").getType("A").getType("X"); search( type, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/a/A.java a.B.ax [A.X]\n" + "src/a/A.java a.B.sx [S.X]", this.resultCollector); } /** * Member type named "Object" reference test. * (regression test for 1G4GHPS: ITPJUI:WINNT - Strange error message in search) */ public void testTypeReference12() throws CoreException { // was testObjectMemberTypeReference IType type = getCompilationUnit("JavaSearch", "src", "ObjectMemberTypeReference", "A.java") .getType("A") .getType("Object"); this.resultCollector.showAccuracy(true); search( type, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/ObjectMemberTypeReference/A.java void ObjectMemberTypeReference.A.foo() [Object] EXACT_MATCH", this.resultCollector); } /** * Type reference inside a qualified name reference test. * (Regression test for PR #1G4TSC0) */ public void testTypeReference13() throws CoreException { // was testTypeReferenceInQualifiedNameReference IType type = getCompilationUnit("JavaSearch", "src", "p", "A.java").getType("A"); search( type, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/Test.java void Test.main(String[]) [p.A]\n" + "src/Test.java void Test.main(String[]) [p.A]\n" + "src/p/A.java void p.A.foo() [A]", this.resultCollector); } /** * Type reference inside a qualified name reference test. * (Regression test for PR #1GLBP65) */ public void testTypeReference14() throws CoreException { // was testTypeReferenceInQualifiedNameReference2 IType type = getCompilationUnit("JavaSearch", "src", "p4", "A.java").getType("A"); search( type, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/p4/A.java p4.A.A [A]\n" + "src/p4/A.java p4.X [p4.A]\n" + "src/p4/A.java void p4.X.x() [p4.A]", this.resultCollector); } /** * Type reference inside a qualified name reference test. * (Regression test for PR 1GL9UMH: ITPJCORE:WIN2000 - search: missing type occurrences) */ public void testTypeReference15() throws CoreException { // was testTypeReferenceInQualifiedNameReference3 IType type = getCompilationUnit("JavaSearch", "src", "", "W.java").getType("W"); search( type, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/W.java int W.m() [W]", this.resultCollector); } /** * Type reference inside a qualified name reference test. * (Regression test for bug 16751 Renaming a class doesn't update all references ) */ public void testTypeReference16() throws CoreException { // was testTypeReferenceInQualifiedNameReference4 IType type = getCompilationUnit("JavaSearch", "src", "b7", "X.java").getType("SubClass"); search( type, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/b7/X.java void b7.Test.main(String[]) [SubClass]", this.resultCollector); } /** * Type reference in a folder that is not in the classpath. * (regression test for PR #1G5N8KS) */ public void testTypeReference17() throws CoreException { // was testTypeReferenceNotInClasspath IType type = getCompilationUnit("JavaSearch", "src", "p", "X.java").getType("X"); search( type, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/p/A.java p.A.x [X]\n" + "src/p/A.java p.A(X) [X]\n" + "src/p/A.java void p.A.foo(int, String, X) [X]\n" + "src/p/X.java p.X() [X]\n" + "src/p/X.java void p.X.foo(int, String, X) [X]\n" + "src/p/Y.java p.Y [X]\n" + "src/p/Z.java void p.Z.foo(int, String, X) [X]", this.resultCollector); } /** * Type reference inside an argument, a return type or a field type. * (Regression test for PR #1GA7QA1) */ public void testTypeReference18() throws CoreException { // was testVariousTypeReferences IType type = getCompilationUnit("JavaSearch", "src", "NoReference", "A.java").getType("A"); search( type, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "", // no reference should be found this.resultCollector); } /** * Type reference in import test. * (regression test for PR #1GA7PAS) */ public void testTypeReference19() throws CoreException { // was testTypeReferenceInImport IType type = getCompilationUnit("JavaSearch", "src", "p2", "Z.java").getType("Z"); search( type, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/TypeReferenceInImport/X.java [p2.Z]", this.resultCollector); } /** * Type reference in import test. * (regression test for bug 23077 search: does not find type references in some imports) */ public void testTypeReference20() throws CoreException { // was testTypeReferenceInImport2 IType type = getCompilationUnit("JavaSearch", "src", "r6", "A.java").getType("A"); search( type, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "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]", this.resultCollector); } /** * Type reference in array test. * (regression test for PR #1GAL424) */ public void testTypeReference21() throws CoreException { // was testTypeReferenceInArray IType type = getCompilationUnit("JavaSearch", "src", "TypeReferenceInArray", "A.java").getType("A"); search( type, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/TypeReferenceInArray/A.java TypeReferenceInArray.A.a [A]\n" + "src/TypeReferenceInArray/A.java TypeReferenceInArray.A.b [TypeReferenceInArray.A]", this.resultCollector); } /** * Type reference in array test. * (regression test for bug 3230 Search - Too many type references for query ending with * (1GAZVGI) ) */ public void testTypeReference22() throws CoreException { // was testTypeReferenceInArray2 IType type = getCompilationUnit("JavaSearch", "src", "s1", "X.java").getType("X"); search( type, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/s1/Y.java s1.Y.f [X]", this.resultCollector); } /** * Negative type reference test. * (regression test for 1G52F7P: ITPJCORE:WINNT - Search - finds bogus references to class) */ public void testTypeReference23() throws CoreException { // testNegativeTypeReference IType type = getCompilationUnit("JavaSearch", "src", "p7", "A.java").getType("A"); search( type, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "", this.resultCollector); } /** * Type reference in a throw clause test. * (Regression test for bug 6779 searchDeclarationsOfReferencedTyped - missing exception types) */ public void testTypeReference24() throws CoreException { // was testTypeReferenceInThrows IType type = getCompilationUnit("JavaSearch", "src", "a7", "X.java").getType("MyException"); this.resultCollector.showAccuracy(true); search( type, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/a7/X.java void a7.X.foo() [MyException] EXACT_MATCH", this.resultCollector); } /** * Type reference test. * (Regression test for bug 9642 Search - missing inaccurate type matches) */ public void testTypeReference25() throws CoreException { // was testInnacurateTypeReference1 search( "Zork", TYPE, REFERENCES, SearchEngine.createJavaSearchScope(new IJavaElement[] { getPackageFragment("JavaSearch", "src", "b5") }), this.resultCollector); assertSearchResults( "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]", this.resultCollector); } /** * Type reference test. * (Regression test for bug 9642 Search - missing inaccurate type matches) */ public void testTypeReference26() throws CoreException { // was testInnacurateTypeReference2 this.resultCollector.showAccuracy(true); this.resultCollector.showSelection(); search( "p.Zork", TYPE, REFERENCES, SearchEngine.createJavaSearchScope(new IJavaElement[] { getPackageFragment("JavaSearch", "src", "b5") }), this.resultCollector); assertSearchResults( "src/b5/A.java b5.A.{} [ !|Zork|![] zork = new Zork[0];] POTENTIAL_MATCH\n" + "src/b5/A.java b5.A.{} [ Zork[] zork = new !|Zork|![0];] POTENTIAL_MATCH\n" + "src/b5/A.java b5.A.{} [ int i = !|Zork|!.foo;] POTENTIAL_MATCH", this.resultCollector); } /** * Type reference test. * (Regression test for bug 21485 NPE when doing a reference search to a package) */ public void testTypeReference27() throws CoreException { // was testInnacurateTypeReference3 IType type = getCompilationUnit("JavaSearch", "src", "r3", "A21485.java").getType("A21485"); this.resultCollector.showAccuracy(true); search( type, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/r4/B21485.java [r3.A21485] EXACT_MATCH\n" + "src/r4/B21485.java r4.B21485 [A21485] POTENTIAL_MATCH", this.resultCollector); } /** * Type reference in cast test. * (regression test for bug 23329 search: incorrect range for type references in brackets) */ public void testTypeReference28() throws CoreException { // was testTypeReferenceInCast IType type = getCompilationUnit("JavaSearch", "src", "s3", "A.java").getType("B"); search( type, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/s3/A.java Object s3.A.foo() [B]", this.resultCollector); } /** * Test pattern match type reference in binary * (regression test for bug 24741 Search does not find patterned type reference in binary project ) */ public void testTypeReference29() throws CoreException { // was testPatternMatchTypeReference search( "p24741.*", TYPE, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "test24741.jar q24741.B", this.resultCollector); } /** * Type reference test (not case sensitive) */ public void testTypeReference30() throws CoreException { // was testTypeReferenceNotCaseSensitive IPackageFragment pkg = getPackageFragment("JavaSearch", "src", "d4"); IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] {pkg}); SearchPattern pattern = createPattern("Y", TYPE, REFERENCES, false); search( pattern, scope, this.resultCollector); assertSearchResults( "src/d4/X.java Object d4.X.foo() [Y]", this.resultCollector); } /** * Type reference test. */ public void testTypeReference31() throws CoreException { // was testAccurateTypeReference search( "d5.X", TYPE, REFERENCES, SearchEngine.createJavaSearchScope(new IJavaElement[] { getPackageFragment("JavaSearch", "src", "d5") }), this.resultCollector); assertSearchResults( "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]", this.resultCollector); } /** * Type reference in hierarchy test. * (regression test for bug 28236 Search for refs to class in hierarchy matches class outside hierarchy ) */ public void testTypeReference32() throws CoreException { // was testTypeReferenceInHierarchy IType type = getCompilationUnit("JavaSearch", "src", "d9.p1", "A.java").getType("A"); IJavaSearchScope scope = SearchEngine.createHierarchyScope(type); search( type, REFERENCES, scope, this.resultCollector); assertSearchResults( "", this.resultCollector); } /** * Type reference with recovery test. * (Regression test for bug 29366 Search reporting invalid inaccurate match ) */ public void testTypeReference33() throws CoreException { // was testTypeReferenceWithRecovery IType type = getCompilationUnit("JavaSearch", "src", "e1", "A29366.java").getType("A29366"); this.resultCollector.showAccuracy(true); search( type, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/e1/A29366.java void e1.A29366.foo() [A29366] EXACT_MATCH", this.resultCollector); } /** * Type reference with problem test. * (Regression test for bug 36479 Rename operation during refactoring fails) */ public void testTypeReference34() throws CoreException { // was testTypeReferenceWithProblem IType type = getCompilationUnit("JavaSearch", "src", "e6", "A.java").getType("A"); this.resultCollector.showAccuracy(true); search( "B36479", TYPE, REFERENCES, SearchEngine.createJavaSearchScope(new IJavaElement[] {type}), this.resultCollector); assertSearchResults( "src/e6/A.java Object e6.A.foo() [B36479] POTENTIAL_MATCH", this.resultCollector); } /** * Type reference with corrupt jar on the classpath test. * (Regression test for bug 39831 Search finds only "inexact" matches) */ public void testTypeReference35() throws CoreException { // was testTypeReferenceWithCorruptJar IJavaProject project = getJavaProject("JavaSearch"); IClasspathEntry[] originalCP = project.getRawClasspath(); try { // add corrupt.jar to classpath int cpLength = originalCP.length; IClasspathEntry[] newCP = new IClasspathEntry[cpLength+1]; System.arraycopy(originalCP, 0, newCP, 0, cpLength); newCP[cpLength] = JavaCore.newLibraryEntry(new Path("/JavaSearch/corrupt.jar"), null, null); project.setRawClasspath(newCP, null); IType type = getCompilationUnit("JavaSearch", "src", "e7", "A.java").getType("A"); this.resultCollector.showAccuracy(true); search( type, REFERENCES, SearchEngine.createJavaSearchScope(new IJavaElement[] {project}), this.resultCollector); assertSearchResults( "src/e7/A.java e7.A.a [A] EXACT_MATCH", this.resultCollector); } finally { project.setRawClasspath(originalCP, null); } } /* * Local type reference test. */ public void testTypeReference36() throws CoreException { // was testLocalTypeReference1 IPackageFragment pkg = getPackageFragment("JavaSearch", "src", "f2"); IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] {pkg}); this.resultCollector.showSelection(); search( "Y", TYPE, REFERENCES, scope, this.resultCollector); assertSearchResults( "src/f2/X.java Object f2.X.foo1() [ return new !|Y|!();]", this.resultCollector); } /* * Local type reference test. */ public void testTypeReference37() throws CoreException { // was testLocalTypeReference2 IType type = getCompilationUnit("JavaSearch/src/f2/X.java").getType("X"); IMethod method = type.getMethod("foo1", new String[0]); IType localType = method.getType("Y", 1); IJavaSearchScope scope = SearchEngine.createWorkspaceScope(); this.resultCollector.showSelection(); search( localType, REFERENCES, scope, this.resultCollector); assertSearchResults( "src/f2/X.java Object f2.X.foo1() [ return new !|Y|!();]", this.resultCollector); } /** * Type reference inside/outside doc comment. */ public void testTypeReference38() throws CoreException { // was testTypeReferenceInOutDocComment IType type = getCompilationUnit("JavaSearch", "src", "s4", "X.java").getType("X"); this.resultCollector.showInsideDoc(); search(type, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/s4/X.java void s4.X.bar() [X] INSIDE_JAVADOC\n" + "src/s4/X.java void s4.X.bar() [X] INSIDE_JAVADOC\n" + "src/s4/X.java void s4.X.bar() [X] INSIDE_JAVADOC\n" + "src/s4/X.java void s4.X.fred() [X] OUTSIDE_JAVADOC", this.resultCollector); } /** * Search for enumerations */ public void testEnum01() throws CoreException { IType type = getCompilationUnit("JavaSearch15", "src", "e1", "Team.java").getType("Team"); search(type, REFERENCES, getJavaSearchScope15(), this.resultCollector); assertSearchResults( "src/a1/Author.java [e1.Team]\n" + "src/a1/Author.java [e1.Team]\n" + "src/a1/Author.java Team[] a1.Author.name() [Team]\n" + "src/a1/Test.java [e1.Team]\n" + "src/e1/Test.java void e1.Test.main(String[]) [Team]\n" + "src/e1/Test.java void e1.Test.main(String[]) [Team]\n" + "src/e1/Test.java Location e1.Test.location(Team) [Team]", this.resultCollector); } public void testEnum02() throws CoreException { IType type = getCompilationUnit("JavaSearch15", "src", "e1", "Team.java").getType("Team"); IMethod method = type.getMethod("Team", new String[0]); search(method, REFERENCES, getJavaSearchScope15("e1", false), this.resultCollector); assertSearchResults( "src/e1/Team.java e1.Team.FREDERIC [FREDERIC]", this.resultCollector); } public void testEnum03() throws CoreException { IType type = getCompilationUnit("JavaSearch15", "src", "e1", "Team.java").getType("Team"); IMethod method = type.getMethod("Team", new String[] { "I" }); search(method, REFERENCES, getJavaSearchScope15("e1", false), this.resultCollector); assertSearchResults( "src/e1/Team.java e1.Team.PHILIPPE [PHILIPPE(37)]\n" + "src/e1/Team.java e1.Team.DAVID [DAVID(27)]\n" + "src/e1/Team.java e1.Team.JEROME [JEROME(33)]\n" + "src/e1/Team.java e1.Team.OLIVIER [OLIVIER(35)]\n" + "src/e1/Team.java e1.Team.KENT [KENT(40)]", this.resultCollector); } public void testEnum04() throws CoreException { IType type = getCompilationUnit("JavaSearch15", "src", "e1", "Team.java").getType("Team"); IMethod method = type.getMethod("age", new String[0]); search(method, REFERENCES, getJavaSearchScope15("e1", false), this.resultCollector); assertSearchResults( "src/e1/Test.java void e1.Test.main(String[]) [age()]", this.resultCollector); } public void testEnum05() throws CoreException { IType type = getCompilationUnit("JavaSearch15", "src", "e1", "Team.java").getType("Team"); IMethod method = type.getMethod("isManager", new String[0]); search(method, ALL_OCCURRENCES, getJavaSearchScope15("e1", false), this.resultCollector); assertSearchResults( "src/e1/Team.java boolean e1.Team.PHILIPPE:<anonymous>#1.isManager() [isManager]\n" + "src/e1/Team.java boolean e1.Team.isManager() [isManager]\n" + "src/e1/Test.java void e1.Test.main(String[]) [isManager()]", this.resultCollector); } public void testEnum06() throws CoreException { IType type = getCompilationUnit("JavaSearch15", "src", "e1", "Team.java").getType("Team"); IMethod method = type.getMethod("setRole", new String[] { "Z" }); search(method, REFERENCES, getJavaSearchScope15("e1", false), this.resultCollector); assertSearchResults( "src/e1/Test.java void e1.Test.main(String[]) [setRole(t.isManager())]", this.resultCollector); } /** * Search method with varargs */ public void testVarargs01() throws CoreException { IType type = getCompilationUnit("JavaSearch15", "src", "v1", "X.java").getType("X"); IMethod method = type.getMethod("vargs", new String[] { "I", "I" }); search(method, ALL_OCCURRENCES, getJavaSearchScope15(), this.resultCollector); assertSearchResults( "src/v1/X.java void v1.X.vargs(int, int) [vargs]\n" + "src/v1/X.java void v1.X.bar() [vargs(1, 2)]", this.resultCollector); } public void testVarargs02() throws CoreException { IType type = getCompilationUnit("JavaSearch15", "src", "v1", "X.java").getType("X"); IMethod method = type.getMethod("vargs", new String[] { "I", "[I" }); search(method, ALL_OCCURRENCES, getJavaSearchScope15(), this.resultCollector); assertSearchResults( "src/v1/X.java void v1.X.vargs(int, int ...) [vargs]\n" + "src/v1/X.java void v1.X.bar() [vargs(1, 2, 3)]\n" + "src/v1/X.java void v1.X.bar() [vargs(1, 2, 3, 4, 5, 6)]", this.resultCollector); } public void testVarargs03() throws CoreException { IType type = getCompilationUnit("JavaSearch15", "src", "v1", "X.java").getType("X"); IMethod method = type.getMethod("vargs", new String[] { "[QString;" }); search(method, ALL_OCCURRENCES, getJavaSearchScope15(), this.resultCollector); assertSearchResults( "src/v1/X.java void v1.X.vargs(String ...) [vargs]\n" + "src/v1/X.java void v1.X.bar() [vargs(\"x\", \"a\",\"'b\", \"c\")]", this.resultCollector); } public void testVarargs04() throws CoreException { IType type = getCompilationUnit("JavaSearch15", "src", "v1", "X.java").getType("X"); IMethod method = type.getMethod("vargs", new String[] { "QString;", "[Z" }); search(method, ALL_OCCURRENCES, getJavaSearchScope15(), this.resultCollector); assertSearchResults( "src/v1/X.java void v1.X.vargs(String, boolean ...) [vargs]\n" + "src/v1/X.java void v1.X.bar() [vargs(\"x\", false, true)]", this.resultCollector); } public void testVarargs05() throws CoreException { search("vargs", METHOD, DECLARATIONS, getJavaSearchScope15(), this.resultCollector); assertSearchResults( "src/v1/X.java void v1.X.vargs(int, int) [vargs]\n" + "src/v1/X.java void v1.X.vargs(int, int ...) [vargs]\n" + "src/v1/X.java void v1.X.vargs(String ...) [vargs]\n" + "src/v1/X.java void v1.X.vargs(String, boolean ...) [vargs]", this.resultCollector); } public void testVarargs06() throws CoreException { search("vargs", METHOD, REFERENCES, getJavaSearchScope15(), this.resultCollector); assertSearchResults( "src/v1/X.java void v1.X.bar() [vargs(1, 2)]\n" + "src/v1/X.java void v1.X.bar() [vargs(1, 2, 3)]\n" + "src/v1/X.java void v1.X.bar() [vargs(1, 2, 3, 4, 5, 6)]\n" + "src/v1/X.java void v1.X.bar() [vargs(\"x\", \"a\",\"\'b\", \"c\")]\n" + "src/v1/X.java void v1.X.bar() [vargs(\"x\", false, true)]", this.resultCollector); } /** * Search for annotations */ public void testAnnotationType01() throws CoreException { IType type = getCompilationUnit("JavaSearch15", "src", "a1", "Author.java").getType("Author"); search(type, REFERENCES, getJavaSearchScope15(), this.resultCollector); assertSearchResults( "src/a1/Test.java a1.Test [Author]\n" + "src/a1/Test.java a1.Test.t [Author]\n" + "src/a1/Test.java void a1.Test.foo() [Author]", this.resultCollector); } public void testAnnotationType02() throws CoreException { ICompilationUnit unit = getCompilationUnit("JavaSearch15", "src", "a1", "Test.java"); IType type = selectType(unit, "Author"); search(type, DECLARATIONS, getJavaSearchScope15(), this.resultCollector); assertSearchResults( "src/a1/Author.java a1.Author [Author]", this.resultCollector); } /** * Search for auto-boxing */ public void testAutoBoxing01() throws CoreException { this.workingCopies = new ICompilationUnit[1]; this.workingCopies[0] = getWorkingCopy("/JavaSearch15/src/p/X.java", "package p;\n" + "public class X {\n" + " void foo(int x) {}\n" + " void bar() {\n" + " foo(new Integer(0));\n" + " }\n" + "}\n" ); IJavaSearchScope scope = SearchEngine.createJavaSearchScope(this.workingCopies); IMethod method = this.workingCopies[0].getType("X").getMethod("foo", new String[] { "I" }); search(method, REFERENCES, scope); assertSearchResults( "src/p/X.java void p.X.bar() [foo(new Integer(0))]" ); } /** * Search for type parameters */ /* * Type type parameters */ public void testTypeParameterTypes01() throws CoreException { ICompilationUnit unit = getCompilationUnit("JavaSearch15", "src", "g5.m.def", "Single.java"); ITypeParameter typeParam = selectTypeParameter(unit, "T"); search(typeParam, REFERENCES, getJavaSearchScope15()); assertSearchResults( "src/g5/m/def/Single.java void g5.m.def.Single.standard(T) [T]\n" + "src/g5/m/def/Single.java T g5.m.def.Single.generic(U) [T]\n" + "src/g5/m/def/Single.java Single<T> g5.m.def.Single.returnParamType() [T]\n" + "src/g5/m/def/Single.java Single<T> g5.m.def.Single.returnParamType() [T]\n" + "src/g5/m/def/Single.java void g5.m.def.Single.paramTypesArgs(Single<T>) [T]\n" + "src/g5/m/def/Single.java Single<T> g5.m.def.Single.complete(U, Single<T>) [T]\n" + "src/g5/m/def/Single.java Single<T> g5.m.def.Single.complete(U, Single<T>) [T]\n" + "src/g5/m/def/Single.java Single<T> g5.m.def.Single.complete(U, Single<T>) [T]" ); } public void testTypeParameterTypes02() throws CoreException { ICompilationUnit unit = getCompilationUnit("JavaSearch15", "src", "g5.m.def", "Single.java"); ITypeParameter typeParam = selectTypeParameter(unit, "T", 3); // return type of returnParamType() method search(typeParam, DECLARATIONS, getJavaSearchScope15()); assertSearchResults( "src/g5/m/def/Single.java g5.m.def.Single [T]" ); } public void testTypeParameterTypes03() throws CoreException { ICompilationUnit unit = getCompilationUnit("JavaSearch15", "src", "g5.m.def", "Single.java"); ITypeParameter typeParam = selectTypeParameter(unit, "T", 4); // type argument of Single<T> search(typeParam, ALL_OCCURRENCES, getJavaSearchScope15()); assertSearchResults( "src/g5/m/def/Single.java g5.m.def.Single [T]\n" + "src/g5/m/def/Single.java void g5.m.def.Single.standard(T) [T]\n" + "src/g5/m/def/Single.java T g5.m.def.Single.generic(U) [T]\n" + "src/g5/m/def/Single.java Single<T> g5.m.def.Single.returnParamType() [T]\n" + "src/g5/m/def/Single.java Single<T> g5.m.def.Single.returnParamType() [T]\n" + "src/g5/m/def/Single.java void g5.m.def.Single.paramTypesArgs(Single<T>) [T]\n" + "src/g5/m/def/Single.java Single<T> g5.m.def.Single.complete(U, Single<T>) [T]\n" + "src/g5/m/def/Single.java Single<T> g5.m.def.Single.complete(U, Single<T>) [T]\n" + "src/g5/m/def/Single.java Single<T> g5.m.def.Single.complete(U, Single<T>) [T]" ); } public void testTypeParameterTypes04() throws CoreException { ICompilationUnit unit = getCompilationUnit("JavaSearch15", "src", "g5.m.def", "Multiple.java"); ITypeParameter typeParam = selectTypeParameter(unit, "T3"); search(typeParam, REFERENCES, getJavaSearchScope15()); assertSearchResults( "src/g5/m/def/Multiple.java void g5.m.def.Multiple.standard(T1, T2, T3) [T3]\n" + "src/g5/m/def/Multiple.java Multiple<T1,T2,T3> g5.m.def.Multiple.returnParamType() [T3]\n" + "src/g5/m/def/Multiple.java Multiple<T1,T2,T3> g5.m.def.Multiple.returnParamType() [T3]\n" + "src/g5/m/def/Multiple.java void g5.m.def.Multiple.paramTypesArgs(Single<T1>, Single<T2>, Single<T3>, Multiple<T1,T2,T3>) [T3]\n" + "src/g5/m/def/Multiple.java void g5.m.def.Multiple.paramTypesArgs(Single<T1>, Single<T2>, Single<T3>, Multiple<T1,T2,T3>) [T3]\n" + "src/g5/m/def/Multiple.java Multiple<T1,T2,T3> g5.m.def.Multiple.complete(U1, U2, U3, Multiple<T1,T2,T3>) [T3]\n" + "src/g5/m/def/Multiple.java Multiple<T1,T2,T3> g5.m.def.Multiple.complete(U1, U2, U3, Multiple<T1,T2,T3>) [T3]\n" + "src/g5/m/def/Multiple.java Multiple<T1,T2,T3> g5.m.def.Multiple.complete(U1, U2, U3, Multiple<T1,T2,T3>) [T3]" ); } public void testTypeParameterTypes05() throws CoreException { ICompilationUnit unit = getCompilationUnit("JavaSearch15", "src", "g5.m.def", "Multiple.java"); ITypeParameter typeParam = selectTypeParameter(unit, "T1", 2); // return type of returnParamType() method search(typeParam, DECLARATIONS, getJavaSearchScope15()); assertSearchResults( "src/g5/m/def/Multiple.java g5.m.def.Multiple [T1]" ); } public void testTypeParameterTypes06() throws CoreException { ICompilationUnit unit = getCompilationUnit("JavaSearch15", "src", "g5.m.def", "Multiple.java"); ITypeParameter typeParam = selectTypeParameter(unit, "T2", 3); // type argument of Multiple<T1,T2,T3> search(typeParam, ALL_OCCURRENCES, getJavaSearchScope15()); assertSearchResults( "src/g5/m/def/Multiple.java g5.m.def.Multiple [T2]\n" + "src/g5/m/def/Multiple.java void g5.m.def.Multiple.standard(T1, T2, T3) [T2]\n" + "src/g5/m/def/Multiple.java Multiple<T1,T2,T3> g5.m.def.Multiple.returnParamType() [T2]\n" + "src/g5/m/def/Multiple.java Multiple<T1,T2,T3> g5.m.def.Multiple.returnParamType() [T2]\n" + "src/g5/m/def/Multiple.java void g5.m.def.Multiple.paramTypesArgs(Single<T1>, Single<T2>, Single<T3>, Multiple<T1,T2,T3>) [T2]\n" + "src/g5/m/def/Multiple.java void g5.m.def.Multiple.paramTypesArgs(Single<T1>, Single<T2>, Single<T3>, Multiple<T1,T2,T3>) [T2]\n" + "src/g5/m/def/Multiple.java Multiple<T1,T2,T3> g5.m.def.Multiple.complete(U1, U2, U3, Multiple<T1,T2,T3>) [T2]\n" + "src/g5/m/def/Multiple.java Multiple<T1,T2,T3> g5.m.def.Multiple.complete(U1, U2, U3, Multiple<T1,T2,T3>) [T2]\n" + "src/g5/m/def/Multiple.java Multiple<T1,T2,T3> g5.m.def.Multiple.complete(U1, U2, U3, Multiple<T1,T2,T3>) [T2]" ); } /* * Methods type parameters */ public void testTypeParameterMethods01() throws CoreException { ICompilationUnit unit = getCompilationUnit("JavaSearch15", "src", "g5.m.def", "Single.java"); ITypeParameter typeParam = selectTypeParameter(unit, "U"); search(typeParam, REFERENCES, getJavaSearchScope15()); assertSearchResults( "src/g5/m/def/Single.java T g5.m.def.Single.generic(U) [U]" ); } public void testTypeParameterMethods02() throws CoreException { ICompilationUnit unit = getCompilationUnit("JavaSearch15", "src", "g5.m.def", "Single.java"); ITypeParameter typeParam = selectTypeParameter(unit, "U", 2); // argument of generic method search(typeParam, DECLARATIONS, getJavaSearchScope15()); assertSearchResults( "src/g5/m/def/Single.java T g5.m.def.Single.generic(U) [U]" ); } public void testTypeParameterMethods03() throws CoreException { ICompilationUnit unit = getCompilationUnit("JavaSearch15", "src", "g5.m.def", "Single.java"); ITypeParameter typeParam = selectTypeParameter(unit, "U", 4); // argument of complete method search(typeParam, ALL_OCCURRENCES, getJavaSearchScope15()); assertSearchResults( "src/g5/m/def/Single.java Single<T> g5.m.def.Single.complete(U, Single<T>) [U]\n" + "src/g5/m/def/Single.java Single<T> g5.m.def.Single.complete(U, Single<T>) [U]" ); } public void testTypeParameterMethods04() throws CoreException { ICompilationUnit unit = getCompilationUnit("JavaSearch15", "src", "g5.m.def", "Multiple.java"); ITypeParameter typeParam = selectTypeParameter(unit, "U3", 3); // type parameter of complete method (extends) search(typeParam, REFERENCES, getJavaSearchScope15()); assertSearchResults( "src/g5/m/def/Multiple.java Multiple<T1,T2,T3> g5.m.def.Multiple.complete(U1, U2, U3, Multiple<T1,T2,T3>) [U3]" ); } public void testTypeParameterMethods05() throws CoreException { ICompilationUnit unit = getCompilationUnit("JavaSearch15", "src", "g5.m.def", "Multiple.java"); ITypeParameter typeParam = selectTypeParameter(unit, "U1", 2); // argument of generic method search(typeParam, DECLARATIONS, getJavaSearchScope15()); assertSearchResults( "src/g5/m/def/Multiple.java T1 g5.m.def.Multiple.generic(U1, U2, U3) [U1]" ); } public void testTypeParameterMethods06() throws CoreException { ICompilationUnit unit = getCompilationUnit("JavaSearch15", "src", "g5.m.def", "Multiple.java"); ITypeParameter typeParam = selectTypeParameter(unit, "U2", 4); // argument of complete method search(typeParam, ALL_OCCURRENCES, getJavaSearchScope15()); assertSearchResults( "src/g5/m/def/Multiple.java Multiple<T1,T2,T3> g5.m.def.Multiple.complete(U1, U2, U3, Multiple<T1,T2,T3>) [U2]\n" + "src/g5/m/def/Multiple.java Multiple<T1,T2,T3> g5.m.def.Multiple.complete(U1, U2, U3, Multiple<T1,T2,T3>) [U2]" ); } /* * Constructors type parameters */ public void testTypeParameterConstructors01() throws CoreException { ICompilationUnit unit = getCompilationUnit("JavaSearch15", "src", "g5.c.def", "Single.java"); ITypeParameter typeParam = selectTypeParameter(unit, "U"); search(typeParam, REFERENCES, getJavaSearchScope15()); assertSearchResults( "src/g5/c/def/Single.java g5.c.def.Single(T, U) [U]" ); } public void testTypeParameterConstructors02() throws CoreException { ICompilationUnit unit = getCompilationUnit("JavaSearch15", "src", "g5.c.def", "Single.java"); ITypeParameter typeParam = selectTypeParameter(unit, "U"); // TODO (frederic) use following line instead when bug 83438 will be fixed // ITypeParameter typeParam = selectTypeParameter(unit, "U", 2); // argument of generic method search(typeParam, DECLARATIONS, getJavaSearchScope15()); assertSearchResults( "src/g5/c/def/Single.java g5.c.def.Single(T, U) [U]" ); } public void testTypeParameterConstructors03() throws CoreException { ICompilationUnit unit = getCompilationUnit("JavaSearch15", "src", "g5.c.def", "Single.java"); ITypeParameter typeParam = selectTypeParameter(unit, "U"); // TODO (frederic) use following line instead when bug 83438 will be fixed //ITypeParameter typeParam = selectTypeParameter(unit, "U", 4); // argument of complete method search(typeParam, ALL_OCCURRENCES, getJavaSearchScope15()); assertSearchResults( "src/g5/c/def/Single.java g5.c.def.Single(T, U) [U]\n" + "src/g5/c/def/Single.java g5.c.def.Single(T, U) [U]" ); } public void testTypeParameterConstructors04() throws CoreException { ICompilationUnit unit = getCompilationUnit("JavaSearch15", "src", "g5.c.def", "Multiple.java"); ITypeParameter typeParam = selectTypeParameter(unit, "U3", 3); // type parameter of complete method (extends) search(typeParam, REFERENCES, getJavaSearchScope15()); assertSearchResults( "src/g5/c/def/Multiple.java g5.c.def.Multiple(U1, U2, U3, Multiple<T1,T2,T3>) [U3]" ); } public void testTypeParameterConstructors05() throws CoreException { ICompilationUnit unit = getCompilationUnit("JavaSearch15", "src", "g5.c.def", "Multiple.java"); ITypeParameter typeParam = selectTypeParameter(unit, "U1"); // TODO (frederic) use following line instead when bug 83438 will be fixed //ITypeParameter typeParam = selectTypeParameter(unit, "U1", 2); // argument of generic method search(typeParam, DECLARATIONS, getJavaSearchScope15()); assertSearchResults( "src/g5/c/def/Multiple.java g5.c.def.Multiple(Multiple<T1,T2,T3>, U1, U2, U3) [U1]" ); } public void testTypeParameterConstructors06() throws CoreException { ICompilationUnit unit = getCompilationUnit("JavaSearch15", "src", "g5.c.def", "Multiple.java"); ITypeParameter typeParam = selectTypeParameter(unit, "U2", 3); // TODO (frederic) use following line instead when bug 83438 will be fixed //ITypeParameter typeParam = selectTypeParameter(unit, "U2", 4); // argument of complete method search(typeParam, ALL_OCCURRENCES, getJavaSearchScope15()); assertSearchResults( "src/g5/c/def/Multiple.java g5.c.def.Multiple(U1, U2, U3, Multiple<T1,T2,T3>) [U2]\n" + "src/g5/c/def/Multiple.java g5.c.def.Multiple(U1, U2, U3, Multiple<T1,T2,T3>) [U2]" ); } /** * Test static import */ // for fields public void testStaticImportField01() throws CoreException { IType type = getCompilationUnit("JavaSearch15", "src", "s1.pack.age", "S.java").getType("S"); search(type, REFERENCES, getJavaSearchScope15(), this.resultCollector); assertSearchResults( "src/s1/A.java [s1.pack.age.S]\n" + "src/s1/A.java [s1.pack.age.S]\n" + "src/s1/A.java [s1.pack.age.S]\n" + "src/s1/B.java [s1.pack.age.S]\n" + "src/s1/B.java [s1.pack.age.S]\n" + "src/s1/C.java [s1.pack.age.S]\n" + "src/s1/C.java [s1.pack.age.S]\n" + "src/s1/D.java [s1.pack.age.S]" ); } public void testStaticImportField02() throws CoreException { IType type = getCompilationUnit("JavaSearch15", "src", "s1.pack.age", "S.java").getType("S"); IField field = type.getField("out"); search(field, REFERENCES, getJavaSearchScope15(), this.resultCollector); assertSearchResults( "src/s1/A.java [out]\n" + "src/s1/B.java void s1.B.foo() [out]\n" + "src/s1/C.java [out]\n" + "src/s1/C.java void s1.C.foo() [out]" ); } public void testStaticImportField03() throws CoreException { IType type = getCompilationUnit("JavaSearch15", "src", "s1.pack.age", "S.java").getType("S"); IType member = type.getType("M"); search(member, REFERENCES, getJavaSearchScope15(), this.resultCollector); assertSearchResults( "src/s1/A.java [s1.pack.age.S.M]\n" + "src/s1/B.java [s1.pack.age.S.M]\n" + "src/s1/C.java [s1.pack.age.S.M]\n" + "src/s1/D.java [s1.pack.age.S.M]\n" + "src/s1/D.java void s1.D.foo() [M]\n" + "src/s1/D.java void s1.D.foo() [M]" ); } public void testStaticImportField04() throws CoreException { IType type = getCompilationUnit("JavaSearch15", "src", "s1.pack.age", "S.java").getType("S"); IType member = type.getType("M"); IField field = member.getField("in"); search(field, REFERENCES, getJavaSearchScope15(), this.resultCollector); assertSearchResults( "src/s1/A.java [in]\n" + "src/s1/B.java void s1.B.foo() [in]\n" + "src/s1/C.java [in]\n" + "src/s1/C.java void s1.C.foo() [in]\n" + "src/s1/D.java void s1.D.foo() [in]" ); } // for methods public void testStaticImportMethod01() throws CoreException { IType type = getCompilationUnit("JavaSearch15", "src", "s2.pack.age", "S.java").getType("S"); search(type, REFERENCES, getJavaSearchScope15(), this.resultCollector); assertSearchResults( "src/s2/A.java [s2.pack.age.S]\n" + "src/s2/A.java [s2.pack.age.S]\n" + "src/s2/A.java [s2.pack.age.S]\n" + "src/s2/B.java [s2.pack.age.S]\n" + "src/s2/B.java [s2.pack.age.S]\n" + "src/s2/C.java [s2.pack.age.S]\n" + "src/s2/C.java [s2.pack.age.S]\n" + "src/s2/D.java [s2.pack.age.S]" ); } public void testStaticImportMethod02() throws CoreException { IType type = getCompilationUnit("JavaSearch15", "src", "s2.pack.age", "S.java").getType("S"); IMethod method = type.getMethod("out", new String[0]); search(method, REFERENCES, getJavaSearchScope15(), this.resultCollector); assertSearchResults( "src/s2/A.java [s2.pack.age.S.out]\n" + "src/s2/B.java void s2.B.foo() [out()]\n" + "src/s2/C.java [s2.pack.age.S.out]\n" + "src/s2/C.java void s2.C.foo() [out()]" ); } public void testStaticImportMethod03() throws CoreException { IType type = getCompilationUnit("JavaSearch15", "src", "s2.pack.age", "S.java").getType("S"); IType member = type.getType("M"); search(member, REFERENCES, getJavaSearchScope15(), this.resultCollector); assertSearchResults( "src/s2/A.java [s2.pack.age.S.M]\n" + "src/s2/B.java [s2.pack.age.S.M]\n" + "src/s2/C.java [s2.pack.age.S.M]\n" + "src/s2/D.java [s2.pack.age.S.M]\n" + "src/s2/D.java void s2.D.foo() [M]\n" + "src/s2/D.java void s2.D.foo() [M]" ); } public void testStaticImportMethod04() throws CoreException { IType type = getCompilationUnit("JavaSearch15", "src", "s2.pack.age", "S.java").getType("S"); IType member = type.getType("M"); IMethod method = member.getMethod("in", new String[0]); search(method, REFERENCES, getJavaSearchScope15(), this.resultCollector); assertSearchResults( "src/s2/A.java [s2.pack.age.S.M.in]\n" + "src/s2/B.java void s2.B.foo() [in()]\n" + "src/s2/C.java [s2.pack.age.S.M.in]\n" + "src/s2/C.java void s2.C.foo() [in()]\n" + "src/s2/D.java void s2.D.foo() [in()]" ); } // for packages public void testStaticImportPackage01() throws CoreException { IPackageFragment pkg = getPackageFragment("JavaSearch15", "src", "s1.pack.age"); search(pkg, REFERENCES, getJavaSearchScope15(), this.resultCollector); assertSearchResults( "src/s1/A.java [s1.pack.age]\n" + "src/s1/A.java [s1.pack.age]\n" + "src/s1/A.java [s1.pack.age]\n" + "src/s1/B.java [s1.pack.age]\n" + "src/s1/B.java [s1.pack.age]\n" + "src/s1/C.java [s1.pack.age]\n" + "src/s1/C.java [s1.pack.age]\n" + "src/s1/D.java [s1.pack.age]" ); } public void testStaticImportPackage02() throws CoreException { IPackageFragment pkg = getPackageFragment("JavaSearch15", "src", "s2.pack.age"); search(pkg, REFERENCES, getJavaSearchScope15(), this.resultCollector); assertSearchResults( "src/s2/A.java [s2.pack.age]\n" + "src/s2/A.java [s2.pack.age]\n" + "src/s2/A.java [s2.pack.age]\n" + "src/s2/B.java [s2.pack.age]\n" + "src/s2/B.java [s2.pack.age]\n" + "src/s2/C.java [s2.pack.age]\n" + "src/s2/C.java [s2.pack.age]\n" + "src/s2/D.java [s2.pack.age]" ); } /** * @test Bug 110060: [plan][search] Add support for Camel Case search pattern * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=110060" * * These tests are not really duplicates of {@link JavaSearchBugsTests} ones * as they also test camel case in indexes... */ public void testCamelCaseTypePattern01_CamelCase() throws CoreException { search("RE", TYPE, DECLARATIONS, SearchPattern.R_CAMELCASE_MATCH); assertSearchResults( "src/a3/References.java a3.References [References]\n" + ""+ getExternalJCLPathString() + " java.lang.RuntimeException" ); } public void testCamelCaseTypePattern02_CamelCase() throws CoreException { search("RException", TYPE, DECLARATIONS, SearchPattern.R_CAMELCASE_MATCH); assertSearchResults( ""+ getExternalJCLPathString() + " java.lang.RuntimeException" ); } public void testCamelCaseTypePattern03_CamelCase() throws CoreException { search("RuntimeException", TYPE, DECLARATIONS, SearchPattern.R_CAMELCASE_MATCH); assertSearchResults( ""+ getExternalJCLPathString() + " java.lang.RuntimeException" ); } public void testCamelCaseTypePattern04_CamelCase() throws CoreException { search("RUNTIMEEXCEPTION", TYPE, DECLARATIONS, SearchPattern.R_CAMELCASE_MATCH); assertSearchResults( ""+ getExternalJCLPathString() + " java.lang.RuntimeException" ); } public void testCamelCaseTypePattern05_CamelCase() throws CoreException { search("R*E*", TYPE, DECLARATIONS, SearchPattern.R_CAMELCASE_MATCH); assertSearchResults( "src/a3/References.java a3.References [References]\n" + ""+ getExternalJCLPathString() + " java.lang.RuntimeException" ); } public void testCamelCaseTypePattern06_CamelCase() throws CoreException { TypeNameRequestor requestor = new SearchTests.SearchTypeNameRequestor(); searchAllTypeNames("CNS", SearchPattern.R_CAMELCASE_MATCH, requestor); assertSearchResults( "Unexpected all type names", "java.lang.CloneNotSupportedException", requestor); } public void testCamelCaseTypePattern07_CamelCase() throws CoreException { TypeNameRequestor requestor = new SearchTests.SearchTypeNameRequestor(); searchAllTypeNames("AA", SearchPattern.R_CAMELCASE_MATCH, requestor); assertSearchResults( "Unexpected all type names", "AA\n" + "c9.AbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyz\n" + "d8.AA\n" + "p6.AA\n" + "q1.AA", requestor); } public void testCamelCaseTypePattern08_CamelCase() throws CoreException { TypeNameRequestor requestor = new SearchTests.SearchTypeNameRequestor(); searchAllTypeNames("aa", SearchPattern.R_CAMELCASE_MATCH, requestor); assertSearchResults( "Unexpected all type names", "AA\n" + "d8.AA\n" + "p6.AA\n" + "q1.AA", requestor); } public void testCamelCaseTypePattern09_CamelCase() throws CoreException { TypeNameRequestor requestor = new SearchTests.SearchTypeNameRequestor(); searchAllTypeNames("aa", SearchPattern.R_CAMELCASE_MATCH | SearchPattern.R_PREFIX_MATCH, requestor); assertSearchResults( "Unexpected all type names", "AA\n" + "d8.AA\n" + "p6.AA\n" + "q1.AA", requestor); } public void testCamelCaseTypePattern10_CamelCase() throws CoreException { this.workingCopies = new ICompilationUnit[1]; this.workingCopies[0] = getWorkingCopy("/JavaSearch/src/Test.java", "class Null {}\n" + "class NULL {}\n" + "class NullPointerException {}\n" + "class Nullpointerexception {}\n" + "class NULLPointerException {}\n" + "class NULLPOINTERException {}\n" + "class NULLPOINTEREXCEPTION {}\n" ); search("Null", IJavaSearchConstants.TYPE, IJavaSearchConstants.DECLARATIONS, SearchPattern.R_CAMELCASE_MATCH); assertSearchResults( "src/Test.java Null [Null]\n" + "src/Test.java NULL [NULL]\n" + "src/Test.java NullPointerException [NullPointerException]\n" + "src/Test.java Nullpointerexception [Nullpointerexception]\n" + "src/Test.java NULLPointerException [NULLPointerException]\n" + "src/Test.java NULLPOINTERException [NULLPOINTERException]\n" + "src/Test.java NULLPOINTEREXCEPTION [NULLPOINTEREXCEPTION]" ); } public void testCamelCaseTypePattern11_CamelCase() throws CoreException { this.workingCopies = new ICompilationUnit[1]; this.workingCopies[0] = getWorkingCopy("/JavaSearch/src/Test.java", "class Null {}\n" + "class NULL {}\n" + "class NullPointerException {}\n" + "class Nullpointerexception {}\n" + "class NULLPointerException {}\n" + "class NULLPOINTERException {}\n" + "class NULLPOINTEREXCEPTION {}\n" ); search("Null", IJavaSearchConstants.TYPE, IJavaSearchConstants.DECLARATIONS, SearchPattern.R_CAMELCASE_MATCH | SearchPattern.R_PREFIX_MATCH); assertSearchResults( "src/Test.java Null [Null]\n" + "src/Test.java NULL [NULL]\n" + "src/Test.java NullPointerException [NullPointerException]\n" + "src/Test.java Nullpointerexception [Nullpointerexception]\n" + "src/Test.java NULLPointerException [NULLPointerException]\n" + "src/Test.java NULLPOINTERException [NULLPOINTERException]\n" + "src/Test.java NULLPOINTEREXCEPTION [NULLPOINTEREXCEPTION]" ); } public void testCamelCaseTypePattern12_CamelCase() throws CoreException { this.workingCopies = new ICompilationUnit[1]; this.workingCopies[0] = getWorkingCopy("/JavaSearch/src/Test.java", "class Null {}\n" + "class NULL {}\n" + "class NullPointerException {}\n" + "class Nullpointerexception {}\n" + "class NULLPointerException {}\n" + "class NULLPOINTERException {}\n" + "class NULLPOINTEREXCEPTION {}\n" ); search("Null", IJavaSearchConstants.TYPE, IJavaSearchConstants.DECLARATIONS, SearchPattern.R_CAMELCASE_MATCH | SearchPattern.R_CASE_SENSITIVE); assertSearchResults( "src/Test.java Null [Null]\n" + "src/Test.java NullPointerException [NullPointerException]\n" + "src/Test.java Nullpointerexception [Nullpointerexception]" ); } public void testCamelCaseTypePattern13_CamelCase() throws CoreException { this.workingCopies = new ICompilationUnit[1]; this.workingCopies[0] = getWorkingCopy("/JavaSearch/src/Test.java", "class Null {}\n" + "class NULL {}\n" + "class NullPointerException {}\n" + "class Nullpointerexception {}\n" + "class NULLPointerException {}\n" + "class NULLPOINTERException {}\n" + "class NULLPOINTEREXCEPTION {}\n" ); search("Null", IJavaSearchConstants.TYPE, IJavaSearchConstants.DECLARATIONS, SearchPattern.R_CAMELCASE_MATCH | SearchPattern.R_PREFIX_MATCH | SearchPattern.R_CASE_SENSITIVE); assertSearchResults( "src/Test.java Null [Null]\n" + "src/Test.java NullPointerException [NullPointerException]\n" + "src/Test.java Nullpointerexception [Nullpointerexception]" ); } // Same tests using SearchPattern.R_CAMELCASE_SAME_PART_COUNT_MATCH instead public void testCamelCaseTypePattern01_CamelCaseSamePartCount() throws CoreException { search("RE", TYPE, DECLARATIONS, SearchPattern.R_CAMELCASE_SAME_PART_COUNT_MATCH); assertSearchResults( ""+ getExternalJCLPathString() + " java.lang.RuntimeException" ); } public void testCamelCaseTypePattern02_CamelCaseSamePartCount() throws CoreException { search("RException", TYPE, DECLARATIONS, SearchPattern.R_CAMELCASE_SAME_PART_COUNT_MATCH); assertSearchResults( ""+ getExternalJCLPathString() + " java.lang.RuntimeException" ); } public void testCamelCaseTypePattern03_CamelCaseSamePartCount() throws CoreException { search("RuntimeException", TYPE, DECLARATIONS, SearchPattern.R_CAMELCASE_SAME_PART_COUNT_MATCH); assertSearchResults( ""+ getExternalJCLPathString() + " java.lang.RuntimeException" ); } public void testCamelCaseTypePattern04_CamelCaseSamePartCount() throws CoreException { search("RUNTIMEEXCEPTION", TYPE, DECLARATIONS, SearchPattern.R_CAMELCASE_SAME_PART_COUNT_MATCH); assertSearchResults(""); } public void testCamelCaseTypePattern05_CamelCaseSamePartCount() throws CoreException { search("R*E*", TYPE, DECLARATIONS, SearchPattern.R_CAMELCASE_SAME_PART_COUNT_MATCH); assertSearchResults( "src/a3/References.java a3.References [References]\n" + ""+ getExternalJCLPathString() + " java.lang.RuntimeException" ); } public void testCamelCaseTypePattern06_CamelCaseSamePartCount() throws CoreException { TypeNameRequestor requestor = new SearchTests.SearchTypeNameRequestor(); searchAllTypeNames("CNS", SearchPattern.R_CAMELCASE_SAME_PART_COUNT_MATCH, requestor); assertSearchResults( "Unexpected all type names", "", requestor); } public void testCamelCaseTypePattern07_CamelCaseSamePartCount() throws CoreException { TypeNameRequestor requestor = new SearchTests.SearchTypeNameRequestor(); searchAllTypeNames("AA", SearchPattern.R_CAMELCASE_SAME_PART_COUNT_MATCH, requestor); assertSearchResults( "Unexpected all type names", "AA\n" + "d8.AA\n" + "p6.AA\n" + "q1.AA", requestor); } public void testCamelCaseTypePattern08_CamelCaseSamePartCount() throws CoreException { TypeNameRequestor requestor = new SearchTests.SearchTypeNameRequestor(); searchAllTypeNames("aa", SearchPattern.R_CAMELCASE_SAME_PART_COUNT_MATCH, requestor); assertSearchResults( "Unexpected all type names", "AA\n" + "d8.AA\n" + "p6.AA\n" + "q1.AA", requestor); } public void testCamelCaseTypePattern09_CamelCaseSamePartCount() throws CoreException { TypeNameRequestor requestor = new SearchTests.SearchTypeNameRequestor(); searchAllTypeNames("aa", SearchPattern.R_CAMELCASE_SAME_PART_COUNT_MATCH | SearchPattern.R_PREFIX_MATCH, requestor); assertSearchResults( "Unexpected all type names", "AA\n" + "d8.AA\n" + "p6.AA\n" + "q1.AA", requestor); } public void testCamelCaseTypePattern10_CamelCaseSamePartCount() throws CoreException { this.workingCopies = new ICompilationUnit[1]; this.workingCopies[0] = getWorkingCopy("/JavaSearch/src/Test.java", "class Null {}\n" + "class NULL {}\n" + "class NullPointerException {}\n" + "class Nullpointerexception {}\n" + "class NULLPointerException {}\n" + "class NULLPOINTERException {}\n" + "class NULLPOINTEREXCEPTION {}\n" ); search("Null", IJavaSearchConstants.TYPE, IJavaSearchConstants.DECLARATIONS, SearchPattern.R_CAMELCASE_SAME_PART_COUNT_MATCH); assertSearchResults( "src/Test.java Null [Null]\n" + "src/Test.java NULL [NULL]" ); } public void testCamelCaseTypePattern11_CamelCaseSamePartCount() throws CoreException { this.workingCopies = new ICompilationUnit[1]; this.workingCopies[0] = getWorkingCopy("/JavaSearch/src/Test.java", "class Null {}\n" + "class NULL {}\n" + "class NullPointerException {}\n" + "class Nullpointerexception {}\n" + "class NULLPointerException {}\n" + "class NULLPOINTERException {}\n" + "class NULLPOINTEREXCEPTION {}\n" ); search("Null", IJavaSearchConstants.TYPE, IJavaSearchConstants.DECLARATIONS, SearchPattern.R_CAMELCASE_SAME_PART_COUNT_MATCH | SearchPattern.R_PREFIX_MATCH); assertSearchResults( "src/Test.java Null [Null]\n" + "src/Test.java NULL [NULL]" ); } public void testCamelCaseTypePattern12_CamelCaseSamePartCount() throws CoreException { this.workingCopies = new ICompilationUnit[1]; this.workingCopies[0] = getWorkingCopy("/JavaSearch/src/Test.java", "class Null {}\n" + "class NULL {}\n" + "class NullPointerException {}\n" + "class Nullpointerexception {}\n" + "class NULLPointerException {}\n" + "class NULLPOINTERException {}\n" + "class NULLPOINTEREXCEPTION {}\n" ); search("Null", IJavaSearchConstants.TYPE, IJavaSearchConstants.DECLARATIONS, SearchPattern.R_CAMELCASE_SAME_PART_COUNT_MATCH | SearchPattern.R_CASE_SENSITIVE); assertSearchResults( "src/Test.java Null [Null]" ); } public void testCamelCaseTypePattern13_CamelCaseSamePartCount() throws CoreException { this.workingCopies = new ICompilationUnit[1]; this.workingCopies[0] = getWorkingCopy("/JavaSearch/src/Test.java", "class Null {}\n" + "class NULL {}\n" + "class NullPointerException {}\n" + "class Nullpointerexception {}\n" + "class NULLPointerException {}\n" + "class NULLPOINTERException {}\n" + "class NULLPOINTEREXCEPTION {}\n" ); search("Null", IJavaSearchConstants.TYPE, IJavaSearchConstants.DECLARATIONS, SearchPattern.R_CAMELCASE_SAME_PART_COUNT_MATCH | SearchPattern.R_PREFIX_MATCH | SearchPattern.R_CASE_SENSITIVE); assertSearchResults( "src/Test.java Null [Null]" ); } /** * @bug 160323: [search] TypeNameMatch: support hashCode/equals * @test Ensure that match equals and hashCode methods return same values than those of stored {@link IType}. * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=160323" */ public void testBug160323() throws CoreException { // Search all type names with TypeNameMatchRequestor TypeNameMatchCollector collector = new TypeNameMatchCollector() { public String toString(){ return toFullyQualifiedNamesString(); } }; new SearchEngine().searchAllTypeNames( null, SearchPattern.R_EXACT_MATCH, null, SearchPattern.R_PREFIX_MATCH, IJavaSearchConstants.TYPE, getJavaSearchScope(), collector, IJavaSearchConstants.WAIT_UNTIL_READY_TO_SEARCH, null); // Search all type names with TypeNameRequestor SearchTests.SearchTypeNameRequestor requestor = new SearchTests.SearchTypeNameRequestor(); new SearchEngine().searchAllTypeNames( null, SearchPattern.R_EXACT_MATCH, null, SearchPattern.R_PREFIX_MATCH, IJavaSearchConstants.TYPE, getJavaSearchScope(), requestor, IJavaSearchConstants.WAIT_UNTIL_READY_TO_SEARCH, null); // Should have same types with these 2 searches assertEquals("Found types sounds not to be correct", requestor.toString(), collector.toString()); } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=383908 public void testBug383908() throws CoreException { try { String fileContent = "package p;\n" + "public class X {\n" + " public void foobar(X this, String str) {\n" + " }\n" + "}"; createJavaProject("P", new String[] {"src"}, new String[0], "bin"); createFolder("/P/src/p"); createFile("/P/src/p/X.java", fileContent); IType type = getCompilationUnit("P", "src", "p", "X.java").getType("X"); IMethod[] methods = type.getMethods(); search( methods[0], DECLARATIONS, SearchEngine.createJavaSearchScope(new IJavaElement[] {type}), this.resultCollector); assertSearchResults( "src/p/X.java void p.X.foobar(String) [foobar]", this.resultCollector); } finally { deleteProject("P"); } } }