blob: 3ae5d6d4966444b1b38bf09b304545129dcceca5 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2008 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.wst.jsdt.core.tests.model;
import java.util.HashMap;
import junit.framework.Test;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.wst.jsdt.core.*;
import org.eclipse.wst.jsdt.core.search.*;
import org.eclipse.wst.jsdt.core.tests.model.AbstractJavaSearchTests.JavaSearchResultCollector;
import org.eclipse.wst.jsdt.internal.core.JavaModelManager;
/**
* Tests the Java search engine accross multiple projects.
*/
public class JavaSearchScopeTests extends ModifyingResourceTests implements IJavaScriptSearchConstants {
public JavaSearchScopeTests(String name) {
super(name);
}
public static Test suite() {
return buildModelTestSuite(JavaSearchScopeTests.class);
}
// Use this static initializer to specify subset for tests
// All specified tests which do not belong to the class are skipped...
static {
// TESTS_NAMES = new String[] { "testMethodOccurences" };
// TESTS_NUMBERS = new int[] { 101426 };
// TESTS_RANGE = new int[] { 16, -1 };
}
protected void tearDown() throws Exception {
// Cleanup caches
JavaModelManager manager = JavaModelManager.getJavaModelManager();
manager.containers = new HashMap(5);
manager.variables = new HashMap(5);
super.tearDown();
}
protected void assertScopeEquals(String expected, IJavaScriptSearchScope scope) {
String actual = scope.toString();
if (!expected.equals(actual)) {
System.out.println(displayString(actual, 3) + ",");
}
assertEquals("Unexpected scope", expected, actual);
}
/*
* Ensures that a Java search scope with SOURCES only is correct.
*/
public void testSources() throws CoreException {
try {
IJavaScriptProject project = createJavaProject("P");
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project}, IJavaScriptSearchScope.SOURCES);
assertScopeEquals(
"JavaSearchScope on [\n" +
" /P\n" +
"]",
scope);
} finally {
deleteProject("P");
}
}
/*
* Ensures that a Java search scope with APPLICATION_LIBRARIES only is correct
* (external jar case)
*/
public void testApplicationLibrairiesExternalJar() throws CoreException {
try {
IJavaScriptProject project = createJavaProject("P");
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project}, IJavaScriptSearchScope.APPLICATION_LIBRARIES);
assertScopeEquals(
"JavaSearchScope on [\n" +
" "+ getExternalJCLPath("").toOSString() +"\n" +
"]",
scope);
} finally {
deleteProject("P");
}
}
/*
* Ensures that a Java search scope with APPLICATION_LIBRARIES only is correct
* (internal jar and class folder cases)
*/
public void testApplicationLibrairiesJarAndClassFolder() throws CoreException {
try {
IJavaScriptProject project = createJavaProject("P", new String[] {"src"}, new String[] {"/P/internal.jar", "/P/classfolder"});
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project}, IJavaScriptSearchScope.APPLICATION_LIBRARIES);
assertScopeEquals(
"JavaSearchScope on [\n" +
" /P/internal.jar\n" +
" /P/classfolder\n" +
"]",
scope);
} finally {
deleteProject("P");
}
}
/*
* Ensures that a Java search scope with APPLICATION_LIBRARIES only is correct
* (classpath variable case)
*/
public void testApplicationLibrairiesClasspathVariable() throws CoreException {
try {
VariablesInitializer.setInitializer(new ClasspathInitializerTests.DefaultVariableInitializer(new String[] {"TEST_LIB", "/P/lib.jar"}));
IJavaScriptProject project = createJavaProject("P", new String[] {}, new String[] {"TEST_LIB"});
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project}, IJavaScriptSearchScope.APPLICATION_LIBRARIES);
assertScopeEquals(
"JavaSearchScope on [\n" +
" /P/lib.jar\n" +
"]",
scope);
} finally {
deleteProject("P");
VariablesInitializer.reset();
}
}
/*
* Ensures that a Java search scope with APPLICATION_LIBRARIES only is correct
* (classpath container case)
*/
public void testApplicationLibrairiesJsGlobalScopeContainer() throws CoreException {
try {
ContainerInitializer.setInitializer(new ClasspathInitializerTests.DefaultContainerInitializer(new String[] {"P", "/P/lib.jar"}));
IJavaScriptProject project = createJavaProject("P", new String[] {}, new String[] {"org.eclipse.wst.jsdt.core.tests.model.TEST_CONTAINER"});
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project}, IJavaScriptSearchScope.APPLICATION_LIBRARIES);
assertScopeEquals(
"JavaSearchScope on [\n" +
" /P/lib.jar\n" +
"]",
scope);
} finally {
deleteProject("P");
}
}
/*
* Ensures that a Java search scope with SYSTEM_LIBRARIES only is correct
* (classpath container case)
*/
public void testSystemLibraries() throws CoreException {
try {
ClasspathInitializerTests.DefaultContainerInitializer intializer = new ClasspathInitializerTests.DefaultContainerInitializer(new String[] {"P", "/P/lib.jar"}) {
protected DefaultContainer newContainer(char[][] libPaths) {
return new DefaultContainer(libPaths) {
public int getKind() {
return IJsGlobalScopeContainer.K_SYSTEM;
}
};
}
};
ContainerInitializer.setInitializer(intializer);
IJavaScriptProject project = createJavaProject("P", new String[] {}, new String[] {"org.eclipse.wst.jsdt.core.tests.model.TEST_CONTAINER"});
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project}, IJavaScriptSearchScope.SYSTEM_LIBRARIES);
assertScopeEquals(
"JavaSearchScope on [\n" +
" /P/lib.jar\n" +
"]",
scope);
} finally {
deleteProject("P");
}
}
/*
* Ensures that a Java search scope with SOURCES | REFERENCED_PROJECTS is correct
* (direct reference case)
*/
public void testSourcesOrDirectReferencedProjects() throws CoreException {
try {
createJavaProject("P1");
IJavaScriptProject project = createJavaProject("P2", new String[] {"src"}, new String[] {}, new String[] {"/P1"});
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project}, IJavaScriptSearchScope.SOURCES | IJavaScriptSearchScope.REFERENCED_PROJECTS);
assertScopeEquals(
"JavaSearchScope on [\n" +
" /P1\n" +
" /P2/src\n" +
"]",
scope);
} finally {
deleteProject("P1");
deleteProject("P2");
}
}
/*
* Ensures that a Java search scope with SOURCES | REFERENCED_PROJECTS is correct
* (reference through a container case)
*/
public void testSourcesOrContainerReferencedProjects() throws CoreException {
try {
createJavaProject("P1");
ContainerInitializer.setInitializer(new ClasspathInitializerTests.DefaultContainerInitializer(new String[] {"P2", "/P1"}));
IJavaScriptProject project = createJavaProject("P2", new String[] {"src"}, new String[] {"org.eclipse.wst.jsdt.core.tests.model.TEST_CONTAINER"});
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project}, IJavaScriptSearchScope.SOURCES | IJavaScriptSearchScope.REFERENCED_PROJECTS);
assertScopeEquals(
"JavaSearchScope on [\n" +
" /P1\n" +
" /P2/src\n" +
"]",
scope);
} finally {
deleteProject("P1");
deleteProject("P2");
}
}
/*
* Ensures that a Java project is enclosed in a scope on the project (proj=src)
* (resourcePath case)
*/
public void testScopeEncloses01() throws CoreException {
try {
IJavaScriptProject project = createJavaProject("P");
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project});
assertTrue("scope on P should enclose \"/P\"", scope.encloses("/P"));
} finally {
deleteProject("P");
}
}
/*
* Ensures that a Java project is enclosed in a scope on the project (proj=src)
* (Java element case)
*/
public void testScopeEncloses02() throws CoreException {
try {
IJavaScriptProject project = createJavaProject("P");
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project});
assertTrue("scope on P should enclose P", scope.encloses(project));
} finally {
deleteProject("P");
}
}
/*
* Ensures that a root is enclosed in a scope on the project (proj=src)
* (resource path with traling slash case)
*/
public void testScopeEncloses03() throws CoreException {
try {
IJavaScriptProject project = createJavaProject("P");
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project});
assertTrue("scope on P should enclose \"/P/\"", scope.encloses("/P/"));
} finally {
deleteProject("P");
}
}
/*
* Ensures that a root is enclosed in a scope on the project (proj=src)
* (Java element case)
*/
public void testScopeEncloses04() throws CoreException {
try {
IJavaScriptProject project = createJavaProject("P");
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project});
IPackageFragmentRoot root = project.getPackageFragmentRoot(project.getProject());
assertTrue("scope on P should enclose root P", scope.encloses(root));
} finally {
deleteProject("P");
}
}
/*
* Ensures that a package is enclosed in a scope on the project (proj=src)
* (resource path case)
*/
public void testScopeEncloses05() throws CoreException {
try {
IJavaScriptProject project = createJavaProject("P");
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project});
assertTrue("scope on P should enclose \"/P/x/y\"", scope.encloses("/P/x/y"));
} finally {
deleteProject("P");
}
}
/*
* Ensures that a package is enclosed in a scope on the project (proj=src)
* (resource path with trailing slash case)
*/
public void testScopeEncloses06() throws CoreException {
try {
IJavaScriptProject project = createJavaProject("P");
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project});
assertTrue("scope on P should enclose \"/P/x/y/\"", scope.encloses("/P/x/y/"));
} finally {
deleteProject("P");
}
}
/*
* Ensures that a package is enclosed in a scope on the project (proj=src)
* (Java element case)
*/
public void testScopeEncloses07() throws CoreException {
try {
IJavaScriptProject project = createJavaProject("P");
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project});
IPackageFragment pkg = getPackage("/P/x/y");
assertTrue("scope on P should enclose package x.y", scope.encloses(pkg));
} finally {
deleteProject("P");
}
}
/*
* Ensures that a default package is enclosed in a scope on the project (proj=src)
* (Java element case)
*/
public void testScopeEncloses08() throws CoreException {
try {
IJavaScriptProject project = createJavaProject("P");
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project});
IPackageFragment pkg = getPackage("/P");
assertTrue("scope on P should enclose default package", scope.encloses(pkg));
} finally {
deleteProject("P");
}
}
/*
* Ensures that a compilation unit is enclosed in a scope on the project (proj=src)
* (resource path case)
*/
public void testScopeEncloses09() throws CoreException {
try {
IJavaScriptProject project = createJavaProject("P");
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project});
assertTrue("scope on P should enclose \"/P/x/y/A.java\"", scope.encloses("/P/x/y/A.js"));
} finally {
deleteProject("P");
}
}
/*
* Ensures that a compilation unit is enclosed in a scope on the project (proj=src)
* (Java element case)
*/
public void testScopeEncloses10() throws CoreException {
try {
IJavaScriptProject project = createJavaProject("P");
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project});
IJavaScriptUnit cu = getCompilationUnit("/P/x/y/A.js");
assertTrue("scope on P should enclose compilation unit A.js", scope.encloses(cu));
} finally {
deleteProject("P");
}
}
/*
* Ensures that a compilation unit in the default package is enclosed in a scope on the project (proj=src)
* (resource path case)
*/
public void testScopeEncloses11() throws CoreException {
try {
IJavaScriptProject project = createJavaProject("P");
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project});
assertTrue("scope on P should enclose \"/P/A.java\"", scope.encloses("/P/A.js"));
} finally {
deleteProject("P");
}
}
/*
* Ensures that a compilation unit in the default package is enclosed in a scope on the project (proj=src)
* (Java element case)
*/
public void testScopeEncloses12() throws CoreException {
try {
IJavaScriptProject project = createJavaProject("P");
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project});
IJavaScriptUnit cu = getCompilationUnit("/P/A.js");
assertTrue("scope on P should enclose compilation unit A.js", scope.encloses(cu));
} finally {
deleteProject("P");
}
}
/*
* Ensures that a source type is enclosed in a scope on the project (proj=src)
* (Java element case)
*/
public void testScopeEncloses13() throws CoreException {
try {
IJavaScriptProject project = createJavaProject("P");
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project});
IJavaScriptUnit cu = getCompilationUnit("/P/x/y/A.js");
IType type = cu.getType("A");
assertTrue("scope on P should enclose type A", scope.encloses(type));
} finally {
deleteProject("P");
}
}
/*
* Ensures that a Java project is not enclosed in a scope on the project (proj != src)
* (resourcePath case)
*/
public void testScopeEncloses14() throws CoreException {
try {
IJavaScriptProject project = createJavaProject("P", new String[] {"src"});
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project});
assertFalse("scope on P should not enclose \"/P\"", scope.encloses("/P"));
} finally {
deleteProject("P");
}
}
/*
* Ensures that a Java project is not enclosed in a scope on the project (proj != src)
* (resourcePath case)
*/
public void testScopeEncloses14b() throws CoreException {
try {
IJavaScriptProject project = createJavaProject("P", new String[] {"src"});
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project});
assertFalse("scope on P should not enclose \"/\"", scope.encloses("/"));
} finally {
deleteProject("P");
}
}
/*
* Ensures that a Java project is not enclosed in a scope on the project (proj != src)
* (resourcePath case)
*/
public void testScopeEncloses14c() throws CoreException {
try {
IJavaScriptProject project = createJavaProject("P", new String[] {"src"});
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project});
assertFalse("scope on P should not enclose \"\"", scope.encloses(""));
} finally {
deleteProject("P");
}
}
/*
* Ensures that a Java project is not enclosed in a scope on the project (proj != src)
* (Java element case)
*/
public void testScopeEncloses15() throws CoreException {
try {
IJavaScriptProject project = createJavaProject("P", new String[] {"src"});
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project});
assertFalse("scope on P should enclose P", scope.encloses(project));
} finally {
deleteProject("P");
}
}
/*
* Ensures that a root is enclosed in a scope on the project (proj != src)
* (resource path case)
*/
public void testScopeEncloses16() throws CoreException {
try {
IJavaScriptProject project = createJavaProject("P", new String[] {"src"});
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project});
assertTrue("scope on P should enclose \"/P/src\"", scope.encloses("/P/src"));
} finally {
deleteProject("P");
}
}
/*
* Ensures that a root is enclosed in a scope on the project (proj != src)
* (resource path with traling slash case)
*/
public void testScopeEncloses17() throws CoreException {
try {
IJavaScriptProject project = createJavaProject("P", new String[] {"src"});
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project});
assertTrue("scope on P should enclose \"/P/src/\"", scope.encloses("/P/src/"));
} finally {
deleteProject("P");
}
}
/*
* Ensures that a root is enclosed in a scope on the project (proj != src)
* (Java element case)
*/
public void testScopeEncloses18() throws CoreException {
try {
IJavaScriptProject project = createJavaProject("P", new String[] {"src"});
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project});
IPackageFragmentRoot root = project.getPackageFragmentRoot(project.getProject().getFolder("src"));
assertTrue("scope on P should enclose root P/src", scope.encloses(root));
} finally {
deleteProject("P");
}
}
/*
* Ensures that a package is enclosed in a scope on the project (proj != src)
* (resource path case)
*/
public void testScopeEncloses19() throws CoreException {
try {
IJavaScriptProject project = createJavaProject("P", new String[] {"src"});
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project});
assertTrue("scope on P should enclose \"/P/src/x/y\"", scope.encloses("/P/src/x/y"));
} finally {
deleteProject("P");
}
}
/*
* Ensures that a package is enclosed in a scope on the project (proj != src)
* (resource path with trailing slash case)
*/
public void testScopeEncloses20() throws CoreException {
try {
IJavaScriptProject project = createJavaProject("P", new String[] {"src"});
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project});
assertTrue("scope on P should enclose \"/P/src/x/y/\"", scope.encloses("/P/src/x/y/"));
} finally {
deleteProject("P");
}
}
/*
* Ensures that a package is enclosed in a scope on the project (proj != src)
* (Java element case)
*/
public void testScopeEncloses21() throws CoreException {
try {
IJavaScriptProject project = createJavaProject("P", new String[] {"src"});
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project});
IPackageFragment pkg = getPackage("/P/src/x/y");
assertTrue("scope on P should enclose package x.y", scope.encloses(pkg));
} finally {
deleteProject("P");
}
}
/*
* Ensures that a default package is enclosed in a scope on the project (proj != src)
* (Java element case)
*/
public void testScopeEncloses22() throws CoreException {
try {
IJavaScriptProject project = createJavaProject("P", new String[] {"src"});
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project});
IPackageFragment pkg = getPackage("/P/src");
assertTrue("scope on P should enclose default package", scope.encloses(pkg));
} finally {
deleteProject("P");
}
}
/*
* Ensures that a compilation unit is enclosed in a scope on the project (proj != src)
* (resource path case)
*/
public void testScopeEncloses23() throws CoreException {
try {
IJavaScriptProject project = createJavaProject("P", new String[] {"src"});
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project});
assertTrue("scope on P should enclose \"/P/src/x/y/A.java\"", scope.encloses("/P/src/x/y/A.js"));
} finally {
deleteProject("P");
}
}
/*
* Ensures that a compilation unit is enclosed in a scope on the project (proj != src)
* (Java element case)
*/
public void testScopeEncloses24() throws CoreException {
try {
IJavaScriptProject project = createJavaProject("P", new String[] {"src"});
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project});
IJavaScriptUnit cu = getCompilationUnit("/P/src/x/y/A.js");
assertTrue("scope on P should enclose compilation unit A.js", scope.encloses(cu));
} finally {
deleteProject("P");
}
}
/*
* Ensures that a compilation unit in the default package is enclosed in a scope on the project (proj != src)
* (resource path case)
*/
public void testScopeEncloses25() throws CoreException {
try {
IJavaScriptProject project = createJavaProject("P", new String[] {"src"});
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project});
assertTrue("scope on P should enclose \"/P/src/A.java\"", scope.encloses("/P/src/A.js"));
} finally {
deleteProject("P");
}
}
/*
* Ensures that a compilation unit in the default package is enclosed in a scope on the project (proj != src)
* (Java element case)
*/
public void testScopeEncloses26() throws CoreException {
try {
IJavaScriptProject project = createJavaProject("P", new String[] {"src"});
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project});
IJavaScriptUnit cu = getCompilationUnit("/P/src/A.js");
assertTrue("scope on P should enclose compilation unit A.js", scope.encloses(cu));
} finally {
deleteProject("P");
}
}
/*
* Ensures that a source type is enclosed in a scope on the project (proj != src)
* (Java element case)
*/
public void testScopeEncloses27() throws CoreException {
try {
IJavaScriptProject project = createJavaProject("P", new String[] {"src"});
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project});
IJavaScriptUnit cu = getCompilationUnit("/P/src/x/y/A.js");
IType type = cu.getType("A");
assertTrue("scope on P should enclose type A", scope.encloses(type));
} finally {
deleteProject("P");
}
}
/*
* Ensures that a Java project is not enclosed in a scope on the project (proj != src/)
* (resourcePath case)
*/
public void testScopeEncloses28() throws CoreException {
try {
IJavaScriptProject project = createJavaProject("P", new String[] {"src/"});
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project});
assertFalse("scope on P should not enclose \"/P\"", scope.encloses("/P"));
} finally {
deleteProject("P");
}
}
/*
* Ensures that a Java project is not enclosed in a scope on the project (proj != src/)
* (resourcePath case)
*/
public void testScopeEncloses28b() throws CoreException {
try {
IJavaScriptProject project = createJavaProject("P", new String[] {"src/"});
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project});
assertFalse("scope on P should not enclose \"/P\"", scope.encloses("/"));
} finally {
deleteProject("P");
}
}
/*
* Ensures that a Java project is not enclosed in a scope on the project (proj != src/)
* (resourcePath case)
*/
public void testScopeEncloses28c() throws CoreException {
try {
IJavaScriptProject project = createJavaProject("P", new String[] {"src/"});
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project});
assertFalse("scope on P should not enclose \"/P\"", scope.encloses(""));
} finally {
deleteProject("P");
}
}
/*
* Ensures that a Java project is not enclosed in a scope on the project (proj != src/)
* (Java element case)
*/
public void testScopeEncloses29() throws CoreException {
try {
IJavaScriptProject project = createJavaProject("P", new String[] {"src/"});
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project});
assertFalse("scope on P should enclose P", scope.encloses(project));
} finally {
deleteProject("P");
}
}
/*
* Ensures that a root is enclosed in a scope on the project (proj != src/)
* (resource path case)
*/
public void testScopeEncloses30() throws CoreException {
try {
IJavaScriptProject project = createJavaProject("P", new String[] {"src/"});
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project});
assertTrue("scope on P should enclose \"/P/src\"", scope.encloses("/P/src"));
} finally {
deleteProject("P");
}
}
/*
* Ensures that a root is enclosed in a scope on the project (proj != src/)
* (resource path with traling slash case)
*/
public void testScopeEncloses31() throws CoreException {
try {
IJavaScriptProject project = createJavaProject("P", new String[] {"src/"});
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project});
assertTrue("scope on P should enclose \"/P/src/\"", scope.encloses("/P/src/"));
} finally {
deleteProject("P");
}
}
/*
* Ensures that a root is enclosed in a scope on the project (proj != src/)
* (Java element case)
*/
public void testScopeEncloses32() throws CoreException {
try {
IJavaScriptProject project = createJavaProject("P", new String[] {"src/"});
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project});
IPackageFragmentRoot root = project.getPackageFragmentRoot(project.getProject().getFolder("src"));
assertTrue("scope on P should enclose root P/src", scope.encloses(root));
} finally {
deleteProject("P");
}
}
/*
* Ensures that a package is enclosed in a scope on the project (proj != src/)
* (resource path case)
*/
public void testScopeEncloses33() throws CoreException {
try {
IJavaScriptProject project = createJavaProject("P", new String[] {"src/"});
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project});
assertTrue("scope on P should enclose \"/P/src/x/y\"", scope.encloses("/P/src/x/y"));
} finally {
deleteProject("P");
}
}
/*
* Ensures that a package is enclosed in a scope on the project (proj != src/)
* (resource path with trailing slash case)
*/
public void testScopeEncloses34() throws CoreException {
try {
IJavaScriptProject project = createJavaProject("P", new String[] {"src/"});
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project});
assertTrue("scope on P should enclose \"/P/src/x/y/\"", scope.encloses("/P/src/x/y/"));
} finally {
deleteProject("P");
}
}
/*
* Ensures that a package is enclosed in a scope on the project (proj != src/)
* (Java element case)
*/
public void testScopeEncloses35() throws CoreException {
try {
IJavaScriptProject project = createJavaProject("P", new String[] {"src/"});
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project});
IPackageFragment pkg = getPackage("/P/src/x/y");
assertTrue("scope on P should enclose package x.y", scope.encloses(pkg));
} finally {
deleteProject("P");
}
}
/*
* Ensures that a default package is enclosed in a scope on the project (proj != src/)
* (Java element case)
*/
public void testScopeEncloses36() throws CoreException {
try {
IJavaScriptProject project = createJavaProject("P", new String[] {"src/"});
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project});
IPackageFragment pkg = getPackage("/P/src");
assertTrue("scope on P should enclose default package", scope.encloses(pkg));
} finally {
deleteProject("P");
}
}
/*
* Ensures that a compilation unit is enclosed in a scope on the project (proj != src/)
* (resource path case)
*/
public void testScopeEncloses37() throws CoreException {
try {
IJavaScriptProject project = createJavaProject("P", new String[] {"src/"});
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project});
assertTrue("scope on P should enclose \"/P/src/x/y/A.java\"", scope.encloses("/P/src/x/y/A.js"));
} finally {
deleteProject("P");
}
}
/*
* Ensures that a compilation unit is enclosed in a scope on the project (proj != src/)
* (Java element case)
*/
public void testScopeEncloses38() throws CoreException {
try {
IJavaScriptProject project = createJavaProject("P", new String[] {"src/"});
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project});
IJavaScriptUnit cu = getCompilationUnit("/P/src/x/y/A.js");
assertTrue("scope on P should enclose compilation unit A.js", scope.encloses(cu));
} finally {
deleteProject("P");
}
}
/*
* Ensures that a compilation unit in the default package is enclosed in a scope on the project (proj != src/)
* (resource path case)
*/
public void testScopeEncloses39() throws CoreException {
try {
IJavaScriptProject project = createJavaProject("P", new String[] {"src/"});
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project});
assertTrue("scope on P should enclose \"/P/src/A.java\"", scope.encloses("/P/src/A.js"));
} finally {
deleteProject("P");
}
}
/*
* Ensures that a compilation unit in the default package is enclosed in a scope on the project (proj != src/)
* (Java element case)
*/
public void testScopeEncloses40() throws CoreException {
try {
IJavaScriptProject project = createJavaProject("P", new String[] {"src/"});
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project});
IJavaScriptUnit cu = getCompilationUnit("/P/src/A.js");
assertTrue("scope on P should enclose compilation unit A.js", scope.encloses(cu));
} finally {
deleteProject("P");
}
}
/*
* Ensures that a source type is enclosed in a scope on the project (proj != src/)
* (Java element case)
*/
public void testScopeEncloses41() throws CoreException {
try {
IJavaScriptProject project = createJavaProject("P", new String[] {"src/"});
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project});
IJavaScriptUnit cu = getCompilationUnit("/P/src/x/y/A.js");
IType type = cu.getType("A");
assertTrue("scope on P should enclose type A", scope.encloses(type));
} finally {
deleteProject("P");
}
}
/**
* Bug 101022: [search] JUnit Test Runner on folder runs tests outside directory
* @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=101022"
*/
public void testBug101022() throws CoreException {
try {
IJavaScriptProject project = createJavaProject("P1", new String[] {"src", "test", "test2"});
createFile(
"/P1/src/Test.js",
"public class Test {\n" +
" protected void foo() {}\n" +
"}"
);
createFile(
"/P1/test/Test.js",
"public class Test {\n" +
" protected void foo() {}\n" +
"}"
);
createFile(
"/P1/test2/Test.js",
"public class Test {\n" +
" protected void foo() {}\n" +
"}"
);
IPackageFragmentRoot root = project.getPackageFragmentRoot(getFolder("/P1/test"));
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {root});
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
resultCollector.showProject = true;
search("foo", METHOD, DECLARATIONS, scope, resultCollector);
assertSearchResults(
"test/Test.java [in P1] void Test.foo() [foo]",
resultCollector);
}
finally {
deleteProject("P1");
}
}
/**
* Bug 101426: Search doesn't work with imported plugin
* @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=101426"
*/
public void testBug101426() throws CoreException {
try {
IJavaScriptProject project = createJavaProject("P1", new String[] {"src/", "test/", "test2/"}, new String[] {"JCL_LIB"});
createFile(
"/P1/src/Test.js",
"public interface ITest {\n" +
"}"
);
createFile(
"/P1/test/Test.js",
"public class Test {\n" +
" ITest test;\n" +
"}"
);
createFile(
"/P1/test2/Test.js",
"public class Test2 {\n" +
" ITest test;\n" +
"}"
);
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {project});
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
resultCollector.showProject = true;
search("ITest", TYPE, REFERENCES, scope, resultCollector);
assertSearchResults(
"test/Test.java [in P1] Test.test [ITest]\n" +
"test2/Test.java [in P1] Test2.test [ITest]",
resultCollector);
}
finally {
deleteProject("P1");
}
}
/**
* Bug 101777: [search] selecting class with a main type ignores the default package
* @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=101777"
*/
public void testBug101777() throws CoreException {
try {
IJavaScriptProject project = createJavaProject("P1");
createFile(
"/P1/Test.js",
"public class Test {\n" +
" public static void main(String[] args) {}\n" +
"}"
);
IPackageFragment[] fragments = project.getPackageFragments();
IPackageFragment defaultFragment = null;
for (int i = 0; i < fragments.length; i++) {
IPackageFragment fragment = fragments[i];
if (fragment.getElementName().length() == 0) {
defaultFragment = fragment;
break;
}
}
assertNotNull("We should have a default fragment for project P1!", defaultFragment);
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] {defaultFragment});
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
resultCollector.showProject = true;
search("main(String[]) void", METHOD, DECLARATIONS, scope, resultCollector);
assertSearchResults(
"Test.java [in P1] void Test.main(String[]) [main]",
resultCollector);
}
finally {
deleteProject("P1");
}
}
/**
* Bug 119203: Search doesn't work with imported plugin
* @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=119203"
* WARNING: Fix for this bug has been disabled due to bad regression
*
* Bug 127048: [search] References to Java element 'CorrectionEngine' not found
* @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=127048"
*/
public void testBug119203() throws CoreException {
try {
IJavaScriptProject project = createJavaProject("P1", new String[] {"src"});
createFile(
"/P1/src/Test.js",
"public class Test {\n" +
"}"
);
createFile(
"/P1/src/X.js",
"public class X {\n" +
" Test test;\n" +
"}"
);
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[] { project });
JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
resultCollector.showProject = true;
search("Test", TYPE, REFERENCES, scope, resultCollector);
assertSearchResults(
"src/X.java [in P1] X.test [Test]",
resultCollector);
}
finally {
deleteProject("P1");
}
}
}