blob: 41bd950dbdcba9a1ddb2ca40b5932fadbaab0347 [file] [log] [blame]
package com.intellij.navigation;
import com.intellij.codeInsight.navigation.NavigationUtil;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.fileEditor.FileEditor;
import com.intellij.openapi.fileEditor.HeavyFileEditorManagerTestCase;
import com.intellij.openapi.fileEditor.TextEditor;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiJavaFile;
/**
* @author Dmitry Avdeev
* Date: 4/25/13
*/
public class GotoClassTest extends HeavyFileEditorManagerTestCase {
public void testGotoClass() throws Exception {
PsiJavaFile file = (PsiJavaFile)myFixture.configureByText("Foo.java", "public class Foo {\n" +
"}\n" +
"\n" +
"class Bar {}\n");
VirtualFile virtualFile = file.getVirtualFile();
assertNotNull(virtualFile);
myManager.openFile(virtualFile, true);
assertEquals(0, getOffset(virtualFile));
myManager.closeAllFiles();
PsiClass psiClass = file.getClasses()[1];
int identifierOffset = psiClass.getNameIdentifier().getTextOffset();
NavigationUtil.activateFileWithPsiElement(psiClass);
assertEquals(identifierOffset, getOffset(virtualFile));
getEditor(virtualFile).getCaretModel().moveToOffset(identifierOffset + 3); // it's still inside the class, so keep it
myManager.closeAllFiles();
NavigationUtil.activateFileWithPsiElement(psiClass);
assertEquals(identifierOffset + 3, getOffset(virtualFile));
getEditor(virtualFile).getCaretModel().moveToOffset(0);
NavigationUtil.activateFileWithPsiElement(psiClass);
assertEquals(identifierOffset, getOffset(virtualFile));
myManager.closeAllFiles();
NavigationUtil.activateFileWithPsiElement(file); // GoTo file should keep offset
assertEquals(identifierOffset, getOffset(virtualFile));
}
private int getOffset(VirtualFile virtualFile) {
Editor editor = getEditor(virtualFile);
return editor.getCaretModel().getOffset();
}
private Editor getEditor(VirtualFile virtualFile) {
FileEditor[] editors = myManager.getEditors(virtualFile);
return ((TextEditor)editors[0]).getEditor();
}
}