blob: fcdad698aeddf40ab96683bcdda61b049a8c59b6 [file] [log] [blame]
package com.intellij.ide.hierarchy;
import com.intellij.JavaTestUtil;
import com.intellij.ide.hierarchy.actions.BrowseTypeHierarchyAction;
import com.intellij.ide.hierarchy.call.CallerMethodsTreeStructure;
import com.intellij.ide.highlighter.XmlFileType;
import com.intellij.openapi.util.Computable;
import com.intellij.psi.JavaPsiFacade;
import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiMethod;
import com.intellij.psi.search.ProjectScope;
import com.intellij.testFramework.TestActionEvent;
import com.intellij.testFramework.codeInsight.hierarchy.HierarchyViewTestBase;
/**
* @author yole
*/
public class JavaCallHierarchyTest extends HierarchyViewTestBase {
@Override
protected String getTestDataPath() {
return JavaTestUtil.getJavaTestDataPath();
}
@Override
protected String getBasePath() {
return "ide/hierarchy/call/" + getTestName(false);
}
private void doJavaCallTypeHierarchyTest(final String classFqn, final String methodName, final String... fileNames) throws Exception {
doHierarchyTest(new Computable<HierarchyTreeStructure>() {
@Override
public HierarchyTreeStructure compute() {
final PsiClass psiClass = JavaPsiFacade.getInstance(getProject()).findClass(classFqn, ProjectScope.getProjectScope(getProject()));
final PsiMethod method = psiClass.findMethodsByName(methodName, false) [0];
return new CallerMethodsTreeStructure(getProject(), method, HierarchyBrowserBaseEx.SCOPE_PROJECT);
}
}, fileNames);
}
public void testIdeaDev41005() throws Exception {
doJavaCallTypeHierarchyTest("B", "xyzzy", "B.java", "D.java", "A.java");
}
public void testIdeaDev41005_Inheritance() throws Exception {
doJavaCallTypeHierarchyTest("D", "xyzzy", "B.java", "D.java", "A.java", "C.java");
}
public void testIdeaDev41005_Sibling() throws Exception {
doJavaCallTypeHierarchyTest("D", "xyzzy", "B.java", "D.java", "A.java", "C.java");
}
public void testIdeaDev41005_SiblingUnderInheritance() throws Exception {
doJavaCallTypeHierarchyTest("D", "xyzzy", "B.java", "D.java", "A.java", "C.java", "CChild.java");
}
public void testIdeaDev41232() throws Exception {
doJavaCallTypeHierarchyTest("A", "main", "B.java", "A.java");
}
public void testActionAvailableInXml() throws Exception {
configureByText(XmlFileType.INSTANCE, "<foo>java.lang.Str<caret>ing</foo>");
BrowseTypeHierarchyAction action = new BrowseTypeHierarchyAction();
TestActionEvent e = new TestActionEvent(action);
action.beforeActionPerformedUpdate(e);
assertTrue(e.getPresentation().isEnabled() && e.getPresentation().isVisible());
}
}