65244b4bea
Change the copyright from "JetBrains s.r.o." to "JetBrains s.r.o. and Kotlin Project contributors" Update only 2 lines copyright.
159 lines
7.5 KiB
Kotlin
159 lines
7.5 KiB
Kotlin
/*
|
|
* Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
|
*/
|
|
|
|
package org.jetbrains.uast.test.kotlin
|
|
|
|
import com.intellij.psi.util.PsiTreeUtil
|
|
import org.jetbrains.kotlin.psi.KtClass
|
|
import org.jetbrains.kotlin.psi.KtParameter
|
|
import org.jetbrains.kotlin.psi.KtProperty
|
|
import org.jetbrains.kotlin.test.testFramework.KtUsefulTestCase.assertInstanceOf
|
|
import org.jetbrains.uast.*
|
|
import org.junit.Test
|
|
|
|
class KotlinUastAlternativesTest : AbstractKotlinUastTest() {
|
|
override fun check(testName: String, file: UFile) {
|
|
}
|
|
|
|
@Test
|
|
fun testPropertyAlternatives() {
|
|
doTest("ManyAlternatives") { name, file ->
|
|
val index = file.psi.text.indexOf("writebleProp")
|
|
val ktProperty = PsiTreeUtil.getParentOfType(file.psi.findElementAt(index), KtProperty::class.java)!!
|
|
val plugin = UastLanguagePlugin.byLanguage(ktProperty.language)!!
|
|
|
|
plugin.convertToAlternatives<UElement>(ktProperty, arrayOf(UField::class.java)).let {
|
|
assertEquals(
|
|
"@org.jetbrains.annotations.NotNull private var writebleProp: int = 0",
|
|
it.joinToString(transform = UElement::asRenderString)
|
|
)
|
|
}
|
|
|
|
plugin.convertToAlternatives<UElement>(ktProperty, arrayOf(UMethod::class.java, UField::class.java)).let {
|
|
assertEquals(
|
|
"public final fun getWritebleProp() : int = UastEmptyExpression, " +
|
|
"public final fun setWritebleProp(@null p: int) : void = UastEmptyExpression, " +
|
|
"@org.jetbrains.annotations.NotNull private var writebleProp: int = 0",
|
|
it.joinToString(transform = UElement::asRenderString)
|
|
)
|
|
}
|
|
|
|
plugin.convertToAlternatives<UElement>(ktProperty, arrayOf(UField::class.java, UMethod::class.java)).let {
|
|
assertEquals(
|
|
"@org.jetbrains.annotations.NotNull private var writebleProp: int = 0, " +
|
|
"public final fun getWritebleProp() : int = UastEmptyExpression, " +
|
|
"public final fun setWritebleProp(@null p: int) : void = UastEmptyExpression",
|
|
it.joinToString(transform = UElement::asRenderString)
|
|
)
|
|
}
|
|
|
|
plugin.convertToAlternatives<UElement>(ktProperty, arrayOf(UDeclaration::class.java)).let {
|
|
assertEquals(
|
|
"@org.jetbrains.annotations.NotNull private var writebleProp: int = 0, " +
|
|
"public final fun getWritebleProp() : int = UastEmptyExpression, " +
|
|
"public final fun setWritebleProp(@null p: int) : void = UastEmptyExpression",
|
|
it.joinToString(transform = UElement::asRenderString)
|
|
)
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
|
|
@Test
|
|
fun testParamAndPropertylternatives() {
|
|
doTest("ManyAlternatives") { name, file ->
|
|
val index = file.psi.text.indexOf("paramAndProp")
|
|
val ktProperty = PsiTreeUtil.getParentOfType(file.psi.findElementAt(index), KtParameter::class.java)!!
|
|
val plugin = UastLanguagePlugin.byLanguage(ktProperty.language)!!
|
|
|
|
plugin.convertToAlternatives<UElement>(ktProperty, arrayOf(UField::class.java)).let {
|
|
assertInstanceOf(it.single(), UField::class.java)
|
|
assertEquals(
|
|
"@org.jetbrains.annotations.NotNull private final var paramAndProp: java.lang.String",
|
|
it.joinToString(transform = UElement::asRenderString)
|
|
)
|
|
}
|
|
|
|
plugin.convertToAlternatives<UElement>(ktProperty, arrayOf(UParameter::class.java)).let {
|
|
assertInstanceOf(it.single(), UParameter::class.java)
|
|
assertEquals(
|
|
"@org.jetbrains.annotations.NotNull var paramAndProp: java.lang.String",
|
|
it.joinToString(transform = UElement::asRenderString)
|
|
)
|
|
}
|
|
|
|
plugin.convertToAlternatives<UElement>(ktProperty, arrayOf(UElement::class.java)).let {
|
|
assertEquals(
|
|
"@org.jetbrains.annotations.NotNull var paramAndProp: java.lang.String, " +
|
|
"@org.jetbrains.annotations.NotNull private final var paramAndProp: java.lang.String, " +
|
|
"public final fun getParamAndProp() : java.lang.String = UastEmptyExpression",
|
|
it.joinToString(transform = UElement::asRenderString)
|
|
)
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
@Test
|
|
fun testJustParamAlternatives() {
|
|
doTest("ManyAlternatives") { name, file ->
|
|
val index = file.psi.text.indexOf("justParam")
|
|
val ktProperty = PsiTreeUtil.getParentOfType(file.psi.findElementAt(index), KtParameter::class.java)!!
|
|
val plugin = UastLanguagePlugin.byLanguage(ktProperty.language)!!
|
|
|
|
plugin.convertToAlternatives<UElement>(ktProperty, arrayOf(UField::class.java)).let {
|
|
assertEquals("", it.joinToString(transform = UElement::asRenderString))
|
|
}
|
|
|
|
plugin.convertToAlternatives<UElement>(ktProperty, arrayOf(UParameter::class.java)).let {
|
|
assertInstanceOf(it.single(), UParameter::class.java)
|
|
assertEquals(
|
|
"@org.jetbrains.annotations.NotNull var justParam: int",
|
|
it.joinToString(transform = UElement::asRenderString)
|
|
)
|
|
}
|
|
|
|
plugin.convertToAlternatives<UElement>(ktProperty, arrayOf(UElement::class.java)).let {
|
|
assertEquals(
|
|
"@org.jetbrains.annotations.NotNull var justParam: int",
|
|
it.joinToString(transform = UElement::asRenderString)
|
|
)
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
@Test
|
|
fun testPrimaryConstructorAlternatives() {
|
|
doTest("ManyAlternatives") { name, file ->
|
|
val index = file.psi.text.indexOf("ClassA")
|
|
val ktProperty = PsiTreeUtil.getParentOfType(file.psi.findElementAt(index), KtClass::class.java)!!
|
|
val plugin = UastLanguagePlugin.byLanguage(ktProperty.language)!!
|
|
|
|
plugin.convertToAlternatives<UElement>(ktProperty, arrayOf(UClass::class.java)).let {
|
|
assertEquals("public final class ClassA {", it.joinToString { it.asRenderString().lineSequence().first() })
|
|
}
|
|
|
|
plugin.convertToAlternatives<UElement>(ktProperty, arrayOf(UClass::class.java, UMethod::class.java)).let {
|
|
assertEquals(
|
|
"public final class ClassA {, " +
|
|
"public fun ClassA(@org.jetbrains.annotations.NotNull justParam: int, @org.jetbrains.annotations.NotNull paramAndProp: java.lang.String) = UastEmptyExpression",
|
|
it.joinToString { it.asRenderString().lineSequence().first() }
|
|
)
|
|
}
|
|
|
|
plugin.convertToAlternatives<UElement>(ktProperty, arrayOf(UElement::class.java)).let {
|
|
assertEquals(
|
|
"public final class ClassA {, " +
|
|
"public fun ClassA(@org.jetbrains.annotations.NotNull justParam: int, @org.jetbrains.annotations.NotNull paramAndProp: java.lang.String) = UastEmptyExpression",
|
|
it.joinToString { it.asRenderString().lineSequence().first() }
|
|
)
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
} |