public void assertNavigationContains(PsiElement psiElement, String targetShortcut) { if(!targetShortcut.startsWith("\\")) { targetShortcut = "\\" + targetShortcut; } Set<String> classTargets = new HashSet<String>(); for (GotoDeclarationHandler gotoDeclarationHandler : Extensions.getExtensions(GotoDeclarationHandler.EP_NAME)) { PsiElement[] gotoDeclarationTargets = gotoDeclarationHandler.getGotoDeclarationTargets(psiElement, 0, myFixture.getEditor()); if(gotoDeclarationTargets != null && gotoDeclarationTargets.length > 0) { for (PsiElement gotoDeclarationTarget : gotoDeclarationTargets) { if(gotoDeclarationTarget instanceof Method) { String meName = ((Method) gotoDeclarationTarget).getName(); String clName = ((Method) gotoDeclarationTarget).getContainingClass().getPresentableFQN(); if(!clName.startsWith("\\")) { clName = "\\" + clName; } classTargets.add(clName + "::" + meName); } else if(gotoDeclarationTarget instanceof Function) { classTargets.add("\\" + ((Function) gotoDeclarationTarget).getName()); } } } } if(!classTargets.contains(targetShortcut)) { fail(String.format("failed that PsiElement (%s) navigate to %s on %s", psiElement.toString(), targetShortcut, classTargets.toString())); } }
private void assertNavigationIsEmpty() { PsiElement psiElement = myFixture.getFile().findElementAt(myFixture.getCaretOffset()); for (GotoDeclarationHandler gotoDeclarationHandler : Extensions.getExtensions(GotoDeclarationHandler.EP_NAME)) { PsiElement[] gotoDeclarationTargets = gotoDeclarationHandler.getGotoDeclarationTargets(psiElement, 0, myFixture.getEditor()); if(gotoDeclarationTargets != null && gotoDeclarationTargets.length > 0) { fail(String.format("failed that PsiElement (%s) navigate is empty; found target in '%s'", psiElement.toString(), gotoDeclarationHandler.getClass())); } } }
private void assertNavigationMatch(ElementPattern<?> pattern) { PsiElement psiElement = myFixture.getFile().findElementAt(myFixture.getCaretOffset()); Set<String> targetStrings = new HashSet<String>(); for (GotoDeclarationHandler gotoDeclarationHandler : Extensions.getExtensions(GotoDeclarationHandler.EP_NAME)) { PsiElement[] gotoDeclarationTargets = gotoDeclarationHandler.getGotoDeclarationTargets(psiElement, 0, myFixture.getEditor()); if(gotoDeclarationTargets == null || gotoDeclarationTargets.length == 0) { continue; } for (PsiElement gotoDeclarationTarget : gotoDeclarationTargets) { targetStrings.add(gotoDeclarationTarget.toString()); if(pattern.accepts(gotoDeclarationTarget)) { return; } } } fail(String.format("failed that PsiElement (%s) navigate matches one of %s", psiElement.toString(), targetStrings.toString())); }
protected void testQuickDocumentation(final String fileName, final String expectedDocumentation) { final PsiFile psiFile = myFixture.configureByFile(filesPath + fileName); final PsiElement originalElement = psiFile.findElementAt(myFixture.getEditor().getCaretModel().getOffset()); final PsiElement targetElement = DocumentationManager.getInstance(getProject()) .findTargetElement(myFixture.getEditor(), psiFile, originalElement); final DocumentationProvider documentationProvider = DocumentationManager.getProviderFromElement(targetElement); final String quickNavigateInfo = documentationProvider.getQuickNavigateInfo(targetElement, originalElement); assertEquals(expectedDocumentation, quickNavigateInfo); } }
public void assertNavigationContainsFile(LanguageFileType languageFileType, String configureByText, String targetShortcut) { myFixture.configureByText(languageFileType, configureByText); PsiElement psiElement = myFixture.getFile().findElementAt(myFixture.getCaretOffset()); Set<String> targets = new HashSet<String>(); for (GotoDeclarationHandler gotoDeclarationHandler : Extensions.getExtensions(GotoDeclarationHandler.EP_NAME)) { PsiElement[] gotoDeclarationTargets = gotoDeclarationHandler.getGotoDeclarationTargets(psiElement, 0, myFixture.getEditor()); if (gotoDeclarationTargets != null && gotoDeclarationTargets.length > 0) { for (PsiElement gotoDeclarationTarget : gotoDeclarationTargets) { if(gotoDeclarationTarget instanceof PsiFile) { targets.add(((PsiFile) gotoDeclarationTarget).getVirtualFile().getUrl()); } } } } // its possible to have memory fields, // so simple check for ending conditions // temp:///src/interchange.en.xlf for (String target : targets) { if(target.endsWith(targetShortcut)) { return; } } fail(String.format("failed that PsiElement (%s) navigate to file %s", psiElement.toString(), targetShortcut)); }
public void assertAtTextCompletionContains(String findByText, String... lookupStrings) { final PsiElement element = myFixture.findElementByText(findByText, PsiElement.class); assert element != null : "No element found by text: " + findByText; myFixture.getEditor().getCaretModel().moveToOffset(element.getTextOffset() + 1); myFixture.completeBasic(); checkContainsCompletion(lookupStrings); }
private String getPresentation(Object[] itemsToShow, int paramIdx) { ParameterInfoUIContextEx uiCtx = ParameterInfoComponent.createContext(itemsToShow, myFixture.getEditor(), parameterInfoHandler, paramIdx); return parameterInfoHandler.getPresentation((CypherInvocation) itemsToShow[0], uiCtx); }
private void moveCaret(int offset) { myFixture.getEditor().getCaretModel().moveToOffset(offset); }
@NotNull protected List<Map.Entry<Expression, RangeHighlighterEx>> doAdvancedHighlighting() { AdvancedExpressionFoldingHighlightingComponent highlightingComponent = getProject() .getComponent(AdvancedExpressionFoldingHighlightingComponent.class); highlightingComponent.fileOpened(FileEditorManager.getInstance(getProject()), myFixture.getFile().getVirtualFile()); ArrayList<Map.Entry<Expression, RangeHighlighterEx>> entries = new ArrayList<>(highlightingComponent .getHighlighters(myFixture.getEditor()) .entrySet()); entries.sort(Comparator.comparingInt(o -> o.getValue().getStartOffset())); return entries; }
private DataContext getEditorDataContext() { return DataManager.getInstance().getDataContext(myFixture.getEditor().getComponent()); }
@NotNull protected <T extends PsiElement> T getElementAtCaret(@NotNull Class<T> clazz) { int offset = myFixture.getEditor().getCaretModel().getOffset(); PsiElement focused = myFixture.getFile().findElementAt(offset); return ObjectUtils.assertNotNull(PsiTreeUtil.getParentOfType(focused, clazz, false)); }
public String verify() { Editor editor = myFixture.getEditor(); PsiFile file = myFixture.getFile(); PsiElement originalElement = file.findElementAt(editor.getCaretModel().getOffset()); PsiElement element = DocumentationManager.getInstance(getProject()).findTargetElement(editor, file); assertThat(originalElement).isNotNull(); assertThat(element).isNotNull(); DocumentationProvider documentationProvider = DocumentationManager.getProviderFromElement(originalElement); return documentationProvider.generateDoc(element, originalElement); } }
protected void textAfter(String txt, CompletionType type, String textAfter) { myFixture.configureByText("a.bnf", txt); myFixture.complete(type, 1); assertEquals(textAfter, myFixture.getEditor().getDocument().getText()); }
protected void textAfter(String txt, String textAfter) { myFixture.configureByText("a.flex", txt); myFixture.complete(CompletionType.BASIC, 1); assertEquals(textAfter, myFixture.getEditor().getDocument().getText()); }
private Object[] getItemsToShow() { CreateParameterInfoContext createCtx = new MockCreateParameterInfoContext(myFixture.getEditor(), myFixture.getFile()); CypherInvocation psiElement = parameterInfoHandler.findElementForParameterInfo(createCtx); assertNotNull(psiElement); parameterInfoHandler.showParameterInfo(psiElement, createCtx); return createCtx.getItemsToShow(); }
public void assertAtTextCompletionContains(String findByText, String... lookupStrings) { final PsiElement element = myFixture.findElementByText(findByText, PsiElement.class); assert element != null : "No element found by text: " + findByText; myFixture.getEditor().getCaretModel().moveToOffset(element.getTextOffset() + 1); myFixture.completeBasic(); checkContainsCompletion(lookupStrings); }
private int getHighlightedItem() { MockUpdateParameterInfoContext updateCtx = new MockUpdateParameterInfoContext(myFixture.getEditor(), myFixture.getFile()); CypherInvocation psiElement = parameterInfoHandler.findElementForUpdatingParameterInfo(updateCtx); assertNotNull(psiElement); parameterInfoHandler.updateParameterInfo(psiElement, updateCtx); return updateCtx.getCurrentParameter(); }
private long collectAndCheckHighlighting() { ExpectedHighlightingData data = new ExpectedHighlightingData(myFixture.getEditor().getDocument(), false, false, true, false, this.getHostFile()); data.registerHighlightingType("csv_column_info", new ExpectedHighlightingData.ExpectedHighlightingSet(CSV_COLUMN_INFO_SEVERITY, false, true)); data.init(); return this.collectAndCheckHighlighting(data); }
protected void doLineCommenterTest() { initWithFileSmart(); MultiCaretCodeInsightAction action = (MultiCaretCodeInsightAction)ActionManager.getInstance().getAction(IdeActions.ACTION_COMMENT_LINE); action.actionPerformedImpl(myModule.getProject(), myFixture.getEditor()); UsefulTestCase.assertSameLinesWithFile(getTestResultsFilePath(), getEditorTextWithCaretsAndSelections()); }
private RangeHighlighter[] testHighlightUsages(String... fileNames) { myFixture.configureByFiles(fileNames); HighlightUsagesHandlerBase handler = HighlightUsagesHandler.createCustomHandler(myFixture.getEditor(), myFixture.getFile()); String featureId = handler.getFeatureId(); if (featureId != null) { FeatureUsageTracker.getInstance().triggerFeatureUsed(featureId); } handler.highlightUsages(); Editor editor = this.getEditor(); return editor.getMarkupModel().getAllHighlighters(); }