From 385ff3f4eb042fd74d8819b8e82ecbef8269bed8 Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Tue, 5 Sep 2017 12:49:22 +0300 Subject: [PATCH] Test for smart indent in parameters (KT-17648) Fixed in IDEA-173208 #KT-17648 Fixed --- .../kotlin/idea/editor/TypedHandlerTest.kt | 65 +++++++++++++++++-- 1 file changed, 61 insertions(+), 4 deletions(-) diff --git a/idea/tests/org/jetbrains/kotlin/idea/editor/TypedHandlerTest.kt b/idea/tests/org/jetbrains/kotlin/idea/editor/TypedHandlerTest.kt index 66b20a731e4..6125758fde2 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/editor/TypedHandlerTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/editor/TypedHandlerTest.kt @@ -16,9 +16,12 @@ package org.jetbrains.kotlin.idea.editor +import com.intellij.psi.codeStyle.CodeStyleSettingsManager import com.intellij.testFramework.EditorTestUtil import com.intellij.testFramework.LightCodeInsightTestCase import com.intellij.testFramework.LightPlatformCodeInsightTestCase +import com.intellij.testFramework.LightPlatformTestCase +import org.jetbrains.kotlin.idea.KotlinFileType class TypedHandlerTest : LightCodeInsightTestCase() { val dollar = '$' @@ -633,6 +636,41 @@ class TypedHandlerTest : LightCodeInsightTestCase() { ) } + fun testSmartEnterWithTabsOnConstructorParameters() { + doCharTypeTest( + '\n', + """ + |class A( + | a: Int, + |) + """, + """ + |class A( + | a: Int, + | + |) + """, + enableSmartEnterWithTabs() + ) + } + + fun testSmartEnterWithTabsInMethodParameters() { + doCharTypeTest( + '\n', + """ + |fun method( + | arg1: String, + |) {} + """, + """ + |fun method( + | arg1: String, + | + |) {} + """, + enableSmartEnterWithTabs() + ) + } fun testMoveThroughGT() { LightPlatformCodeInsightTestCase.configureFromFileText("a.kt", "val a: List>>") @@ -645,10 +683,29 @@ class TypedHandlerTest : LightCodeInsightTestCase() { doCharTypeTest('\'', "val c = ", "val c = ''") } - private fun doCharTypeTest(ch: Char, beforeText: String, afterText: String) { - LightPlatformCodeInsightTestCase.configureFromFileText("a.kt", beforeText.trimMargin()) - EditorTestUtil.performTypingAction(LightPlatformCodeInsightTestCase.getEditor(), ch) - checkResultByText(afterText.trimMargin()) + private fun enableSmartEnterWithTabs(): () -> Unit = { + val project = LightPlatformTestCase.getProject() + val indentOptions = CodeStyleSettingsManager.getInstance(project).currentSettings.getIndentOptions(KotlinFileType.INSTANCE) + indentOptions.USE_TAB_CHARACTER = true + indentOptions.SMART_TABS = true + } + + private fun doCharTypeTest(ch: Char, beforeText: String, afterText: String, settingsModifier: (() -> Unit)? = null) { + try { + if (settingsModifier != null) { + settingsModifier() + } + + LightPlatformCodeInsightTestCase.configureFromFileText("a.kt", beforeText.trimMargin()) + EditorTestUtil.performTypingAction(LightPlatformCodeInsightTestCase.getEditor(), ch) + checkResultByText(afterText.trimMargin()) + } + finally { + if (settingsModifier != null) { + val project = LightPlatformTestCase.getProject() + CodeStyleSettingsManager.getSettings(project).clearCodeStyleSettings() + } + } } private fun doLtGtTestNoAutoClose(initText: String) {