60 lines
2.2 KiB
Kotlin
60 lines
2.2 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.PsiElement
|
|
import com.intellij.psi.PsiElementVisitor
|
|
import org.jetbrains.kotlin.idea.KotlinLanguage
|
|
import org.jetbrains.kotlin.psi.KtFile
|
|
import org.jetbrains.uast.DEFAULT_TYPES_LIST
|
|
import org.jetbrains.uast.UFile
|
|
import org.jetbrains.uast.UastLanguagePlugin
|
|
import org.jetbrains.uast.test.env.kotlin.assertEqualsToFile
|
|
import java.io.File
|
|
|
|
class AlternativesRenderLogTest : AbstractKotlinUastTest() {
|
|
|
|
|
|
fun testClassAnnotation() = doTest("ClassAnnotation")
|
|
|
|
fun testInnerClasses() = doTest("InnerClasses")
|
|
|
|
fun testLocalDeclarations() = doTest("LocalDeclarations")
|
|
|
|
fun testParameterPropertyWithAnnotation() = doTest("ParameterPropertyWithAnnotation")
|
|
|
|
override fun check(testName: String, file: UFile) {
|
|
val valuesFile = getTestFile(testName, "altlog.txt")
|
|
assertEqualsToFile("alternatives conversion result", valuesFile, file.asMultiplesTargetConversionResult())
|
|
}
|
|
|
|
private fun UFile.asMultiplesTargetConversionResult(): String {
|
|
val plugin = UastLanguagePlugin.byLanguage(KotlinLanguage.INSTANCE)!!
|
|
val builder = StringBuilder()
|
|
var level = 0
|
|
(this.psi as KtFile).accept(object : PsiElementVisitor() {
|
|
override fun visitElement(element: PsiElement) {
|
|
val uElement = plugin.convertToAlternatives(element, DEFAULT_TYPES_LIST).toList()
|
|
|
|
if (uElement.any()) {
|
|
builder.append(" ".repeat(level))
|
|
builder.append("[${uElement.size}]:")
|
|
builder.append(uElement.joinToString(", ", "[", "]") { it.asLogString() })
|
|
builder.appendLine()
|
|
}
|
|
if (uElement.any()) level++
|
|
element.acceptChildren(this)
|
|
if (uElement.any()) level--
|
|
}
|
|
})
|
|
return builder.toString()
|
|
}
|
|
|
|
private fun getTestFile(testName: String, ext: String) =
|
|
File(File(TEST_KOTLIN_MODEL_DIR, testName).canonicalPath + '.' + ext)
|
|
|
|
}
|