diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/inlays/JavaParameterNameHintsTest.kt b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/inlays/JavaParameterNameHintsTest.kt
index 9bcd9efd9173..f47ec5929530 100644
--- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/inlays/JavaParameterNameHintsTest.kt
+++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/inlays/JavaParameterNameHintsTest.kt
@@ -17,11 +17,12 @@ package com.intellij.codeInsight.daemon.inlays
import com.intellij.codeInsight.hints.settings.ParameterNameHintsSettings
import com.intellij.lang.java.JavaLanguage
+import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase
-class JavaInlayParameterHintsTest : InlayParameterHintsTest() {
+class JavaInlayParameterHintsTest : LightCodeInsightFixtureTestCase() {
fun check(text: String) {
- checkInlays("A.java", text)
+ myFixture.testInlays("A.java", text)
}
fun `test insert literal arguments`() {
diff --git a/platform/testFramework/src/com/intellij/testFramework/fixtures/CodeInsightTestFixture.java b/platform/testFramework/src/com/intellij/testFramework/fixtures/CodeInsightTestFixture.java
index 96c5e9961a61..342f9884b6c7 100644
--- a/platform/testFramework/src/com/intellij/testFramework/fixtures/CodeInsightTestFixture.java
+++ b/platform/testFramework/src/com/intellij/testFramework/fixtures/CodeInsightTestFixture.java
@@ -539,6 +539,8 @@ public interface CodeInsightTestFixture extends IdeaProjectTestFixture {
void testRainbow(@NotNull String fileName, @NotNull String text, boolean isRainbowOn, boolean withColor);
+ void testInlays(@NotNull String fileName, @NotNull String text);
+
void assertPreferredCompletionItems(int selected, @NotNull String... expected);
/**
diff --git a/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java b/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java
index 543eb7fd5881..e3e6cacda9a7 100644
--- a/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java
+++ b/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java
@@ -116,6 +116,7 @@ import com.intellij.refactoring.rename.*;
import com.intellij.rt.execution.junit.FileComparisonFailure;
import com.intellij.testFramework.*;
import com.intellij.testFramework.fixtures.*;
+import com.intellij.testFramework.utils.inlays.InlayHintsChecker;
import com.intellij.usageView.UsageInfo;
import com.intellij.util.*;
import com.intellij.util.containers.ContainerUtil;
@@ -1694,6 +1695,18 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
}
}
+ @Override
+ public void testInlays(@NotNull String fileName, @NotNull String text) {
+ InlayHintsChecker checker = new InlayHintsChecker(this);
+ try {
+ checker.setUp();
+ checker.checkInlays(fileName, text);
+ }
+ finally {
+ checker.tearDown();
+ }
+ }
+
@Override
public void assertPreferredCompletionItems(final int selected, @NotNull final String... expected) {
final LookupImpl lookup = getLookup();
diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/inlays/InlayParameterHintsTest.kt b/platform/testFramework/src/com/intellij/testFramework/utils/inlays/InlayParameterHintsTest.kt
similarity index 66%
rename from java/java-tests/testSrc/com/intellij/codeInsight/daemon/inlays/InlayParameterHintsTest.kt
rename to platform/testFramework/src/com/intellij/testFramework/utils/inlays/InlayParameterHintsTest.kt
index 72a87034adcb..bf31244358e4 100644
--- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/inlays/InlayParameterHintsTest.kt
+++ b/platform/testFramework/src/com/intellij/testFramework/utils/inlays/InlayParameterHintsTest.kt
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2016 JetBrains s.r.o.
+ * Copyright 2000-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,76 +13,59 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.intellij.codeInsight.daemon.inlays
+package com.intellij.testFramework.utils.inlays
import com.intellij.codeInsight.daemon.impl.ParameterHintsPresentationManager
import com.intellij.codeInsight.hints.InlayInfo
-import com.intellij.codeInsight.hints.ParameterHintsPassFactory
import com.intellij.codeInsight.hints.settings.ParameterNameHintsSettings
import com.intellij.openapi.command.WriteCommandAction
import com.intellij.openapi.editor.Document
import com.intellij.openapi.editor.ex.EditorSettingsExternalizable
-import com.intellij.psi.PsiDocumentManager
-import com.intellij.psi.PsiFile
-import com.intellij.psi.impl.DebugUtil
-import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase
-import org.assertj.core.api.Assertions.assertThat
-import org.jdom.Element
+import com.intellij.testFramework.fixtures.CodeInsightTestFixture
+import org.junit.Assert.assertEquals
import java.util.regex.Pattern
-abstract class InlayParameterHintsTest : LightCodeInsightFixtureTestCase() {
-
- private var isParamHintsEnabledBefore = false
- private lateinit var stateBefore: Element
+class InlayHintsChecker(private val myFixture: CodeInsightTestFixture) {
+ private var isParamHintsEnabledBefore = false
+
companion object {
val pattern: Pattern = Pattern.compile("")
- }
-
- override fun setUp() {
- super.setUp()
+ private val default = ParameterNameHintsSettings()
+ }
+
+ fun setUp() {
val settings = EditorSettingsExternalizable.getInstance()
isParamHintsEnabledBefore = settings.isShowParameterNameHints
settings.isShowParameterNameHints = true
-
- stateBefore = ParameterNameHintsSettings.getInstance().state
}
- override fun tearDown() {
+ fun tearDown() {
EditorSettingsExternalizable.getInstance().isShowParameterNameHints = isParamHintsEnabledBefore
- ParameterNameHintsSettings.getInstance().loadState(stateBefore)
+ val hintSettings = ParameterNameHintsSettings.getInstance()
- super.tearDown()
+ hintSettings.loadState(default.state)
+ hintSettings.isShowForParamsWithSameType = default.isShowForParamsWithSameType
+ hintSettings.isDoNotShowIfMethodNameContainsParameterName = default.isDoNotShowIfMethodNameContainsParameterName
}
fun checkInlays(fileName: String, text: String) {
myFixture.configureByText(fileName, text)
- val document = myFixture.getDocument(myFixture.file)
+ val file = myFixture.file
+ val document = myFixture.getDocument(file)
val expectedInlays = extractInlays(document)
val actualInlays = getActualInlays()
- assertThat(actualInlays.size)
- .withFailMessage("Expected ${expectedInlays.size} elements with hints, Actual elements count ${actualInlays.size}" +
- ", file text: \n\n ${file.text} \n\n isCommitted ${isCommitted(file)} \n\n" +
- "All inlays: ${actualInlays}")
- .isEqualTo(expectedInlays.size)
-
+ assertEquals(expectedInlays.size, actualInlays.size)
+
actualInlays.zip(expectedInlays).forEach {
- assertThat(it.first).isEqualTo(it.second)
+ assertEquals(it.second, it.first)
}
}
- private fun isCommitted(file: PsiFile): Boolean {
- val manager = PsiDocumentManager.getInstance(file.project)
- val document = manager.getDocument(file)
-
- assertThat(document).isNotNull()
- return manager.isCommitted(document!!)
- }
-
private fun getActualInlays(): List {
myFixture.doHighlighting()
val editor = myFixture.editor