181: StringTemplateExpressionManipulatorTest compilation fix
This commit is contained in:
committed by
Nikolay Krasko
parent
39f7ecc9a3
commit
6e1edb420e
@@ -0,0 +1,71 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2015 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.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.psi
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase
|
||||||
|
import org.jetbrains.kotlin.idea.test.KotlinLightProjectDescriptor
|
||||||
|
import com.intellij.psi.ElementManipulators
|
||||||
|
import org.junit.Assert.*
|
||||||
|
import com.intellij.openapi.util.TextRange
|
||||||
|
|
||||||
|
class StringTemplateExpressionManipulatorTest : KotlinLightCodeInsightFixtureTestCase() {
|
||||||
|
fun testSingleQuoted() {
|
||||||
|
doTestContentChange("\"a\"", "b", "\"b\"")
|
||||||
|
doTestContentChange("\"\"", "b", "\"b\"")
|
||||||
|
doTestContentChange("\"a\"", "\t", "\"\\t\"")
|
||||||
|
doTestContentChange("\"a\"", "\n", "\"\\n\"")
|
||||||
|
doTestContentChange("\"a\"", "\\t", "\"\\\\t\"")
|
||||||
|
}
|
||||||
|
|
||||||
|
fun testUnclosedQuoted() {
|
||||||
|
doTestContentChange("\"a", "b", "\"b")
|
||||||
|
doTestContentChange("\"", "b", "\"b")
|
||||||
|
doTestContentChange("\"a", "\t", "\"\\t")
|
||||||
|
doTestContentChange("\"a", "\n", "\"\\n")
|
||||||
|
doTestContentChange("\"a", "\\t", "\"\\\\t")
|
||||||
|
}
|
||||||
|
|
||||||
|
fun testTripleQuoted() {
|
||||||
|
doTestContentChange("\"\"\"a\"\"\"", "b", "\"\"\"b\"\"\"")
|
||||||
|
doTestContentChange("\"\"\"\"\"\"", "b", "\"\"\"b\"\"\"")
|
||||||
|
doTestContentChange("\"\"\"a\"\"\"", "\t", "\"\"\"\t\"\"\"")
|
||||||
|
doTestContentChange("\"\"\"a\"\"\"", "\n", "\"\"\"\n\"\"\"")
|
||||||
|
doTestContentChange("\"\"\"a\"\"\"", "\\t", "\"\"\"\\t\"\"\"")
|
||||||
|
}
|
||||||
|
|
||||||
|
fun testUnclosedTripleQuoted() {
|
||||||
|
doTestContentChange("\"\"\"a", "b", "\"\"\"b")
|
||||||
|
doTestContentChange("\"\"\"", "b", "\"\"\"b")
|
||||||
|
doTestContentChange("\"\"\"a", "\t", "\"\"\"\t")
|
||||||
|
doTestContentChange("\"\"\"a", "\n", "\"\"\"\n")
|
||||||
|
doTestContentChange("\"\"\"a", "\\t", "\"\"\"\\t")
|
||||||
|
}
|
||||||
|
|
||||||
|
fun testReplaceRange() {
|
||||||
|
doTestContentChange("\"abc\"", "x", range = TextRange(2,3), expected = "\"axc\"")
|
||||||
|
doTestContentChange("\"\"\"abc\"\"\"", "x", range = TextRange(4,5), expected = "\"\"\"axc\"\"\"")
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun doTestContentChange(original: String, newContent: String, expected: String, range: TextRange? = null) {
|
||||||
|
val expression = KtPsiFactory(project).createExpression(original) as KtStringTemplateExpression
|
||||||
|
val manipulator = ElementManipulators.getNotNullManipulator(expression)
|
||||||
|
val newExpression = if (range == null) manipulator.handleContentChange(expression, newContent) else manipulator.handleContentChange(expression, range, newContent)
|
||||||
|
assertEquals(expected, newExpression?.text)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getProjectDescriptor() = KotlinLightProjectDescriptor.INSTANCE
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user