aboutsummaryrefslogtreecommitdiff
path: root/plugins/kotlin-as-java/src/test
diff options
context:
space:
mode:
authorIgnat Beresnev <ignat.beresnev@jetbrains.com>2023-11-10 11:46:54 +0100
committerGitHub <noreply@github.com>2023-11-10 11:46:54 +0100
commit8e5c63d035ef44a269b8c43430f43f5c8eebfb63 (patch)
tree1b915207b2b9f61951ddbf0ff2e687efd053d555 /plugins/kotlin-as-java/src/test
parenta44efd4ba0c2e4ab921ff75e0f53fc9335aa79db (diff)
downloaddokka-8e5c63d035ef44a269b8c43430f43f5c8eebfb63.tar.gz
dokka-8e5c63d035ef44a269b8c43430f43f5c8eebfb63.tar.bz2
dokka-8e5c63d035ef44a269b8c43430f43f5c8eebfb63.zip
Restructure the project to utilize included builds (#3174)
* Refactor and simplify artifact publishing * Update Gradle to 8.4 * Refactor and simplify convention plugins and build scripts Fixes #3132 --------- Co-authored-by: Adam <897017+aSemy@users.noreply.github.com> Co-authored-by: Oleg Yukhnevich <whyoleg@gmail.com>
Diffstat (limited to 'plugins/kotlin-as-java/src/test')
-rw-r--r--plugins/kotlin-as-java/src/test/kotlin/CompanionAsJavaTest.kt548
-rw-r--r--plugins/kotlin-as-java/src/test/kotlin/DRITranslationTest.kt129
-rw-r--r--plugins/kotlin-as-java/src/test/kotlin/JvmFieldTest.kt170
-rw-r--r--plugins/kotlin-as-java/src/test/kotlin/JvmNameTest.kt190
-rw-r--r--plugins/kotlin-as-java/src/test/kotlin/JvmOverloadsTest.kt60
-rw-r--r--plugins/kotlin-as-java/src/test/kotlin/JvmSyntheticTest.kt71
-rw-r--r--plugins/kotlin-as-java/src/test/kotlin/KotlinAsJavaPluginTest.kt618
-rw-r--r--plugins/kotlin-as-java/src/test/kotlin/KotlinAsJavaSignatureTest.kt137
8 files changed, 0 insertions, 1923 deletions
diff --git a/plugins/kotlin-as-java/src/test/kotlin/CompanionAsJavaTest.kt b/plugins/kotlin-as-java/src/test/kotlin/CompanionAsJavaTest.kt
deleted file mode 100644
index cba5e9ef..00000000
--- a/plugins/kotlin-as-java/src/test/kotlin/CompanionAsJavaTest.kt
+++ /dev/null
@@ -1,548 +0,0 @@
-/*
- * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
- */
-
-package kotlinAsJavaPlugin
-
-import org.jetbrains.dokka.base.testApi.testRunner.BaseAbstractTest
-import org.jetbrains.dokka.model.*
-import kotlin.test.*
-
-private const val COMPANION_NAME = "C"
-
-class CompanionAsJavaTest : BaseAbstractTest() {
- private val configuration = dokkaConfiguration {
- sourceSets {
- sourceSet {
- sourceRoots = listOf("src/")
- classpath += jvmStdlibPath!!
- }
- }
- }
-
- @Test
- fun `empty companion object should not be rendered`() {
- testInline(
- """
- |/src/main/kotlin/kotlinAsJavaPlugin/sample.kt
- |package kotlinAsJavaPlugin
- |class MyClass {
- | companion object $COMPANION_NAME {}
- |}
- """.trimMargin(),
- configuration,
- ) {
- documentablesTransformationStage = { module ->
- val parentClass = module.findClass("MyClass")
-
- assertCompanionNotRendered(parentClass)
- }
- }
- }
-
- @Test
- fun `companion object with only jvmField should not be rendered`() {
- testInline(
- """
- |/src/main/kotlin/kotlinAsJavaPlugin/sample.kt
- |package kotlinAsJavaPlugin
- |class MyClass {
- | companion object $COMPANION_NAME {
- | @JvmField val jvmFieldProp: String = ""
- | }
- |}
- """.trimMargin(),
- configuration,
- ) {
- documentablesTransformationStage = { module ->
- val parentClass = module.findClass("MyClass")
-
- assertCompanionNotRendered(parentClass)
- }
- }
- }
-
- @Test
- fun `companion property with jvmField should be static`() {
- testInline(
- """
- |/src/main/kotlin/kotlinAsJavaPlugin/sample.kt
- |package kotlinAsJavaPlugin
- |class MyClass {
- | companion object $COMPANION_NAME {
- | @JvmField val jvmFieldProp: String = ""
- | }
- |}
- """.trimMargin(),
- configuration,
- ) {
- documentablesTransformationStage = { module ->
- val parentClass = module.findClass("MyClass")
-
- val parentClassProperty = parentClass.properties.firstOrNull { it.name == "jvmFieldProp" }
- assertNotNull(parentClassProperty, "Parent class should contain the companion jvmField property")
- assertIsStatic(parentClassProperty)
- }
- }
- }
-
- @Test
- fun `companion object with only const should not be rendered`() {
- testInline(
- """
- |/src/main/kotlin/kotlinAsJavaPlugin/sample.kt
- |package kotlinAsJavaPlugin
- |class MyClass {
- | companion object $COMPANION_NAME {
- | const val constProp: Int = 0
- | }
- |}
- """.trimMargin(),
- configuration,
- ) {
- documentablesTransformationStage = { module ->
- val parentClass = module.findClass("MyClass")
-
- assertCompanionNotRendered(parentClass)
- }
- }
- }
-
- @Test
- fun `companion property with const should be static`() {
- testInline(
- """
- |/src/main/kotlin/kotlinAsJavaPlugin/sample.kt
- |package kotlinAsJavaPlugin
- |class MyClass {
- | companion object $COMPANION_NAME {
- | const val constProp: Int = 0
- | }
- |}
- """.trimMargin(),
- configuration,
- ) {
- documentablesTransformationStage = { module ->
- val parentClass = module.findClass("MyClass")
-
- val parentClassProperty = parentClass.properties.firstOrNull { it.name == "constProp" }
- assertNotNull(parentClassProperty, "Parent class should contain the companion const property")
- assertIsStatic(parentClassProperty)
- }
- }
- }
-
- @Test
- fun `companion object with only lateinit not rendered`() {
- testInline(
- """
- |/src/main/kotlin/kotlinAsJavaPlugin/sample.kt
- |package kotlinAsJavaPlugin
- |class MyClass {
- | companion object $COMPANION_NAME {
- | lateinit var lateInitProp: String
- | }
- |}
- """.trimMargin(),
- configuration,
- ) {
- documentablesTransformationStage = { module ->
- val parentClass = module.findClass("MyClass")
-
- assertCompanionNotRendered(parentClass)
- }
- }
- }
-
- @Test
- fun `companion property with lateinit should be static`() {
- testInline(
- """
- |/src/main/kotlin/kotlinAsJavaPlugin/sample.kt
- |package kotlinAsJavaPlugin
- |class MyClass {
- | companion object $COMPANION_NAME {
- | lateinit var lateInitProp: String
- | }
- |}
- """.trimMargin(),
- configuration,
- ) {
- documentablesTransformationStage = { module ->
- val parentClass = module.findClass("MyClass")
-
- val parentClassProperty = parentClass.properties.firstOrNull { it.name == "lateInitProp" }
- assertNotNull(parentClassProperty, "Parent class should contain the companion lateinit property")
- assertIsStatic(parentClassProperty)
- }
- }
- }
-
- @Test
- fun `companion object with only jvmStatic fun not rendered`() {
- testInline(
- """
- |/src/main/kotlin/kotlinAsJavaPlugin/sample.kt
- |package kotlinAsJavaPlugin
- |class MyClass {
- | companion object $COMPANION_NAME {
- | @JvmStatic fun staticFun(): String = ""
- | }
- |}
- """.trimMargin(),
- configuration,
- ) {
- documentablesTransformationStage = { module ->
- val parentClass = module.findClass("MyClass")
-
- assertCompanionNotRendered(parentClass)
- }
- }
- }
-
- @Test
- fun `companion function with JvmStatic should be static`() {
- testInline(
- """
- |/src/main/kotlin/kotlinAsJavaPlugin/sample.kt
- |package kotlinAsJavaPlugin
- |class MyClass {
- | companion object $COMPANION_NAME {
- | @JvmStatic fun staticFun(): String = ""
- | }
- |}
- """.trimMargin(),
- configuration,
- ) {
- documentablesTransformationStage = { module ->
- val parentClass = module.findClass("MyClass")
-
- val parentClassFunction = parentClass.functions.firstOrNull { it.name == "staticFun" }
- assertNotNull(parentClassFunction, "Parent class should contains the companion jvmStatic function")
- assertIsStatic(parentClassFunction)
- }
- }
- }
-
- @Test
- fun `companion object with nested classes is rendered`() {
- testInline(
- """
- |/src/main/kotlin/kotlinAsJavaPlugin/sample.kt
- |package kotlinAsJavaPlugin
- |class MyClass {
- | companion object $COMPANION_NAME {
- | @JvmStatic
- | fun staticFun1(): String = ""
- |
- | const val CONST_VAL: Int = 100
- |
- | class NestedClass
- | object NestedObject
- | }
- |}
- """.trimMargin(),
- configuration,
- ) {
- documentablesTransformationStage = { module ->
- val parentClass = module.findClass("MyClass")
-
- assertCompanionRendered(parentClass)
-
- val classLikes = parentClass.companion?.classlikes
- assertNotNull(classLikes)
- assertEquals(2, classLikes.size,
- "Classlike list should contains nested class and object")
- assertTrue(classLikes.any { it.name == "NestedClass" })
- assertTrue(classLikes.any { it.name == "NestedObject" })
-
- }
- }
- }
-
- @Test
- fun `companion object with supertype is rendered`() {
- testInline(
- """
- |/src/main/kotlin/kotlinAsJavaPlugin/sample.kt
- |package kotlinAsJavaPlugin
- |
- |class Parent
- |interface IParent
- |class MyClass {
- | companion object $COMPANION_NAME : Parent(), IParent {
- | }
- |}
- """.trimMargin(),
- configuration,
- ) {
- documentablesTransformationStage = { module ->
- val parentClass = module.findClass("MyClass")
-
- assertCompanionRendered(parentClass)
- }
- }
- }
-
- @Test
- fun `companion object rendered for own properties`() {
- testInline(
- """
- |/src/main/kotlin/kotlinAsJavaPlugin/sample.kt
- |package kotlinAsJavaPlugin
- |class MyClass {
- | companion object $COMPANION_NAME {
- | @JvmField
- | val jvmField: String = ""
- | const val contVal: Int = 0
- | lateinit var lateInit: String
- |
- | val rendered: Int = TODO()
- | }
- |}
- """.trimMargin(),
- configuration,
- ) {
- documentablesTransformationStage = { module ->
- val parentClass = module.findClass("MyClass")
-
- assertCompanionRendered(parentClass)
-
- val properties = parentClass.companion?.properties
-
- assertNotNull(properties)
- assertEquals(2, properties.size) // including INSTANCE
- assertTrue(properties.any { it.name == "rendered" })
- assertTrue(properties.none { it.name == "jvmField1" })
- assertTrue(properties.none { it.name == "contVal" })
- assertTrue(properties.none { it.name == "lateInit" })
- }
- }
- }
-
- @Test
- fun `companion object rendered for own functions`() {
- testInline(
- """
- |/src/main/kotlin/kotlinAsJavaPlugin/sample.kt
- |package kotlinAsJavaPlugin
- |class MyClass {
- | companion object $COMPANION_NAME {
- | @JvmStatic
- | fun staticFun(): String = ""
- |
- | fun renderedFun(): String = ""
- | }
- |}
- """.trimMargin(),
- configuration,
- ) {
- documentablesTransformationStage = { module ->
- val parentClass = module.findClass("MyClass")
-
- assertCompanionRendered(parentClass)
-
- val functions = parentClass.companion?.functions
-
- assertNotNull(functions)
- assertEquals(1, functions.size)
- assertTrue(functions.any { it.name == "renderedFun" })
- assertTrue(functions.none { it.name == "staticFun" })
- }
- }
- }
-
- @Test
- fun `companion const value should be rendered as public by default`() {
- testInline(
- """
- |/src/main/kotlin/kotlinAsJavaPlugin/sample.kt
- |package kotlinAsJavaPlugin
- |class MyClass {
- | companion object $COMPANION_NAME {
- | const val constProp: String = ""
- | }
- |}
- """.trimMargin(),
- configuration,
- ) {
- documentablesTransformationStage = { module ->
- val parentClass = module.findClass("MyClass")
-
- assertEquals(
- JavaVisibility.Public,
- parentClass.properties.firstOrNull()?.visibility?.values?.first()
- )
- assertNull(parentClass.findFunction("constProp"), "There is no getter for the cont field")
- }
- }
- }
-
- @Test
- fun `companion const value should preserve Java modifier`() {
- testInline(
- """
- |/src/main/kotlin/kotlinAsJavaPlugin/sample.kt
- |package kotlinAsJavaPlugin
- |class MyClass {
- | companion object $COMPANION_NAME {
- | protected const val constProp: String = ""
- | }
- |}
- """.trimMargin(),
- dokkaConfiguration {
- sourceSets {
- sourceSet {
- sourceRoots = listOf("src/")
- classpath += jvmStdlibPath!!
- documentedVisibilities = setOf(
- org.jetbrains.dokka.DokkaConfiguration.Visibility.PUBLIC,
- org.jetbrains.dokka.DokkaConfiguration.Visibility.PROTECTED
- )
- }
- }
- },
- ) {
- documentablesTransformationStage = { module ->
- val parentClass = module.findClass("MyClass")
-
- assertEquals(
- JavaVisibility.Protected,
- parentClass.properties.firstOrNull()?.visibility?.values?.first()
- )
- assertNull(parentClass.findFunction("constProp"), "There is no getter for the cont field")
- }
- }
- }
-
- @Test
- fun `companion lateinit value should be rendered as public by default`() {
- testInline(
- """
- |/src/main/kotlin/kotlinAsJavaPlugin/sample.kt
- |package kotlinAsJavaPlugin
- |class MyClass {
- | companion object $COMPANION_NAME {
- | lateinit var lateInitProp: String
- | }
- |}
- """.trimMargin(),
- configuration,
- ) {
- documentablesTransformationStage = { module ->
- val parentClass = module.findClass("MyClass")
-
- assertEquals(
- JavaVisibility.Public,
- parentClass.properties.firstOrNull()?.visibility?.values?.first()
- )
- assertNull(parentClass.findFunction("lateInitProp"), "There is no getter for the cont field")
- }
- }
- }
-
- @Test
- fun `named companion instance property should be rendered if companion rendered`() {
- testInline(
- """
- |/src/main/kotlin/kotlinAsJavaPlugin/sample.kt
- |package kotlinAsJavaPlugin
- |class MyClass {
- | companion object $COMPANION_NAME {
- | var property: String = ""
- | }
- |}
- """.trimMargin(),
- configuration,
- ) {
- documentablesTransformationStage = { module ->
- val parentClass = module.findClass("MyClass")
-
- assertNotNull(parentClass.properties.any { it.name == COMPANION_NAME })
- }
- }
- }
-
- @Test
- fun `default named companion instance property should be rendered if companion rendered`() {
- testInline(
- """
- |/src/main/kotlin/kotlinAsJavaPlugin/sample.kt
- |package kotlinAsJavaPlugin
- |class MyClass {
- | companion object {
- | var property: String = ""
- | }
- |}
- """.trimMargin(),
- configuration,
- ) {
- documentablesTransformationStage = { module ->
- val parentClass = module.findClass("MyClass")
-
- assertTrue(parentClass.properties.any { it.name == "Companion" })
- }
- }
- }
-
- @Test
- fun `companion instance property should be hidden if companion not rendered`() {
- testInline(
- """
- |/src/main/kotlin/kotlinAsJavaPlugin/sample.kt
- |package kotlinAsJavaPlugin
- |class MyClass {
- | companion object $COMPANION_NAME {
- | const val property: String = ""
- | }
- |}
- """.trimMargin(),
- configuration,
- ) {
- documentablesTransformationStage = { module ->
- val parentClass = module.findClass("MyClass")
-
- assertTrue(parentClass.properties.none { it.name == COMPANION_NAME })
- }
- }
- }
-}
-
-private fun DModule.findClass(name: String) = packages.flatMap { it.classlikes }
- .firstOrNull { it.name == name } as DClass
-
-private fun DClass.findFunction(name: String) = functions.firstOrNull { it.name.contains(name, ignoreCase = true) }
-
-private fun assertCompanionRendered(parentClass: DClass) {
- assertNotNull(parentClass.companion, "Companion should not be null")
- assertTrue(
- parentClass.classlikes.any { it.name == COMPANION_NAME },
- "Companion should be in classlikes list"
- )
-}
-
-private fun assertCompanionNotRendered(parentClass: DClass) {
- assertNull(parentClass.companion, "Companion should be null")
- assertTrue(
- parentClass.classlikes.none { it.name == COMPANION_NAME },
- "Companion should not be in classlikes list"
- )
-}
-
-private fun assertIsStatic(property: DProperty) {
- val extra = property.extra[AdditionalModifiers]
- assertNotNull(extra, "extra for property is present")
- assertTrue(
- extra.content.values.contains(setOf(ExtraModifiers.JavaOnlyModifiers.Static)),
- "Property contains extra modifier static"
- )
-}
-
-private fun assertIsStatic(function: DFunction) {
- val extra = function.extra[AdditionalModifiers]
- assertNotNull(extra, "extra for property is present")
- assertTrue(
- extra.content.values.contains(setOf(ExtraModifiers.JavaOnlyModifiers.Static)),
- "Function contains extra modifier static"
- )
-}
diff --git a/plugins/kotlin-as-java/src/test/kotlin/DRITranslationTest.kt b/plugins/kotlin-as-java/src/test/kotlin/DRITranslationTest.kt
deleted file mode 100644
index bdea1cb4..00000000
--- a/plugins/kotlin-as-java/src/test/kotlin/DRITranslationTest.kt
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
- */
-
-package kotlinAsJavaPlugin
-
-
-import org.jetbrains.dokka.base.testApi.testRunner.BaseAbstractTest
-import org.jetbrains.dokka.model.DClass
-import org.jetbrains.dokka.model.DEnum
-import kotlin.test.Test
-import kotlin.test.assertTrue
-
-class DRITranslationTest : BaseAbstractTest() {
- val configuration = dokkaConfiguration {
- sourceSets {
- sourceSet {
- sourceRoots = listOf("src/")
- classpath += jvmStdlibPath!!
- }
- }
- }
-
- @Test
- fun `should correctly handle nested classes`() {
- testInline(
- """
- |/src/main/kotlin/kotlinAsJavaPlugin/sample.kt
- |package kotlinAsJavaPlugin
- |class A {
- | class B(val x: String)
- |}
- |class C {
- | class B(val x: String)
- |}
- """.trimMargin(),
- configuration,
- ) {
- documentablesTransformationStage = { module ->
- val nestedClasslikesDRIs = module.packages.flatMap { it.classlikes }.flatMap { it.classlikes }.map { it.dri }
- val driRegex = "[AC]\\.B".toRegex()
-
- nestedClasslikesDRIs.forEach { dri ->
- assertTrue(driRegex.matches(dri.classNames.toString()))
- }
- }
- }
- }
-
- @Test
- fun `should correctly handle interface methods`() {
- testInline(
- """
- |/src/main/kotlin/kotlinAsJavaPlugin/sample.kt
- |package kotlinAsJavaPlugin
- |interface A {
- | fun b()
- |}
- """.trimMargin(),
- configuration,
- ) {
- documentablesTransformationStage = { module ->
- val nestedFunctionDRI = module.packages.flatMap { it.classlikes }.flatMap { it.functions }.filter { it.name == "b" }.map { it.dri }.single()
-
- assertTrue(nestedFunctionDRI.classNames == "A")
- }
- }
- }
-
- @Test
- fun `should correctly handle object methods`() {
- testInline(
- """
- |/src/main/kotlin/kotlinAsJavaPlugin/sample.kt
- |package kotlinAsJavaPlugin
- |object A {
- | fun b() {}
- |}
- """.trimMargin(),
- configuration,
- ) {
- documentablesTransformationStage = { module ->
- val nestedFunctionDRI = module.packages.flatMap { it.classlikes }.flatMap { it.functions }.filter { it.name == "b" }.map { it.dri }.single()
-
- assertTrue(nestedFunctionDRI.classNames == "A")
- }
- }
- }
-
- @Test
- fun `should correctly handle enum functions`() {
- testInline(
- """
- |/src/main/kotlin/kotlinAsJavaPlugin/sample.kt
- |package kotlinAsJavaPlugin
- |enum class A(private val x: Int) {
- | X(0);
- | fun b() = x
- |}
- """.trimMargin(),
- configuration,
- ) {
- documentablesTransformationStage = { module ->
- val nestedFunctionDRI = (module.packages.single().classlikes.single() as DEnum).functions.filter { it.name == "b" }.map { it.dri }.single()
-
- assertTrue(nestedFunctionDRI.classNames == "A")
- }
- }
- }
-
- @Test
- fun `should correctly handle nested classes' constructors`() {
- testInline(
- """
- |/src/main/kotlin/kotlinAsJavaPlugin/sample.kt
- |package kotlinAsJavaPlugin
- |class A {
- | class B(val x: String)
- |}
- """.trimMargin(),
- configuration,
- ) {
- documentablesTransformationStage = { module ->
- val constructorDRI = (module.packages.flatMap { it.classlikes }.flatMap { it.classlikes }.single() as DClass).constructors.single().dri
- assertTrue(constructorDRI.classNames == "A.B")
- }
- }
- }
-}
diff --git a/plugins/kotlin-as-java/src/test/kotlin/JvmFieldTest.kt b/plugins/kotlin-as-java/src/test/kotlin/JvmFieldTest.kt
deleted file mode 100644
index 6167e13a..00000000
--- a/plugins/kotlin-as-java/src/test/kotlin/JvmFieldTest.kt
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
- */
-
-package kotlinAsJavaPlugin
-
-import org.jetbrains.dokka.base.testApi.testRunner.BaseAbstractTest
-import org.jetbrains.dokka.model.AdditionalModifiers
-import org.jetbrains.dokka.model.ExtraModifiers
-import org.jetbrains.dokka.model.JavaVisibility
-import kotlin.test.*
-
-class JvmFieldTest : BaseAbstractTest() {
- val configuration = dokkaConfiguration {
- sourceSets {
- sourceSet {
- sourceRoots = listOf("src/")
- classpath += jvmStdlibPath!!
- }
- }
- }
-
- @Test
- fun `should keep properties annotated with JvmField as properties`() {
- testInline(
- """
- |/src/main/kotlin/kotlinAsJavaPlugin/sample.kt
- |package kotlinAsJavaPlugin
- |class SampleClass(@JvmField val property: String, val otherProperty: String)
- """.trimMargin(),
- configuration,
- ) {
- documentablesTransformationStage = { module ->
- val classLike = module.packages.flatMap { it.classlikes }.first()
- assertNotNull(classLike.properties.firstOrNull { it.name == "property" })
- assertEquals(
- listOf("getOtherProperty"),
- classLike.functions.map { it.name })
- }
- }
- }
-
- @Test
- fun `should work for top-level property`(){
- testInline(
- """
- |/src/main/kotlin/kotlinAsJavaPlugin/sample.kt
- |package kotlinAsJavaPlugin
- |@JvmField
- |val property: String = TODO()
- """.trimMargin(),
- configuration,
- ) {
- documentablesTransformationStage = { module ->
- val classLike = module.packages.flatMap { it.classlikes }.first()
- assertNotNull(classLike.properties.firstOrNull { it.name == "property" })
- assertEquals(
- emptyList(),
- classLike.functions.map { it.name })
- }
- }
- }
-
- @Test
- fun `properties without JvmName should be kept private`() {
- testInline(
- """
- |/src/main/kotlin/kotlinAsJavaPlugin/sample.kt
- |package kotlinAsJavaPlugin
- |class SampleClass(val property: String)
- """.trimMargin(),
- configuration,
- ) {
- documentablesTransformationStage = { module ->
- val classLike = module.packages.flatMap { it.classlikes }.first()
- assertEquals(JavaVisibility.Private, classLike.properties.firstOrNull()?.visibility?.values?.first())
- assertNotNull(classLike.functions.firstOrNull { it.name.startsWith("get") })
- assertEquals(
- JavaVisibility.Public,
- classLike.functions.first { it.name.startsWith("get") }.visibility.values.first()
- )
- }
- }
- }
-
- @Test
- fun `object jvmfield property should have no getters`(){
- testInline(
- """
- |/src/main/kotlin/kotlinAsJavaPlugin/sample.kt
- |package kotlinAsJavaPlugin
- |object MyObject {
- | @JvmField
- | val property: String = TODO()
- |}
- """.trimMargin(),
- configuration,
- ) {
- documentablesTransformationStage = { module ->
- val classLike = module.packages.flatMap { it.classlikes }.first()
- val property = classLike.properties.singleOrNull { it.name == "property" }
- assertNotNull(property)
- assertEquals(
- emptyList(),
- classLike.functions.map { it.name }
- )
- assertNull(property.getter)
- assertNull(property.setter)
- }
- }
- }
-
- @Test
- fun `enum jvmfield property should have no getters`(){
- testInline(
- """
- |/src/main/kotlin/kotlinAsJavaPlugin/sample.kt
- |package kotlinAsJavaPlugin
- |enum class MyEnum {
- | ITEM;
- |
- | @JvmField
- | val property: String = TODO()
- |}
- """.trimMargin(),
- configuration,
- ) {
- documentablesTransformationStage = { module ->
- val classLike = module.packages.flatMap { it.classlikes }.first()
- val property = classLike.properties.singleOrNull { it.name == "property" }
- assertNotNull(property)
- assertEquals(
- emptyList(),
- classLike.functions
- .filter{ it.name.contains("property", ignoreCase = true) }
- .map { it.name }
- )
- assertNull(property.getter)
- assertNull(property.setter)
- }
- }
- }
-
-
- @Test
- fun `object jvmfield property should be static`(){
- testInline(
- """
- |/src/main/kotlin/kotlinAsJavaPlugin/sample.kt
- |package kotlinAsJavaPlugin
- |object MyObject {
- | @JvmField
- | val property: String = TODO()
- |}
- """.trimMargin(),
- configuration,
- ) {
- documentablesTransformationStage = { module ->
- val classLike = module.packages.flatMap { it.classlikes }.first()
- val property = classLike.properties.singleOrNull { it.name == "property" }
- assertNotNull(property)
-
- val extra = property.extra[AdditionalModifiers]
- assertNotNull(extra, "Additional modifiers for property are exist")
- assertTrue(extra.content.values.contains(setOf(ExtraModifiers.JavaOnlyModifiers.Static)),
- "Extra modifiers contains static")
- }
- }
- }
-}
diff --git a/plugins/kotlin-as-java/src/test/kotlin/JvmNameTest.kt b/plugins/kotlin-as-java/src/test/kotlin/JvmNameTest.kt
deleted file mode 100644
index 7a087fb7..00000000
--- a/plugins/kotlin-as-java/src/test/kotlin/JvmNameTest.kt
+++ /dev/null
@@ -1,190 +0,0 @@
-/*
- * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
- */
-
-package kotlinAsJavaPlugin
-
-import org.jetbrains.dokka.base.testApi.testRunner.BaseAbstractTest
-import org.jetbrains.dokka.links.Callable
-import org.jetbrains.dokka.links.DRI
-import org.jetbrains.dokka.links.TypeConstructor
-import org.jetbrains.dokka.model.Annotations
-import org.jetbrains.dokka.model.DClass
-import org.jetbrains.dokka.model.isJvmName
-import kotlin.test.Test
-import kotlin.test.assertEquals
-import kotlin.test.assertNull
-
-class JvmNameTest : BaseAbstractTest() {
- val configuration = dokkaConfiguration {
- sourceSets {
- sourceSet {
- sourceRoots = listOf("src/")
- classpath += jvmStdlibPath!!
- }
- }
- }
-
- @Test
- fun `should change name for class containing top level function`() {
- testInline(
- """
- |/src/main/kotlin/kotlinAsJavaPlugin/sample.kt
- |@file:JvmName("CustomJvmName")
- |package kotlinAsJavaPlugin
- |fun sample(): String = ""
- """.trimMargin(),
- configuration,
- ) {
- documentablesTransformationStage = { module ->
- val expectedClassLikeDri = DRI(
- packageName = "kotlinAsJavaPlugin",
- classNames = "CustomJvmName",
- )
- val classLike = module.packages.flatMap { it.classlikes }.first()
- assertEquals(expectedClassLikeDri, classLike.dri)
- assertEquals("CustomJvmName", classLike.name)
- }
- }
- }
-
- @Test
- fun `should change name for top level function`() {
- testInline(
- """
- |/src/main/kotlin/kotlinAsJavaPlugin/sample.kt
- |@file:JvmName("CustomJvmName")
- |package kotlinAsJavaPlugin
- |@JvmName("jvmSample")
- |fun sample(): String = ""
- """.trimMargin(),
- configuration,
- ) {
- documentablesTransformationStage = { module ->
- val expectedFunctionDri = DRI(
- packageName = "kotlinAsJavaPlugin",
- classNames = "CustomJvmName",
- callable = Callable(
- "jvmSample",
- receiver = null,
- params = emptyList()
- )
- )
- val function = module.packages.flatMap { it.classlikes }.flatMap { it.functions }.first()
- assertEquals(expectedFunctionDri, function.dri)
- assertEquals("jvmSample", function.name)
- }
- }
- }
-
- @Test
- fun `should change name of a setter fo