package ru.crazyproger.plugins.webtoper;
import com.intellij.codeInsight.daemon.LineMarkerInfo;
import com.intellij.codeInsight.daemon.impl.DaemonCodeAnalyzerImpl;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.editor.markup.GutterIconRenderer;
import javax.swing.Icon;
import java.util.List;
public abstract class LineMarkertestCase extends WebtoperLightFixtureTestCase {
protected void doTest(TextIconTuple... texts) {
List<LineMarkerInfo> infos = doHighlighting();
assertEquals(texts.length, infos.size());
for (int i = 0; i < infos.size(); i++) {
LineMarkerInfo markerInfo = infos.get(i);
checkMarker(texts[i].tooltip, texts[i].icon, markerInfo);
}
}
protected void doTest(String... strings) {
List<LineMarkerInfo> infos = doHighlighting();
assertEquals(strings.length, infos.size());
for (int i = 0; i < infos.size(); i++) {
LineMarkerInfo markerInfo = infos.get(i);
checkMarker(strings[i], null, markerInfo);
}
}
private List<LineMarkerInfo> doHighlighting() {
myFixture.doHighlighting();
Document document = myFixture.getEditor().getDocument();
List<LineMarkerInfo> infoList = DaemonCodeAnalyzerImpl.getLineMarkers(document, myFixture.getProject());
assertNotNull(infoList);
return infoList;
}
private void checkMarker(String tooltip, Icon expectedIcon, LineMarkerInfo markerInfo) {
assertNotNull(markerInfo);
String markerTooltip = markerInfo.getLineMarkerTooltip();
assertEquals(tooltip, markerTooltip);
if (expectedIcon != null) {
GutterIconRenderer renderer = markerInfo.createGutterRenderer();
assertNotNull(renderer);
assertEquals(expectedIcon, renderer.getIcon());
}
}
protected class TextIconTuple {
protected String tooltip;
protected Icon icon;
public TextIconTuple(String tooltip, Icon icon) {
this.tooltip = tooltip;
this.icon = icon;
}
}
}