Search in sources :

Example 1 with PyPossibleClassMember

use of com.jetbrains.python.psi.PyPossibleClassMember in project intellij-community by JetBrains.

the class PyLineMarkerProviderTest method testOverriding.

/**
   * Checks method has "up" arrow when overrides, and this arrow works
   */
public void testOverriding() throws Exception {
    myFixture.copyDirectoryToProject("lineMarkerTest", "");
    myFixture.configureByFile("spam.py");
    final ASTNode functionNode = myFixture.getElementAtCaret().getNode();
    // We need IDENTIFIER node
    final ASTNode[] functionChildren = functionNode.getChildren(TokenSet.create(PyTokenTypes.IDENTIFIER));
    assert functionChildren.length == 1 : "Wrong number of identifiers: " + functionChildren.length;
    final PsiElement element = functionChildren[0].getPsi();
    @SuppressWarnings("unchecked") final LineMarkerInfo<PsiElement> lineMarkerInfo = new PyLineMarkerProvider().getLineMarkerInfo(element);
    Assert.assertNotNull("No gutter displayed", lineMarkerInfo);
    final GutterIconNavigationHandler<PsiElement> handler = lineMarkerInfo.getNavigationHandler();
    Assert.assertNotNull("Gutter has no navigation handle", handler);
    handler.navigate(new MouseEvent(new JLabel(), 0, 0, 0, 0, 0, 0, false), element);
    final NavigatablePsiElement[] targets = PyLineMarkerNavigator.getNavigationTargets(element);
    Assert.assertNotNull("No navigation targets found", targets);
    Assert.assertThat("Wrong number of targets found", targets, Matchers.arrayWithSize(1));
    final NavigatablePsiElement parentMethod = targets[0];
    Assert.assertThat("Navigation target has wrong type", parentMethod, Matchers.instanceOf(PyPossibleClassMember.class));
    final PyClass parentClass = ((PyPossibleClassMember) parentMethod).getContainingClass();
    Assert.assertNotNull("Function overrides other function, but no parent displayed", parentClass);
    Assert.assertEquals("Wrong parent class name", "Eggs", parentClass.getName());
}
Also used : PyClass(com.jetbrains.python.psi.PyClass) MouseEvent(java.awt.event.MouseEvent) ASTNode(com.intellij.lang.ASTNode) PyPossibleClassMember(com.jetbrains.python.psi.PyPossibleClassMember) NavigatablePsiElement(com.intellij.psi.NavigatablePsiElement) PsiElement(com.intellij.psi.PsiElement) NavigatablePsiElement(com.intellij.psi.NavigatablePsiElement)

Aggregations

ASTNode (com.intellij.lang.ASTNode)1 NavigatablePsiElement (com.intellij.psi.NavigatablePsiElement)1 PsiElement (com.intellij.psi.PsiElement)1 PyClass (com.jetbrains.python.psi.PyClass)1 PyPossibleClassMember (com.jetbrains.python.psi.PyPossibleClassMember)1 MouseEvent (java.awt.event.MouseEvent)1