blob: 42ee5edab817401d0e3826e9ea4dffbc2cbcf625 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010 xored software, Inc.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* xored software, Inc. - initial API and Implementation (Alex Panchenko)
*******************************************************************************/
package org.eclipse.dltk.javascript.core.tests.search;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.dltk.core.IField;
import org.eclipse.dltk.core.IMethod;
import org.eclipse.dltk.core.IModelElement;
import org.eclipse.dltk.core.search.IDLTKSearchConstants;
import org.eclipse.dltk.core.tests.ProjectSetup;
import org.eclipse.dltk.core.tests.model.TestSearchResults;
import org.eclipse.dltk.javascript.core.tests.AllTests;
import org.eclipse.dltk.javascript.typeinfo.ITypeNames;
import org.junit.Assert;
import org.junit.ClassRule;
import org.junit.Test;
public class SearchTypeReferenceTests extends Assert implements
IDLTKSearchConstants {
@ClassRule
public static final ProjectSetup PROJECT = new ProjectSetup(
AllTests.WORKSPACE, "search",
ProjectSetup.Option.WAIT_INDEXES_READY);
@Test
public void testReturnType() throws CoreException {
final TestSearchResults results = PROJECT.search("Database", TYPE,
REFERENCES);
assertEquals(3, results.size());
{
final IModelElement method = results.locate(IMethod.class,
"getDatabase");
final IModelElement parent = method.getParent();
assertEquals(IModelElement.SOURCE_MODULE, parent.getElementType());
assertEquals("returnType.js", parent.getElementName());
}
{
final IModelElement method = results.locate(IMethod.class,
"getDatabaseFunction");
final IModelElement parent = method.getParent();
assertEquals(IModelElement.SOURCE_MODULE, parent.getElementType());
assertEquals("returnFunctionType.js", parent.getElementName());
}
{
final IModelElement method = results.locate(IMethod.class, "test");
final IModelElement parent = method.getParent();
assertEquals(IModelElement.SOURCE_MODULE, parent.getElementType());
assertEquals("localVarType.js", parent.getElementName());
}
}
@Test
public void testFunction() throws CoreException {
final TestSearchResults results = PROJECT.search(ITypeNames.FUNCTION,
TYPE, REFERENCES);
assertEquals(1, results.size());
final IModelElement method = results.locate(IMethod.class,
"getDatabaseFunction");
final IModelElement parent = method.getParent();
assertEquals(IModelElement.SOURCE_MODULE, parent.getElementType());
assertEquals("returnFunctionType.js", parent.getElementName());
}
@Test
public void testParamType() throws CoreException {
final TestSearchResults results = PROJECT.search("Request", TYPE,
REFERENCES);
assertEquals(1, results.size());
final IModelElement method = results.locate(IMethod.class,
"executeRequest");
final IModelElement parent = method.getParent();
assertEquals(IModelElement.SOURCE_MODULE, parent.getElementType());
assertEquals("paramType.js", parent.getElementName());
}
@Test
public void testVarType() throws CoreException {
final TestSearchResults results = PROJECT.search("MyApplication", TYPE,
REFERENCES);
assertEquals(1, results.size());
final IModelElement method = results.locate(IField.class, "app");
final IModelElement parent = method.getParent();
assertEquals(IModelElement.SOURCE_MODULE, parent.getElementType());
assertEquals("varType.js", parent.getElementName());
}
}