public static void doTest(@NotNull final CodeInsightTestFixture fixture) { final List<CaretPositionInfo> caretPositions = DartTestUtils.extractPositionMarkers( fixture.getProject(), fixture.getEditor().getDocument()); fixture.doHighlighting(); for (CaretPositionInfo caretPositionInfo : caretPositions) { final int line = fixture.getEditor().getDocument().getLineNumber(caretPositionInfo.caretOffset); final int column = caretPositionInfo.caretOffset - fixture.getEditor().getDocument().getLineStartOffset(line); final String fileNameAndPosition = fixture.getFile().getName() + ":" + (line + 1) + ":" + (column + 1); final PsiReference reference = TargetElementUtil.findReference(fixture.getEditor(), caretPositionInfo.caretOffset); assertNotNull("No reference in " + fileNameAndPosition, reference); final PsiElement resolve = reference.resolve(); final String actualElementPosition = getPresentableElementPosition(fixture, resolve); assertEquals( "Incorrect resolution for reference in " + fileNameAndPosition, caretPositionInfo.expected, actualElementPosition); } }
private void doDeannotate(@NonNls final String testPath, String hint1, String hint2) throws Throwable { myFixture.configureByFile(testPath); final PsiFile file = myFixture.getFile(); final Editor editor = myFixture.getEditor(); assertNotAvailable(hint1); assertNotAvailable(hint2); final DeannotateIntentionAction deannotateFix = new DeannotateIntentionAction(); assertTrue(deannotateFix.isAvailable(myProject, editor, file)); final PsiModifierListOwner container = DeannotateIntentionAction.getContainer(editor, file); startListening(container, AnnotationUtil.NOT_NULL, true); new WriteCommandAction(myProject) { @Override protected void run(final Result result) throws Throwable { ExternalAnnotationsManager.getInstance(myProject) .deannotate(container, AnnotationUtil.NOT_NULL); } }.execute(); stopListeningAndCheckEvents(); FileDocumentManager.getInstance().saveAllDocuments(); IntentionAction fix = myFixture.findSingleIntention(hint1); assertNotNull(fix); fix = myFixture.findSingleIntention(hint2); assertNotNull(fix); assertFalse(deannotateFix.isAvailable(myProject, editor, file)); }
public void testAnnotated() throws Throwable { PsiFile psiFile = myFixture.configureByFile("lib/p/TestAnnotated.java"); PsiTestUtil.addSourceRoot(myModule, psiFile.getVirtualFile().getParent()); final PsiFile file = myFixture.getFile(); final Editor editor = myFixture.getEditor(); assertNotAvailable("Annotate method 'get' as @NotNull"); assertNotAvailable("Annotate method 'get' as @Nullable"); final DeannotateIntentionAction deannotateFix = new DeannotateIntentionAction(); assertFalse(deannotateFix.isAvailable(myProject, editor, file)); }
public void testAnnotateLibrary() throws Throwable { addDefaultLibrary(); myFixture.configureByFiles("lib/p/TestPrimitive.java", "content/anno/p/annotations.xml"); myFixture.configureByFiles("lib/p/Test.java"); final PsiFile file = myFixture.getFile(); final Editor editor = myFixture.getEditor(); final IntentionAction fix = myFixture.findSingleIntention("Annotate method 'get' as @NotNull"); assertTrue(fix.isAvailable(myProject, editor, file)); // expecting other @Nullable annotations to be removed, and default @NotNull to be added List<Trinity<PsiModifierListOwner, String, Boolean>> expectedSequence = new ArrayList<Trinity<PsiModifierListOwner, String, Boolean>>(); for (String notNull : NullableNotNullManager.getInstance(myProject).getNullables()) { expectedSequence.add(Trinity.create(getOwner(), notNull, false)); } expectedSequence.add(Trinity.create(getOwner(), AnnotationUtil.NOT_NULL, true)); startListening(expectedSequence); new WriteCommandAction(myProject) { @Override protected void run(final Result result) throws Throwable { fix.invoke(myProject, editor, file); } }.execute(); FileDocumentManager.getInstance().saveAllDocuments(); final PsiElement psiElement = file.findElementAt(editor.getCaretModel().getOffset()); assertNotNull(psiElement); final PsiModifierListOwner listOwner = PsiTreeUtil.getParentOfType(psiElement, PsiModifierListOwner.class); assertNotNull(listOwner); assertNotNull( ExternalAnnotationsManager.getInstance(myProject) .findExternalAnnotation(listOwner, AnnotationUtil.NOT_NULL)); stopListeningAndCheckEvents(); myFixture.checkResultByFile( "content/anno/p/annotations.xml", "content/anno/p/annotationsAnnotateLibrary_after.xml", false); }
private static Caret getCaret(CodeInsightTestFixture fixture) { Caret currentCaret = fixture.getEditor().getCaretModel().getCurrentCaret(); if (currentCaret.getSelectionStart() == 0 && currentCaret.getSelectionEnd() == 0) TestCase.fail("No valid caret found in test file"); return currentCaret; }