package com.jetbrains.dart.analysisServer; import com.google.common.collect.Lists; import com.intellij.codeInsight.daemon.GutterMark; import com.intellij.icons.AllIcons; import com.intellij.openapi.util.text.StringUtil; import com.intellij.testFramework.fixtures.CodeInsightFixtureTestCase; import com.intellij.testFramework.fixtures.impl.CodeInsightTestFixtureImpl; import com.jetbrains.lang.dart.util.DartTestUtils; import javax.swing.*; import java.util.List; public class DartServerOverrideMarkerProviderTest extends CodeInsightFixtureTestCase { @Override public void setUp() throws Exception { super.setUp(); DartTestUtils.configureDartSdk(myModule, myFixture.getTestRootDisposable(), true); myFixture.setTestDataPath(DartTestUtils.BASE_TEST_DATA_PATH + getBasePath()); ((CodeInsightTestFixtureImpl)myFixture).canChangeDocumentDuringHighlighting(true); } @Override protected String getBasePath() { return "/analysisServer/overrideMarker"; } private void doTest(final String expectedText, final Icon expectedIcon) { final String testName = getTestName(false); myFixture.configureByFile(testName + ".dart"); myFixture.doHighlighting(); // make sure server is warmed up checkGutter(myFixture.findGuttersAtCaret(), expectedText, expectedIcon); } public static void checkGutter(final List<GutterMark> gutters, final String expectedText, final Icon expectedIcon) { final List<String> textList = Lists.newArrayList(); for (GutterMark gutter : gutters) { final String text = gutter.getTooltipText(); textList.add(text); if (expectedText.equals(text) && expectedIcon.equals(gutter.getIcon())) { return; } } fail("Not found gutter mark: " + expectedText + " " + expectedIcon + "\nin\n" + StringUtil.join(textList, "\n")); } public void testImplementMarker() throws Throwable { doTest("Implements method 'm' in 'A'", AllIcons.Gutter.ImplementingMethod); } public void testOverrideMarker() throws Throwable { doTest("Overrides method 'm' in 'A'", AllIcons.Gutter.OverridingMethod); } public void testOverriddenOperator() throws Throwable { doTest("Overrides operator '==' in 'Object'", AllIcons.Gutter.OverridingMethod); } }