From 5c37bc2c5a2df95b610198e762ec6a00b2297e21 Mon Sep 17 00:00:00 2001 From: Mari Baburina Date: Mon, 27 Aug 2018 19:32:41 +0300 Subject: [PATCH] [gui-tests] trying to adopt GutterFixture for CLion custom icons --- .../testGuiFramework/fixtures/GutterFixture.kt | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/platform/testGuiFramework/src/com/intellij/testGuiFramework/fixtures/GutterFixture.kt b/platform/testGuiFramework/src/com/intellij/testGuiFramework/fixtures/GutterFixture.kt index 006f178c30c6..76b420cb8944 100644 --- a/platform/testGuiFramework/src/com/intellij/testGuiFramework/fixtures/GutterFixture.kt +++ b/platform/testGuiFramework/src/com/intellij/testGuiFramework/fixtures/GutterFixture.kt @@ -7,13 +7,16 @@ import com.intellij.openapi.editor.markup.MarkupModel import com.intellij.testGuiFramework.impl.GuiTestUtilKt.runOnEdt import com.intellij.testGuiFramework.impl.GuiTestUtilKt.waitUntil import org.fest.swing.exception.WaitTimedOutError +import javax.swing.Icon /** * @author Artem.Gainanov */ -class GutterFixture(private val myIde: IdeFrameFixture) { +open class GutterFixture(private val myIde: IdeFrameFixture) { - enum class GutterIcon { + interface IGutterIcon + + enum class GutterIcon : IGutterIcon { BREAKPOINT, DISABLED_BREAKPOINT, CSS_COLOR, @@ -32,15 +35,16 @@ class GutterFixture(private val myIde: IdeFrameFixture) { * OVERRIDDEN=[7, 8]} */ get() { - val result = GutterIcon.values().map { Pair(it, mutableListOf()) }.toMap() + val result: Map> = GutterIcon.values().map { Pair(it, mutableListOf()) }.toMap() runOnEdt { for (highlighter in getMarkupModel().allHighlighters) { val lineNumber = myIde.editor.editor.document.getLineNumber(highlighter.startOffset) + 1 - if (highlighter.gutterIconRenderer?.icon != null) { + val icon = highlighter.gutterIconRenderer?.icon + if (icon != null) { if (highlighter.gutterIconRenderer?.javaClass?.name == "com.intellij.psi.css.browse.CssColorGutterRenderer") { result[GutterIcon.CSS_COLOR]!!.add(lineNumber) } - when (highlighter.gutterIconRenderer?.icon) { + when (icon) { AllIcons.Gutter.ImplementingMethod -> result[GutterIcon.IMPLEMENTATION]!!.add(lineNumber) AllIcons.Gutter.OverridenMethod -> result[GutterIcon.OVERRIDDEN]!!.add(lineNumber) AllIcons.Gutter.ImplementedMethod -> result[GutterIcon.IMPLEMENTED]!!.add(lineNumber) @@ -48,6 +52,7 @@ class GutterFixture(private val myIde: IdeFrameFixture) { AllIcons.RunConfigurations.TestState.Run -> result[GutterIcon.RUN_SCRIPT]!!.add(lineNumber) AllIcons.Debugger.Db_set_breakpoint -> result[GutterIcon.BREAKPOINT]!!.add(lineNumber) AllIcons.Debugger.Db_disabled_breakpoint -> result[GutterIcon.DISABLED_BREAKPOINT]!!.add(lineNumber) + else -> handleUnmatchedIcon(icon)?.let { result.getOrDefault(it, mutableListOf(lineNumber)).add(lineNumber) } } } } @@ -55,6 +60,8 @@ class GutterFixture(private val myIde: IdeFrameFixture) { return result.mapValues { it.value.toList() } } + protected open fun handleUnmatchedIcon(icon: Icon): IGutterIcon? = null + /** * Waits until all specified kinds of gutter icons are shown and in required quantities * @param expectedIcons map where key is expected icon kind and value number of expected icons of this kind