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());
}
Aggregations