/******************************************************************************* | |
* Copyright (c) 2012 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.search; | |
import java.util.ArrayList; | |
import java.util.List; | |
import org.eclipse.core.runtime.NullProgressMonitor; | |
import org.eclipse.wst.jsdt.core.IJavaScriptElement; | |
import org.eclipse.wst.jsdt.core.search.IJavaScriptSearchConstants; | |
import org.eclipse.wst.jsdt.core.search.IJavaScriptSearchScope; | |
import org.eclipse.wst.jsdt.core.search.SearchEngine; | |
import org.eclipse.wst.jsdt.core.search.SearchMatch; | |
import org.eclipse.wst.jsdt.core.search.SearchPattern; | |
import org.eclipse.wst.jsdt.core.search.TypeNameMatch; | |
import org.eclipse.wst.jsdt.core.search.TypeNameMatchRequestor; | |
/** | |
* <p>Tests for TypeDeclarationPattern.</p> | |
*/ | |
public class TestTypeDeclarationPattern extends AbstractSearchTest { | |
protected TypeNameMatch[] runTypeSearchTest(String projectQualifier, String queryString, String[] fileNames, String[] fileSources, int searchFor, int matchRule) throws Exception { | |
IJavaScriptSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaScriptElement[]{setupMinimalProject(getRootProjectName()+projectQualifier, fileNames, fileSources)}); | |
final List results = new ArrayList(); | |
SearchEngine searchEngine = new SearchEngine(); | |
TypeNameMatchRequestor requestor = new TypeNameMatchRequestor() { | |
public void acceptTypeNameMatch(TypeNameMatch match) { | |
results.add(match); | |
} | |
}; | |
searchEngine.searchAllTypeNames( | |
queryString.toCharArray(), | |
matchRule, | |
searchFor, | |
scope, | |
requestor, | |
IJavaScriptSearchConstants.WAIT_UNTIL_READY_TO_SEARCH, | |
new NullProgressMonitor() | |
); | |
return (TypeNameMatch[])results.toArray(new TypeNameMatch[results.size()]); | |
} | |
public void testTypeDeclarationPatternMatch01() throws Exception { | |
TypeNameMatch[] results = runTypeSearchTest(getName(), | |
"at*", | |
new String[] {"X.js"}, | |
new String[] { | |
"aTest1" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" + | |
"apackage.aTest2" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" + | |
"apackage.aTest3" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" + | |
"apackage.bTest" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" | |
}, | |
IJavaScriptSearchConstants.TYPE, | |
SearchPattern.R_PATTERN_MATCH); | |
assertEquals("wrong number of files containing references found", 3, results.length); | |
} | |
public void testTypeDeclarationPatternMatch02() throws Exception { | |
TypeNameMatch[] results = runTypeSearchTest(getName(), | |
"apack*", | |
new String[] {"X.js"}, | |
new String[] { | |
"aTest1" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" + | |
"apackage.aTest2" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" + | |
"apackage.aTest3" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" + | |
"apackage.bTest" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" | |
}, | |
IJavaScriptSearchConstants.TYPE, | |
SearchPattern.R_PATTERN_MATCH); | |
assertEquals("wrong number of files containing references found", 3, results.length); | |
} | |
public void testTypeDeclarationPatternMatch03() throws Exception { | |
TypeNameMatch[] results = runTypeSearchTest(getName(), | |
"a*e.b*", | |
new String[] {"X.js"}, | |
new String[] { | |
"aTest1" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" + | |
"apackage.aTest2" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" + | |
"apackage.aTest3" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" + | |
"apackage.bTest" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" | |
}, | |
IJavaScriptSearchConstants.TYPE, | |
SearchPattern.R_PATTERN_MATCH); | |
assertEquals("wrong number of files containing references found", 1, results.length); | |
} | |
public void testTypeDeclarationPatternMatch04() throws Exception { | |
TypeNameMatch[] results = runTypeSearchTest(getName(), | |
"a*.a*", | |
new String[] {"X.js"}, | |
new String[] { | |
"aTest1" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" + | |
"apackage.aTest2" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" + | |
"apackage.aTest3" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" + | |
"apackage.bTest" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" | |
}, | |
IJavaScriptSearchConstants.TYPE, | |
SearchPattern.R_PATTERN_MATCH); | |
assertEquals("wrong number of files containing references found", 2, results.length); | |
} | |
public void testTypeDeclarationPatternMatch05() throws Exception { | |
TypeNameMatch[] results = runTypeSearchTest(getName(), | |
"a*.s*", | |
new String[] {"X.js"}, | |
new String[] { | |
"aTest1" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" + | |
"apackage.aTest2" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" + | |
"apackage.sTest" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" + | |
"apackage.subpackage.aTest3" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" | |
}, | |
IJavaScriptSearchConstants.TYPE, | |
SearchPattern.R_PATTERN_MATCH); | |
assertEquals("wrong number of files containing references found", 2, results.length); | |
} | |
public void testTypeDeclarationPatternMatch06() throws Exception { | |
TypeNameMatch[] results = runTypeSearchTest(getName(), | |
"a*.s*.*t", | |
new String[] {"X.js"}, | |
new String[] { | |
"aTest1" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" + | |
"apackage.sTest" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" + | |
"apackage.subpackage.bTest" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" + | |
"apackage.subpackage.aTest2" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" | |
}, | |
IJavaScriptSearchConstants.TYPE, | |
SearchPattern.R_PATTERN_MATCH); | |
assertEquals("wrong number of files containing references found", 1, results.length); | |
} | |
public void testTypeDeclarationPatternMatch07() throws Exception { | |
TypeNameMatch[] results = runTypeSearchTest(getName(), | |
"*.A*", | |
new String[] {"X.js"}, | |
new String[] { | |
"aTest1" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" + | |
"apackage.aTest2" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" + | |
"apackage.aTest3" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" + | |
"apackage.bTest" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" | |
}, | |
IJavaScriptSearchConstants.TYPE, | |
SearchPattern.R_PATTERN_MATCH); | |
assertEquals("wrong number of files containing references found", 2, results.length); | |
} | |
public void testTypeDeclarationPatternMatch8() throws Exception { | |
TypeNameMatch[] results = runTypeSearchTest(getName(), | |
"APACK*", | |
new String[] {"X.js"}, | |
new String[] { | |
"aTest1" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" + | |
"apackage.aTest2" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" + | |
"apackage.aTest3" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" + | |
"apackage.bTest" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" | |
}, | |
IJavaScriptSearchConstants.TYPE, | |
SearchPattern.R_PATTERN_MATCH); | |
assertEquals("wrong number of files containing references found", 3, results.length); | |
} | |
public void testTypeDeclarationPatternMatch09() throws Exception { | |
TypeNameMatch[] results = runTypeSearchTest(getName(), | |
"apack.a", | |
new String[] {"X.js"}, | |
new String[] { | |
"aTest1" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" + | |
"apackage.aTest2" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" + | |
"apackage.aTest3" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" + | |
"apackage.bTest" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" | |
}, | |
IJavaScriptSearchConstants.TYPE, | |
SearchPattern.R_PREFIX_MATCH); | |
assertEquals("wrong number of files containing references found", 0, results.length); | |
} | |
public void testTypeDeclarationPatternMatch10() throws Exception { | |
TypeNameMatch[] results = runTypeSearchTest(getName(), | |
"apackage.a", | |
new String[] {"X.js"}, | |
new String[] { | |
"aTest1" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" + | |
"apackage.aTest2" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" + | |
"apackage.aTest3" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" + | |
"apackage.bTest" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" | |
}, | |
IJavaScriptSearchConstants.TYPE, | |
SearchPattern.R_PREFIX_MATCH); | |
assertEquals("wrong number of files containing references found", 2, results.length); | |
} | |
public void testTypeDeclarationPatternMatch11() throws Exception { | |
TypeNameMatch[] results = runTypeSearchTest(getName(), | |
"APACK", | |
new String[] {"X.js"}, | |
new String[] { | |
"aTest1" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" + | |
"apackage.aTest2" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" + | |
"apackage.aTest3" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" + | |
"apackage.bTest" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" | |
}, | |
IJavaScriptSearchConstants.TYPE, | |
SearchPattern.R_PREFIX_MATCH); | |
assertEquals("wrong number of files containing references found", 3, results.length); | |
} | |
public void testTypeDeclarationPatternMatch12() throws Exception { | |
TypeNameMatch[] results = runTypeSearchTest(getName(), | |
"apackage.a", | |
new String[] {"X.js"}, | |
new String[] { | |
"aTest1" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" + | |
"APACKAGE.ATEST2" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" + | |
"APACKAGE.aTest3" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" + | |
"APACKAGE.bTest" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" | |
}, | |
IJavaScriptSearchConstants.TYPE, | |
SearchPattern.R_PREFIX_MATCH); | |
assertEquals("wrong number of files containing references found", 2, results.length); | |
} | |
public void testTypeDeclarationSearch01() throws Exception { | |
SearchMatch[] results = runSearchTest(getName(), | |
"apack*", | |
new String[] {"X.js"}, | |
new String[] { | |
"aTest1" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" + | |
"apackage.aTest2" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" + | |
"apackage.aTest3" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" + | |
"apackage.bTest" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" | |
}, | |
IJavaScriptSearchConstants.TYPE, | |
IJavaScriptSearchConstants.DECLARATIONS, | |
SearchPattern.R_PATTERN_MATCH); | |
assertEquals("wrong number of files containing references found", 3, results.length); | |
} | |
public void testTypeDeclarationSearch02() throws Exception { | |
SearchMatch[] results = runSearchTest(getName(), | |
"*.a*", | |
new String[] {"X.js"}, | |
new String[] { | |
"aTest1" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" + | |
"apackage.aTest2" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" + | |
"apackage.aTest3" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" + | |
"apackage.bTest" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" | |
}, | |
IJavaScriptSearchConstants.TYPE, | |
IJavaScriptSearchConstants.DECLARATIONS, | |
SearchPattern.R_PATTERN_MATCH); | |
assertEquals("wrong number of files containing references found", 2, results.length); | |
} | |
public void testTypeDeclarationSearch03() throws Exception { | |
SearchMatch[] results = runSearchTest(getName(), | |
"APACKAGE.a*", | |
new String[] {"X.js"}, | |
new String[] { | |
"aTest1" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" + | |
"aTest2" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" + | |
"apackage.aTest3" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" + | |
"APACKAGE.aTest4" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" | |
}, | |
IJavaScriptSearchConstants.TYPE, | |
IJavaScriptSearchConstants.DECLARATIONS, | |
SearchPattern.R_PATTERN_MATCH | SearchPattern.R_CASE_SENSITIVE); | |
assertEquals("wrong number of files containing references found", 1, results.length); | |
} | |
public void testTypeDeclarationSearch04() throws Exception { | |
SearchMatch[] results = runSearchTest(getName(), | |
"at*", | |
new String[] {"X.js"}, | |
new String[] { | |
"aTest1" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" + | |
"apackage.aTest2" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" + | |
"apackage.aTest3" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" | |
}, | |
IJavaScriptSearchConstants.TYPE, | |
IJavaScriptSearchConstants.DECLARATIONS, | |
SearchPattern.R_PATTERN_MATCH); | |
assertEquals("wrong number of files containing references found", 3, results.length); | |
} | |
public void testTypeDeclarationSearch05() throws Exception { | |
SearchMatch[] results = runSearchTest(getName(), | |
"TTD", | |
new String[] {"X.js"}, | |
new String[] { | |
"apackage.TestTypeDeclaration1" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" + | |
"apackage.TestTypeDeclaration2" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" + | |
"apackage.TestTypeDeclaration3" + " = function() {\n" + | |
"\tthis.s = 5;\n" + | |
"}\n" | |
}, | |
IJavaScriptSearchConstants.TYPE, | |
IJavaScriptSearchConstants.DECLARATIONS, | |
SearchPattern.R_CAMELCASE_MATCH); | |
assertEquals("wrong number of files containing references found", 3, results.length); | |
} | |
} |