/******************************************************************************* * Copyright (c) 2000, 2009 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 *******************************************************************************/ package org.eclipse.wst.jsdt.core.tests.model; import java.io.File; import java.io.IOException; import java.util.Hashtable; import junit.framework.Test; import org.eclipse.core.resources.*; import org.eclipse.core.runtime.*; import org.eclipse.wst.jsdt.core.*; import org.eclipse.wst.jsdt.core.search.*; import org.eclipse.wst.jsdt.core.tests.util.Util; import org.eclipse.wst.jsdt.internal.core.JavaModelStatus; /** * Tests the Java search engine where results are JavaElements and source positions. */ public class JavaSearchTests extends AbstractJavaSearchTests implements IJavaScriptSearchConstants { 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.jsdt.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.jsdt.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.jsdt.core.tests.model.SuiteOfTestCases#setUpSuite() */ public void setUpSuite() throws Exception { super.setUpSuite(); if (JAVA_PROJECT == null) { JAVA_PROJECT = setUpJavaProject("JSSearch"); // setUpJavaProject("JavaSearch15", "1.5"); } } public void tearDownSuite() throws Exception { if (JAVA_SEARCH_SUITES == null) { deleteProject("JSSearch"); // deleteProject("JavaSearch15"); } else { JAVA_SEARCH_SUITES.remove(getClass()); if (JAVA_SEARCH_SUITES.size() == 0) { deleteProject("JSSearch"); //deleteProject("JavaSearch15"); } } super.tearDownSuite(); } public void test00() throws CoreException { // was testSimpleConstructorReference1 IJavaScriptUnit compilationUnit = getCompilationUnit("JSSearch", "src", "p", "A.js"); IFunction constructor = compilationUnit.getFunction("A", new String[] {"QX;"}); search( constructor, DECLARATIONS, getJavaSearchScope(), this.resultCollector); assertSearchResults("src/p/A.js any A(any) [A]", resultCollector); } public void test01() throws CoreException { // was testSimpleConstructorDeclaration IJavaScriptUnit compilationUnit = getCompilationUnit("JSSearch", "src", "p", "A.js"); IFunction constructor = compilationUnit.getFunction("A", new String[] {"QX;"}); search( constructor, DECLARATIONS, getJavaSearchScope(), this.resultCollector); assertSearchResults("src/p/A.js any A(any) [A]", resultCollector); } public void test02() throws CoreException { // was testSimpleConstructorReference1 IJavaScriptUnit compilationUnit = getCompilationUnit("JSSearch", "src", "p", "A.js"); IFunction constructor = compilationUnit.getFunction("A", new String[] {"QX;"}); search( constructor, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/p/A.js any main(any) [A(0)]", this.resultCollector); } public void test03() throws CoreException { // was testSimpleConstructorReference1 IJavaScriptUnit compilationUnit = getCompilationUnit("JSSearch", "src", "p", "A.js"); IField field = compilationUnit.getField("x"); search( field, DECLARATIONS, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/p/A.js x [x]", this.resultCollector); } public void test04() throws CoreException { // was testSimpleConstructorReference1 IJavaScriptUnit compilationUnit = getCompilationUnit("JSSearch", "src", "p", "A.js"); IField field = compilationUnit.getField("x"); search( field, REFERENCES, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/p/A.js any A(any) [x]", this.resultCollector); } public void test05() throws CoreException { // was testSimpleConstructorReference1 IType type = getCompilationUnit("JSSearch", "src", "p", "cls1.js").getType("MyClass"); IFunction method = type.getFunction("someMethod", new String[] {}); search( method, DECLARATIONS, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/p/cls1.js any MyClass_someMethod() [MyClass_someMethod]", this.resultCollector); } public void test06() throws CoreException { IFunction method = getCompilationUnit("JSSearch", "src", "a6", "A.js"). getFunction("m", new String[] {}); searchDeclarationsOfAccessedFields( method, resultCollector ); assertSearchResults( "src/a6/A.js a6.P.f [P.prototype.f=1]", this.resultCollector); } // /** // * Simple constructor declaration test. // */ // public void testConstructorDeclaration01() throws CoreException { // was testSimpleConstructorDeclaration // IType type = getCompilationUnit("JSSearch", "src", "p", "A.js").getType("A"); // IFunction constructor = type.getMethod("A", new String[] {"QX;"}); // search( // constructor, // DECLARATIONS, // getJavaSearchScope(), // this.resultCollector); // assertSearchResults("src/p/A.js p.A(X) [A]", resultCollector); // } // /** // * Constructor declaration in jar file test. // */ // public void testConstructorDeclaration02() throws CoreException { // was testConstructorDeclarationInJar // IType type = getClassFile("JSSearch", "MyJar.jar", "p1", "A.class").getType(); // IFunction 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("JSSearch", "src", "p", "A.js").getType("A"); // IFunction constructor = type.getMethod("A", new String[] {"QX;"}); // search( // constructor, // REFERENCES, // getJavaSearchScope(), // this.resultCollector); // assertSearchResults( // "src/Test.js 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.js 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("JSSearch", "src", "p", "Y.js").getType("Y"); // IFunction method = type.getMethod("Y", new String[] {"I"}); // search( // method, // REFERENCES, // getJavaSearchScope(), // this.resultCollector); // assertSearchResults( // "src/p/Z.js p.Z(int) [super(i)]", // this.resultCollector); // } // /** // * Constructor reference using an explicit constructor call. // */ // public void testConstructorReference04() throws CoreException { // was testConstructorReferenceExplicitConstructorCall2 // IType type = getCompilationUnit("JSSearch", "src", "p", "X.js").getType("X"); // IFunction method = type.getMethod("X", new String[] {"I"}); // search( // method, // REFERENCES, // getJavaSearchScope(), // this.resultCollector); // assertSearchResults( // "src/p/Y.js p.Y(int) [super(i)]\n" + // "src/p/Y.js 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("JSSearch", "src", "c7", "X.js").getType("X"); // IFunction method = type.getMethod("X", new String[] {}); // search( // method, // REFERENCES, // getJavaSearchScope(), // this.resultCollector); // assertSearchResults( // "src/c7/Y.js 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.js 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("JSSearch", "src", "", "A.js").getType("A").getType("Inner"); // IFunction method = type.getMethod("Inner", new String[] {"I"}); // search( // method, // REFERENCES, // getJavaSearchScope(), // this.resultCollector); // assertSearchResults( // "src/A.js A.field [new Inner(1)]\n" + // "src/A.js 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.js c10.B() [new X().super()]", // this.resultCollector); // } // /* // * Generic constructor reference // */ // public void testConstructorReference09() throws CoreException { // IType type = getCompilationUnit("JavaSearch15/src/p2/X.js").getType("X"); // IFunction method = type.getMethod("X", new String[] {"QE;"}); // search( // method, // REFERENCES, // ERASURE_RULE, // getJavaSearchScope15(), // this.resultCollector); // assertSearchResults( // "src/p2/Y.js 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 // resultCollector.showSynthetic = true; // search( // "c11.A()", // CONSTRUCTOR, // REFERENCES, // getJavaSearchScope(), // this.resultCollector); // assertSearchResults( // "src/c11/A.js c11.A1 [A1] SYNTHETIC\n" + // "src/c11/A.js c11.A2() [A2] SYNTHETIC\n" + // "src/c11/A.js c11.A3() [super()]", // this.resultCollector); // } /** * CoreException thrown during accept. * (regression test for PR #1G3UI7A) */ public void testCoreException() throws CoreException { IJavaScriptUnit compilationUnit = getCompilationUnit("JSSearch", "src", "p", "A.js"); IFunction method = compilationUnit.getFunction("A", new String[] {"QX;"}); SearchRequestor result = new SearchRequestor() { public void acceptSearchMatch(SearchMatch match) throws CoreException { throw new CoreException(new JavaModelStatus(-1, "test")); } }; try { search( method, 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 { IFunction method = getCompilationUnit("JSSearch", "src", "a5", "B.js"). getType("C").getFunction("i", new String[] {}); searchDeclarationsOfAccessedFields( method, resultCollector ); assertSearchResults( "", this.resultCollector); } // COVERED BY TEST06 // /** // * Declaration of accessed fields test. // * (regression test for bug 6538 searchDeclarationsOf* incorrect) // */ // public void testDeclarationOfAccessedFields2() throws CoreException { // IFunction method = // getCompilationUnit("JSSearch", "src", "a6", "A.js"). // getType("P").getMethod("mm", new String[] {}); // searchDeclarationsOfAccessedFields( // method, // resultCollector // ); // assertSearchResults( // "src/a6/A.js 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 { // IFunction method = // getCompilationUnit("JSSearch", "src", "b6", "A.js"). // getType("A").getMethod("foo", new String[] {}); // searchDeclarationsOfAccessedFields( // method, // resultCollector // ); // assertSearchResults( // "src/b6/A.js b6.A.field [field]", // this.resultCollector); // } // /** // * Declaration of referenced types test. // */ // public void testDeclarationOfReferencedTypes01() throws CoreException { // IFunction method = // getCompilationUnit("JSSearch", "src", "a3", "References.js"). // getType("References").getMethod("foo", new String[] {}); // searchDeclarationsOfReferencedTypes( // method, // resultCollector // ); // assertSearchResults( // "src/a3/X.js a3.X [X]\n" + // "src/a3/Z.js a3.Z [Z]\n" + // "src/a3/b/A.js a3.b.A [A]\n" + // "src/a3/b/A.js a3.b.A$B$C [C]\n" + // "src/a3/b/A.js a3.b.A$B [B]\n" + // getExternalJCLPathString() + " java.lang.Object\n" + // "src/a3/Y.js a3.Y [Y]\n" + // "src/a3/b/B.js 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 { IFunction method = getCompilationUnit("JSSearch", "src", "a7", "X.js"). getType("X").getFunction("foo", new String[] {}); searchDeclarationsOfReferencedTypes( method, 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 { IJavaScriptUnit unit = getCompilationUnit("JSSearch", "src", "c1", "A.js"); searchDeclarationsOfReferencedTypes( unit, 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 { IJavaScriptUnit unit = getCompilationUnit("JSSearch", "src", "c1", "B.js"); searchDeclarationsOfReferencedTypes( unit, 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 { IJavaScriptUnit unit = getCompilationUnit("JSSearch", "src", "c2", "A.js"); searchDeclarationsOfReferencedTypes( unit, 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 { IJavaScriptUnit unit = getCompilationUnit("JSSearch", "src", "d1", "X.js"); IType innerType = unit.getType("X").getType("Inner"); searchDeclarationsOfReferencedTypes( innerType, 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("JSSearch", "src", "r7"); searchDeclarationsOfReferencedTypes( pkg, resultCollector ); assertSearchResults( "", this.resultCollector); } /** * Declaration of referenced types test. * (Regression test for bug 47787 IJavaScriptSearchResultCollector.aboutToStart() and done() not called) */ public void testDeclarationOfReferencedTypes08() throws CoreException { IPackageFragment pkg = getPackageFragment("JSSearch", "src", "r7"); JavaSearchResultCollector result = new JavaSearchResultCollector() { public void beginReporting() { results.append("Starting search..."); } public void endReporting() { results.append("\nDone searching."); } }; searchDeclarationsOfReferencedTypes( pkg, 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 { IJavaScriptUnit cu = getCompilationUnit("JavaSearch15/src/p3/X.js"); JavaSearchResultCollector result = new JavaSearchResultCollector() { public void beginReporting() { results.append("Starting search..."); } public void endReporting() { results.append("\nDone 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 IJavaScriptUnit cu = getCompilationUnit("JSSearch", "src", "", "Test.js"); 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()]", this.resultCollector); } /** * Declaration of sent messages test. * (regression test for bug 6538 searchDeclarationsOf* incorrect) */ public void testDeclarationsOfSentMessages02() throws CoreException { // was testDeclarationOfSentMessages IFunction method = getCompilationUnit("JSSearch", "src", "a5", "B.js"). getType("C").getFunction("i", new String[] {}); searchDeclarationsOfSentMessages( method, resultCollector ); assertSearchResults( "", this.resultCollector); } /** * Simple field declaration test. */ public void testFieldDeclaration01() throws CoreException { // was testSimpleFieldDeclaration IType type = getCompilationUnit("JSSearch", "src", "p", "A.js").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("JSSearch", "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("JSSearch", "src", "", "B.js").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("JSSearch", "src", "p8", "A.js").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("JSSearch", "src", "p9", "X.js").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("JSSearch", "src", "q8", "EclipseTest.js").getType("EclipseTest"); IField field = type.getField("test"); 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("JSSearch", "src", "a2", "X.js").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("JSSearch", "src", "b1", "A.js").getType("A"); IField field = type.getField("x"); // Set 1.4 compliance level (no constant yet) Hashtable options = JavaScriptCore.getOptions(); String currentOption = (String)options.get("org.eclipse.wst.jsdt.core.compiler.compliance"); options.put("org.eclipse.wst.jsdt.core.compiler.compliance", "1.4"); JavaScriptCore.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.wst.jsdt.core.compiler.compliance", currentOption); JavaScriptCore.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("JSSearch", "src", "c4", "X.js").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("JSSearch", "src", "s5", "A.js").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("JSSearch", "src", "p", "A.js").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("JSSearch", "src", "p", "A.js").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("JSSearch", "src", "p", "A.js").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("JSSearch", "src", "p5", "A.js").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("JSSearch", "src", "p", "A.js").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("JSSearch", "src", "", "O.js").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("JSSearch", "src", "", "D.js").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("JSSearch", "src", "p6", "A.js").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("JSSearch", "src", "p6", "A.js").getType("AA"); field = type.getField("f"); 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("JSSearch", "src", "a4", "X.js").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 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("JSSearch", "src", "a8", "A.js").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("JSSearch", "src", "s3", "A.js").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 IJavaScriptElement[] { getPackageFragment("JSSearch", "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("JSSearch", "src", "s4", "X.js").getType("X"); IField field = type.getField("x"); resultCollector.showInsideDoc = true; search(field, REFERENCES, getJavaSearchScope(), 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("JSSearch", "src", "p", "I.js").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("JSSearch", "src", "p", "X.js").getType("X"); 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("JSSearch", "src", "r2", "I.js").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.js", "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.js", "var2 = new X();", "var2"); search( localVar, DECLARATIONS, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/f1/X.java void f1.X.foo2().var2 [var2]", this.resultCollector); } /* * Local variable occurrences test. * (SingleNameReference) */ public void testLocalVariableOccurrences1() throws CoreException { ILocalVariable localVar = getLocalVariable("/JavaSearch/src/f1/X.js", "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.js", "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.js", "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.js", "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("JSSearch", "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("JSSearch", "src", "p", "X.js").getType("X"); IFunction method = type.getFunction("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("JSSearch", "src", "e2", "X.js").getType("X"); search( "foo(String, String)", METHOD, DECLARATIONS, SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {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("JSSearch", "src", "p", "X.js").getType("X").getType("Inner"); IFunction method = type.getFunction("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("JSSearch", "src", "p", "X.js").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/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("JSSearch", "src", "p", "X.js").getType("X"); IFunction method = type.getFunction("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("JSSearch", "src", "d3", "A.js").getType("B"); IFunction method = type.getFunction("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("JSSearch", "src", "p", "X.js").getType("X"); IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {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("JSSearch", "MyJar.jar", "p1", "A.class").getType(); IFunction method = type.getFunction("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("JSSearch", "src", "e8", "A.js").getType("A"); IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {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 { IJavaScriptUnit unit = getCompilationUnit("JSSearch", "otherSrc()", "", "X92210.js"); assertNotNull("Should have found an unit", unit); IJavaScriptElement root = unit.getAncestor(IJavaScriptElement.PACKAGE_FRAGMENT_ROOT); assertNotNull("Should have found package fragment root", root); IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {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("JSSearch", "src", "q5", "AQ.js").getType("I"); IFunction method = type.getFunction("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("JSSearch", "src", "q6", "CD.js").getType("AQ"); IFunction method = type.getFunction("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("JSSearch", "src", "q7", "AQ.js").getType("I"); IFunction method = type.getFunction("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("JSSearch", "src", "b2", "Y.js").getType("Y"); IFunction method = type.getFunction("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.js").getType("A").getFunction("foo", new String[] {}).getType("", 1); IFunction method = type.getFunction("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 { IFunction method= getCompilationUnit("JavaSearch/src/f3/X.js").getType("X").getFunction("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("JSSearch", "src", "p", "X.js").getType("X"); IFunction method = type.getFunction("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("JSSearch", "src", "p", "Y.js").getType("Y"); IFunction method = type.getFunction("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("JSSearch", "src", "p", "X.js").getType("X"); IFunction method = type.getFunction("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("JSSearch", "src", "p", "X.js").getType("X").getType("Inner"); IFunction method = type.getFunction("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("JSSearch", "src", "sd", "AQ.js").getType("AQ"); IFunction method = type.getFunction("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("JSSearch", "src", "", "CA.js").getType("CA"); IFunction method = type.getFunction("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("JSSearch", "src", "", "PR_1GGNOTF.js").getType("PR_1GGNOTF"); IFunction method = type.getFunction("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("JSSearch", getSystemJsPathString(), "java.lang", "Object.class").getType(); IFunction method = type.getFunction("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("JSSearch", "src", "s4", "X.js").getType("X"); IFunction method = type.getFunction("foo", new String[] {}); resultCollector.showInsideDoc = true; search(method, REFERENCES, getJavaSearchScope(), 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.js").getType("X"); IFunction method = type.getFunction("foo", new String[] {"QE;"}); search(method, REFERENCES, ERASURE_RULE, getJavaSearchScope15(), 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.js").getType("X"); IFunction method = type.getFunction("open", new String[] {"QString;"}); resultCollector.showAccuracy = true; search(method, REFERENCES, ERASURE_RULE, getJavaSearchScope(), 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 { IFunction leftMethod = getCompilationUnit("JSSearch", "src", "q9", "I.js") .getType("I").getFunction("m", new String[] {}); SearchPattern leftPattern = createPattern(leftMethod, ALL_OCCURRENCES); IFunction rightMethod = getCompilationUnit("JSSearch", "src", "q9", "I.js") .getType("A1").getFunction("m", new String[] {}); SearchPattern rightPattern = createPattern(rightMethod, ALL_OCCURRENCES); SearchPattern orPattern = SearchPattern.createOrPattern(leftPattern, rightPattern); 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("JSSearch", "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 search( "p3*", PACKAGE, DECLARATIONS, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/p3 p3\n" + "src/p3/p2 p3.p2\n" + "src/p3/p2/p p3.p2.p", this.resultCollector); } /** * 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("JSSearch", getSystemJsPathString(), "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 { IJavaScriptProject project = getJavaProject("JSSearch"); IIncludePathEntry[] originalCP = project.getRawIncludepath(); try { // add corrupt.jar to classpath int cpLength = originalCP.length; IIncludePathEntry[] newCP = new IIncludePathEntry[cpLength+1]; System.arraycopy(originalCP, 0, newCP, 0, cpLength); newCP[cpLength] = JavaScriptCore.newLibraryEntry(new Path("/JavaSearch/corrupt.jar"), null, null); project.setRawIncludepath(newCP, null); search( "r9", PACKAGE, DECLARATIONS, getJavaSearchScope(), this.resultCollector); assertSearchResults( "src/r9 r9", this.resultCollector); } finally { project.setRawIncludepath(originalCP, null); } } /** * 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 (JavaScriptModelException jme) { // give up } finally { if (test != null && test.exists()) { test.delete(true, null); } } } /** * Package reference test. * (regression test for PR 1GK90H4: ITPJCORE:WIN2000 - search: missing package reference) */ public void testPackageReference1() throws CoreException { IPackageFragment pkg = getPackageFragment("JSSearch", "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("JSSearch", "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("JSSearch", "test47989.jar", "p1"); IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {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("JSSearch", "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("JSSearch", "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("JSSearch", "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); 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 testPotentialMatchInBinary1() throws CoreException { IJavaScriptProject project = this.getJavaProject("JSSearch"); IIncludePathEntry[] classpath = project.getRawIncludepath(); try { // add AbortCompilation.jar to classpath int length = classpath.length; IIncludePathEntry[] newClasspath = new IIncludePathEntry[length+1]; System.arraycopy(classpath, 0, newClasspath, 0, length); newClasspath[length] = JavaScriptCore.newLibraryEntry(new Path("/JavaSearch/AbortCompilation.jar"), null, null); project.setRawIncludepath(newClasspath, null); // potential match for a field declaration resultCollector.showAccuracy = true; search( "MissingFieldType.*", FIELD, DECLARATIONS, getJavaSearchScope(), this.resultCollector); assertSearchResults( "AbortCompilation.jar AbortCompilation.MissingFieldType.field [No source] POTENTIAL_MATCH\n" + "AbortCompilation.jar AbortCompilation.MissingFieldType.missing [No source] POTENTIAL_MATCH\n" + "AbortCompilation.jar AbortCompilation.MissingFieldType.otherField [No source] POTENTIAL_MATCH", this.resultCollector); } finally { // reset classpath project.setRawIncludepath(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 testPotentialMatchInBinary2() throws CoreException { IJavaScriptProject project = this.getJavaProject("JSSearch"); IIncludePathEntry[] classpath = project.getRawIncludepath(); try { // add AbortCompilation.jar to classpath int length = classpath.length; IIncludePathEntry[] newClasspath = new IIncludePathEntry[length+1]; System.arraycopy(classpath, 0, newClasspath, 0, length); newClasspath[length] = JavaScriptCore.newLibraryEntry(new Path("/JavaSearch/AbortCompilation.jar"), null, null); project.setRawIncludepath(newClasspath, null); // potential match for a method declaration resultCollector.showAccuracy = true; search( "MissingArgumentType.foo*", METHOD, DECLARATIONS, getJavaSearchScope(), this.resultCollector); assertSearchResults( "AbortCompilation.jar void AbortCompilation.MissingArgumentType.foo() [No source] POTENTIAL_MATCH\n" + "AbortCompilation.jar void AbortCompilation.MissingArgumentType.foo(java.util.EventListener) [No source] POTENTIAL_MATCH\n" + "AbortCompilation.jar void AbortCompilation.MissingArgumentType.foo2() [No source] POTENTIAL_MATCH", this.resultCollector); } finally { // reset classpath project.setRawIncludepath(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 testPotentialMatchInBinary3() throws CoreException { IJavaScriptProject project = this.getJavaProject("JSSearch"); IIncludePathEntry[] classpath = project.getRawIncludepath(); try { // add AbortCompilation.jar to classpath int length = classpath.length; IIncludePathEntry[] newClasspath = new IIncludePathEntry[length+1]; System.arraycopy(classpath, 0, newClasspath, 0, length); newClasspath[length] = JavaScriptCore.newLibraryEntry(new Path("/JavaSearch/AbortCompilation.jar"), null, null); project.setRawIncludepath(newClasspath, null); // potential match for a type declaration resultCollector.showAccuracy = true; search( "Missing*", TYPE, DECLARATIONS, getJavaSearchScope(), this.resultCollector); 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", this.resultCollector); } finally { // reset classpath project.setRawIncludepath(classpath, null); } } /** * Hierarchy scope test. * (regression test for bug 3445 search: type hierarchy scope incorrect (1GLC8VS)) */ public void testSearchScope01() throws CoreException { // was testHierarchyScope IJavaScriptUnit cu = this. getCompilationUnit("JSSearch", "src", "a9", "A.js"); IType type = cu.getType("C"); IJavaScriptSearchScope 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("JSSearch", "src", "b3", "X.js").getType("X"); IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {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("JSSearch", "src", "b3", "X.js").getType("X"); IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {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("JSSearch", "src", "b3", "X.js").getType("X"); IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {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 IJavaScriptProject project = this.getJavaProject("JSSearch"); IIncludePathEntry[] classpath = project.getRawIncludepath(); try { copy(minimalJar, externalJar); int length = classpath.length; IIncludePathEntry[] newClasspath = new IIncludePathEntry[length]; System.arraycopy(classpath, 0, newClasspath, 0, length-1); String externalPath = externalJar.getAbsolutePath(); newClasspath[length-1] = JavaScriptCore.newLibraryEntry(new Path(externalPath), new Path(externalPath), null, false); project.setRawIncludepath(newClasspath, null); IPackageFragment pkg = this.getPackageFragment("JSSearch", externalPath, "p0"); IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {pkg}); search( "X", TYPE, DECLARATIONS, scope, this.resultCollector); assertSearchResults( externalJar + " p0.X", this.resultCollector); IClassFile classFile = pkg.getClassFile("X.class"); scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {classFile}); resultCollector = new JavaSearchResultCollector(); search( classFile.getType(), DECLARATIONS, scope, this.resultCollector); assertSearchResults( externalJar.getCanonicalPath()+ " p0.X", this.resultCollector); } finally { Util.delete(externalJar); project.setRawIncludepath(classpath, null); } } /** * Simple type declaration test. */ public void testTypeDeclaration01() throws CoreException { // was testSimpleTypeDeclaration IType type = getCompilationUnit("JSSearch", "src", "p", "X.js").getType("X"); search( type, DECLARATIONS, getJavaSearchScope(), this.resultCollector); assertSearchResults("src/p/X.java p.X [X]", resultCollector); } /** * Type declaration test. * (generic type) */ public void testTypeDeclaration02() throws CoreException { IPackageFragment pkg = this.getPackageFragment("JavaSearch15", "src", "p1"); IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {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 = this.getPackageFragment("JSSearch", "src", "d8"); IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {pkg}); search( "A", TYPE, DECLARATIONS, scope, this.resultCollector); assertSearchResults("src/d8/A.java d8.A [A]", resultCollector); } /** * Type declaration in jar file test. */ public void testTypeDeclaration04() throws CoreException { // was testTypeDeclarationInJar IType type = getClassFile("JSSearch", "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("JSSearch", "test20631.jar"); IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {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("JSSearch", "src", "p3", "X.js").getType("X"); IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {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("JSSearch", "MyJar.jar", "p0", "X.class").getType(); IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {type.getPackageFragment()}); search( "X", TYPE, DECLARATIONS, scope, this.resultCollector); assertSearchResults( "MyJar.jar p0.X [No source]", this.resultCollector); } /** * Memeber type declaration test. * (regression test for bug 9992 Member class declaration not found) */ public void testTypeDeclaration08() throws CoreException { // was testMemberTypeDeclaration IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[]{ this.getPackageFragment("JSSearch", "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]", 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("JSSearch", "src", "f2"); IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {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.js").getType("X").getFunction("foo1", new String[0]).getType("Y", 1); IJavaScriptSearchScope 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("JSSearch", "src", "r", "A.js").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("JSSearch", "src", "r8", "B.js").getType("B"); IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {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("JSSearch", "src", "e4", "A.js").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("JSSearch", "src", "q3", "A$B.js").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("JSSearch", "src", "", "X.js").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("JSSearch", "src", "d7", "A.js").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); 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("JSSearch", "otherSrc()", "", "X31997.js").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("JSSearch", "test48261.jar", "p", "X.js").getType("X"); IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {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.js").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("JSSearch", "src", "p", "X.js").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("JSSearch", "src", "", "Test.js").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("JSSearch", "src", "", "TypeReferenceAsSingleNameReference.js").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 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 resultCollector = new JavaSearchResultCollector(); 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 resultCollector = new JavaSearchResultCollector(); 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("JSSearch", "src", "a", "A.js").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("JSSearch", "src", "ObjectMemberTypeReference", "A.js") .getType("A") .getType("Object"); 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("JSSearch", "src", "p", "A.js").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("JSSearch", "src", "p4", "A.js").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("JSSearch", "src", "", "W.js").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("JSSearch", "src", "b7", "X.js").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("JSSearch", "src", "p", "X.js").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("JSSearch", "src", "NoReference", "A.js").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("JSSearch", "src", "p2", "Z.js").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("JSSearch", "src", "r6", "A.js").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("JSSearch", "src", "TypeReferenceInArray", "A.js").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("JSSearch", "src", "s1", "X.js").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("JSSearch", "src", "p7", "A.js").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("JSSearch", "src", "a7", "X.js").getType("MyException"); 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 IJavaScriptElement[] { getPackageFragment("JSSearch", "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 search( "p.Zork", TYPE, REFERENCES, SearchEngine.createJavaSearchScope(new IJavaScriptElement[] { getPackageFragment("JSSearch", "src", "b5") }), this.resultCollector); assertSearchResults( "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 21485 NPE when doing a reference search to a package) */ public void testTypeReference27() throws CoreException { // was testInnacurateTypeReference3 IType type = getCompilationUnit("JSSearch", "src", "r3", "A21485.js").getType("A21485"); 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("JSSearch", "src", "s3", "A.js").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("JSSearch", "src", "d4"); IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {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 IJavaScriptElement[] { getPackageFragment("JSSearch", "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("JSSearch", "src", "d9.p1", "A.js").getType("A"); IJavaScriptSearchScope 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("JSSearch", "src", "e1", "A29366.js").getType("A29366"); 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("JSSearch", "src", "e6", "A.js").getType("A"); resultCollector.showAccuracy = true; search( "B36479", TYPE, REFERENCES, SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {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 IJavaScriptProject project = getJavaProject("JSSearch"); IIncludePathEntry[] originalCP = project.getRawIncludepath(); try { // add corrupt.jar to classpath int cpLength = originalCP.length; IIncludePathEntry[] newCP = new IIncludePathEntry[cpLength+1]; System.arraycopy(originalCP, 0, newCP, 0, cpLength); newCP[cpLength] = JavaScriptCore.newLibraryEntry(new Path("/JavaSearch/corrupt.jar"), null, null); project.setRawIncludepath(newCP, null); IType type = getCompilationUnit("JSSearch", "src", "e7", "A.js").getType("A"); resultCollector.showAccuracy = true; search( type, REFERENCES, SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project}), this.resultCollector); assertSearchResults( "src/e7/A.java e7.A.a [A] EXACT_MATCH", this.resultCollector); } finally { project.setRawIncludepath(originalCP, null); } } /* * Local type reference test. */ public void testTypeReference36() throws CoreException { // was testLocalTypeReference1 IPackageFragment pkg = getPackageFragment("JSSearch", "src", "f2"); IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {pkg}); resultCollector.showContext = true; 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.js").getType("X"); IFunction method = type.getFunction("foo1", new String[0]); IType localType = method.getType("Y", 1); IJavaScriptSearchScope scope = SearchEngine.createWorkspaceScope(); resultCollector.showContext = true; 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("JSSearch", "src", "s4", "X.js").getType("X"); resultCollector.showInsideDoc = true; 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.js").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.js").getType("Team"); IFunction method = type.getFunction("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.js").getType("Team"); IFunction method = type.getFunction("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.js").getType("Team"); IFunction method = type.getFunction("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.js").getType("Team"); IFunction method = type.getFunction("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.js").getType("Team"); IFunction method = type.getFunction("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.js").getType("X"); IFunction method = type.getFunction("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.js").getType("X"); IFunction method = type.getFunction("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.js").getType("X"); IFunction method = type.getFunction("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.js").getType("X"); IFunction method = type.getFunction("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.js").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 { IJavaScriptUnit unit = getCompilationUnit("JavaSearch15", "src", "a1", "Test.js"); 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 { workingCopies = new IJavaScriptUnit[1]; workingCopies[0] = getWorkingCopy("/JavaSearch15/src/p/X.js", "package p;\n" + "public class X {\n" + " void foo(int x) {}\n" + " void bar() {\n" + " foo(new Integer(0));\n" + " }\n" + "}\n" ); IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(workingCopies); IFunction method = workingCopies[0].getType("X").getFunction("foo", new String[] { "I" }); search(method, REFERENCES, scope); assertSearchResults( "src/p/X.java void p.X.bar() [foo(new Integer(0))]" ); } /** * Test static import */ // for fields public void testStaticImportField01() throws CoreException { IType type = getCompilationUnit("JavaSearch15", "src", "s1.pack.age", "S.js").getType("S"); search(type, REFERENCES, getJavaSearchScope15(), 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.js").getType("S"); IField field = type.getField("out"); search(field, REFERENCES, getJavaSearchScope15(), 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.js").getType("S"); IType member = type.getType("M"); search(member, REFERENCES, getJavaSearchScope15(), 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.js").getType("S"); IType member = type.getType("M"); IField field = member.getField("in"); search(field, REFERENCES, getJavaSearchScope15(), 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.js").getType("S"); search(type, REFERENCES, getJavaSearchScope15(), 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.js").getType("S"); IFunction method = type.getFunction("out", new String[0]); search(method, REFERENCES, getJavaSearchScope15(), 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.js").getType("S"); IType member = type.getType("M"); search(member, REFERENCES, getJavaSearchScope15(), 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.js").getType("S"); IType member = type.getType("M"); IFunction method = member.getFunction("in", new String[0]); search(method, REFERENCES, getJavaSearchScope15(), 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(), 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(), 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() throws CoreException { search("RE", TYPE, DECLARATIONS, SearchPattern.R_CAMELCASE_MATCH, getJavaSearchScope()); assertSearchResults( "src/a3/References.java a3.References [References]\n" + ""+ getSystemJsPathString() + " java.lang.RuntimeException" ); } public void testCamelCaseTypePattern02() throws CoreException { search("RException", TYPE, DECLARATIONS, SearchPattern.R_CAMELCASE_MATCH, getJavaSearchScope()); assertSearchResults( ""+ getSystemJsPathString() + " java.lang.RuntimeException" ); } public void testCamelCaseTypePattern03() throws CoreException { search("RuntimeException", TYPE, DECLARATIONS, SearchPattern.R_CAMELCASE_MATCH, getJavaSearchScope()); assertSearchResults( ""+ getSystemJsPathString() + " java.lang.RuntimeException" ); } public void testCamelCaseTypePattern04() throws CoreException { search("RUNTIMEEXCEPTION", TYPE, DECLARATIONS, SearchPattern.R_CAMELCASE_MATCH, getJavaSearchScope()); assertSearchResults( ""+ getSystemJsPathString() + " java.lang.RuntimeException" ); } public void testCamelCaseTypePattern05() throws CoreException { search("R*E*", TYPE, DECLARATIONS, SearchPattern.R_CAMELCASE_MATCH, getJavaSearchScope()); assertSearchResults( "src/a3/References.java a3.References [References]\n" + ""+ getSystemJsPathString() + " java.lang.RuntimeException" ); } public void testCamelCaseTypePattern06() throws CoreException { TypeNameRequestor requestor = new SearchTests.SearchTypeNameRequestor(); new SearchEngine().searchAllTypeNames( null, SearchPattern.R_EXACT_MATCH, "CNS".toCharArray(), SearchPattern.R_CAMELCASE_MATCH, TYPE, getJavaSearchScope(), requestor, IJavaScriptSearchConstants.WAIT_UNTIL_READY_TO_SEARCH, null ); assertSearchResults( "Unexpected all type names", "java.lang.CloneNotSupportedException", requestor); } public void testCamelCaseTypePattern07() throws CoreException { TypeNameRequestor requestor = new SearchTests.SearchTypeNameRequestor(); new SearchEngine().searchAllTypeNames( null, SearchPattern.R_EXACT_MATCH, "AA".toCharArray(), SearchPattern.R_CAMELCASE_MATCH, TYPE, getJavaSearchScope(), requestor, IJavaScriptSearchConstants.WAIT_UNTIL_READY_TO_SEARCH, null ); assertSearchResults( "Unexpected all type names", "AA\n" + "c9.AbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyz\n" + "d8.AA\n" + "p6.AA\n" + "q1.AA", requestor); } public void testCamelCaseTypePattern08() throws CoreException { TypeNameRequestor requestor = new SearchTests.SearchTypeNameRequestor(); new SearchEngine().searchAllTypeNames( null, SearchPattern.R_EXACT_MATCH, "aa".toCharArray(), SearchPattern.R_CAMELCASE_MATCH, TYPE, getJavaSearchScope(), requestor, IJavaScriptSearchConstants.WAIT_UNTIL_READY_TO_SEARCH, null ); assertSearchResults( "Unexpected all type names", "AA\n" + "d8.AA\n" + "p6.AA\n" + "q1.AA", requestor); } public void testCamelCaseTypePattern09() throws CoreException { TypeNameRequestor requestor = new SearchTests.SearchTypeNameRequestor(); new SearchEngine().searchAllTypeNames( null, SearchPattern.R_EXACT_MATCH, "aa".toCharArray(), SearchPattern.R_CAMELCASE_MATCH | SearchPattern.R_PREFIX_MATCH, TYPE, getJavaSearchScope(), requestor, IJavaScriptSearchConstants.WAIT_UNTIL_READY_TO_SEARCH, null ); assertSearchResults( "Unexpected all type names", "AA\n" + "d8.AA\n" + "p6.AA\n" + "q1.AA", requestor); } /** * @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, IJavaScriptSearchConstants.TYPE, getJavaSearchScope(), collector, IJavaScriptSearchConstants.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, IJavaScriptSearchConstants.TYPE, getJavaSearchScope(), requestor, IJavaScriptSearchConstants.WAIT_UNTIL_READY_TO_SEARCH, null); // Should have same types with these 2 searches assertEquals("We should get some types!", requestor.size(), collector.size()); assertEquals("Found types sounds not to be correct", requestor.toString(), collector.toString()); } }