aboutsummaryrefslogtreecommitdiff
path: root/plugins/base/src/test/kotlin/superFields
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/base/src/test/kotlin/superFields')
-rw-r--r--plugins/base/src/test/kotlin/superFields/DescriptorSuperPropertiesTest.kt366
-rw-r--r--plugins/base/src/test/kotlin/superFields/PsiSuperFieldsTest.kt177
2 files changed, 0 insertions, 543 deletions
diff --git a/plugins/base/src/test/kotlin/superFields/DescriptorSuperPropertiesTest.kt b/plugins/base/src/test/kotlin/superFields/DescriptorSuperPropertiesTest.kt
deleted file mode 100644
index 8f984485..00000000
--- a/plugins/base/src/test/kotlin/superFields/DescriptorSuperPropertiesTest.kt
+++ /dev/null
@@ -1,366 +0,0 @@
-/*
- * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
- */
-
-package superFields
-
-import org.jetbrains.dokka.DokkaConfiguration
-import org.jetbrains.dokka.base.testApi.testRunner.BaseAbstractTest
-import org.jetbrains.dokka.links.DRI
-import org.jetbrains.dokka.model.InheritedMember
-import org.jetbrains.dokka.model.IsVar
-import org.jetbrains.dokka.model.KotlinVisibility
-import utils.OnlyDescriptors
-import kotlin.test.Test
-import kotlin.test.assertEquals
-import kotlin.test.assertNotNull
-import kotlin.test.assertNull
-
-class DescriptorSuperPropertiesTest : BaseAbstractTest() {
-
- private val commonTestConfiguration = dokkaConfiguration {
- sourceSets {
- sourceSet {
- sourceRoots = listOf("src/")
- analysisPlatform = "jvm"
- name = "jvm"
- }
- }
- }
-
- @Test
- fun `kotlin inheriting java should append only getter`() {
- testInline(
- """
- |/src/test/A.java
- |package test;
- |public class A {
- | private int a = 1;
- | public int getA() { return a; }
- |}
- |
- |/src/test/B.kt
- |package test
- |class B : A {}
- """.trimIndent(),
- commonTestConfiguration
- ) {
- this.documentablesTransformationStage = { module ->
- val kotlinProperties = module.packages.single().classlikes.single { it.name == "B" }.properties
-
- val property = kotlinProperties.single { it.name == "a" }
- val propertyInheritedFrom = property.extra[InheritedMember]?.inheritedFrom?.values?.single()
- assertEquals(DRI(packageName = "test", classNames = "A"), propertyInheritedFrom)
-
- assertNull(property.setter)
- assertNotNull(property.getter)
-
- val getterInheritedFrom = property.getter?.extra?.get(InheritedMember)?.inheritedFrom?.values?.single()
- assertEquals(DRI(packageName = "test", classNames = "A"), getterInheritedFrom)
-
- assertNull(property.extra[IsVar])
- }
- }
- }
-
-
- @Test
- fun `kotlin inheriting java should ignore setter lookalike for non accessible field`() {
- testInline(
- """
- |/src/test/A.java
- |package test;
- |public class A {
- | private int a = 1;
- |
- | public void setA(int a) { this.a = a; }
- |}
- |
- |/src/test/B.kt
- |package test
- |class B : A {}
- """.trimIndent(),
- commonTestConfiguration
- ) {
- documentablesMergingStage = { module ->
- val testedClass = module.packages.single().classlikes.single { it.name == "B" }
-
- val property = testedClass.properties.firstOrNull { it.name == "a" }
- assertNull(property, "Inherited property `a` should not be visible as it's not accessible")
-
- val setterLookalike = testedClass.functions.firstOrNull { it.name == "setA" }
- assertNotNull(setterLookalike) {
- "Expected setA to be a regular function because field `a` is neither var nor val from Kotlin's " +
- "interop perspective, it's not accessible."
- }
- }
- }
- }
-
-
- @Test
- fun `kotlin inheriting java should append getter and setter`() {
- testInline(
- """
- |/src/test/A.java
- |package test;
- |public class A {
- | private int a = 1;
- | public int getA() { return a; }
- | public void setA(int a) { this.a = a; }
- |}
- |
- |/src/test/B.kt
- |package test
- |class B : A {}
- """.trimIndent(),
- commonTestConfiguration
- ) {
- documentablesMergingStage = { module ->
- val kotlinProperties = module.packages.single().classlikes.single { it.name == "B" }.properties
- val property = kotlinProperties.single { it.name == "a" }
- property.extra[InheritedMember]?.inheritedFrom?.values?.single()?.run {
- assertEquals(
- DRI(packageName = "test", classNames = "A"),
- this
- )
- }
-
- val getter = property.getter
- assertNotNull(getter)
- assertEquals("getA", getter.name)
- val getterInheritedFrom = getter.extra[InheritedMember]?.inheritedFrom?.values?.single()
- assertEquals(DRI(packageName = "test", classNames = "A"), getterInheritedFrom)
-
- val setter = property.setter
- assertNotNull(setter)
- assertEquals("setA", setter.name)
- val setterInheritedFrom = setter.extra[InheritedMember]?.inheritedFrom?.values?.single()
- assertEquals(DRI(packageName = "test", classNames = "A"), setterInheritedFrom)
-
- assertNotNull(property.extra[IsVar])
- }
- }
- }
-
- @Test
- @OnlyDescriptors("Incorrect test, see https://github.com/Kotlin/dokka/issues/3128")
- fun `should have special getter and setter names for boolean property inherited from java`() {
- testInline(
- """
- |/src/test/A.java
- |package test;
- |public class A {
- | private boolean bool = true;
- | public boolean isBool() { return bool; }
- | public void setBool(boolean bool) { this.bool = bool; }
- |}
- |
- |/src/test/B.kt
- |package test
- |class B : A {}
- """.trimIndent(),
- commonTestConfiguration
- ) {
- documentablesMergingStage = { module ->
- val kotlinProperties = module.packages.single().classlikes.single { it.name == "B" }.properties
- val boolProperty = kotlinProperties.single { it.name == "bool" }
-
- val getter = boolProperty.getter
- assertNotNull(getter)
- assertEquals("isBool", getter.name)
-
- val setter = boolProperty.setter
- assertNotNull(setter)
- assertEquals("setBool", setter.name)
-
- assertNotNull(boolProperty.extra[IsVar])
- }
- }
- }
-
- @OnlyDescriptors("Incorrect test, see https://github.com/Kotlin/dokka/issues/3128")
- @Test
- fun `kotlin inheriting java should not append anything since field is public api`() {
- val configuration = dokkaConfiguration {
- sourceSets {
- sourceSet {
- sourceRoots = listOf("src/")
- analysisPlatform = "jvm"
- name = "jvm"
- documentedVisibilities = setOf(
- DokkaConfiguration.Visibility.PUBLIC,
- DokkaConfiguration.Visibility.PROTECTED
- )
- }
- }
- }
-
- testInline(
- """
- |/src/test/A.java
- |package test;
- |public class A {
- | protected int a = 1;
- | public int getA() { return a; }
- | public void setA(int a) { this.a = a; }
- |}
- |
- |/src/test/B.kt
- |package test
- |class B : A {}
- """.trimIndent(),
- configuration
- ) {
- documentablesMergingStage = { module ->
- val testedClass = module.packages.single().classlikes.single { it.name == "B" }
- val property = testedClass.properties.single { it.name == "a" }
-
- assertNull(property.getter)
- assertNull(property.setter)
- assertEquals(2, testedClass.functions.size)
-
- assertEquals("getA", testedClass.functions[0].name)
- assertEquals("setA", testedClass.functions[1].name)
-
- val inheritedFrom = property.extra[InheritedMember]?.inheritedFrom?.values?.single()
- assertEquals(DRI(packageName = "test", classNames = "A"), inheritedFrom)
-
- assertNotNull(property.extra[IsVar])
- }
- }
- }
-
- @Test
- fun `should inherit property visibility from getter`() {
- val configuration = dokkaConfiguration {
- sourceSets {
- sourceSet {
- sourceRoots = listOf("src/")
- analysisPlatform = "jvm"
- name = "jvm"
- documentedVisibilities = setOf(
- DokkaConfiguration.Visibility.PUBLIC,
- DokkaConfiguration.Visibility.PROTECTED
- )
- }
- }
- }
-
- testInline(
- """
- |/src/test/A.java
- |package test;
- |public class A {
- | private int a = 1;
- | protected int getA() { return a; }
- | protected void setA(int a) { this.a = a; }
- |}
- |
- |/src/test/B.kt
- |package test
- |class B : A {}
- """.trimIndent(),
- configuration
- ) {
- documentablesMergingStage = { module ->
- val testedClass = module.packages.single().classlikes.single { it.name == "B" }
- assertEquals(0, testedClass.functions.size)
-
- val property = testedClass.properties.single { it.name == "a" }
-
- assertNotNull(property.getter)
- assertNotNull(property.setter)
-
- val propertyVisibility = property.visibility.values.single()
- assertEquals(KotlinVisibility.Protected, propertyVisibility)
-
- val getterVisibility = property.getter?.visibility?.values?.single()
- assertEquals(KotlinVisibility.Protected, getterVisibility)
-
- val setterVisibility = property.setter?.visibility?.values?.single()
- assertEquals(KotlinVisibility.Protected, setterVisibility)
-
- val inheritedFrom = property.extra[InheritedMember]?.inheritedFrom?.values?.single()
- assertEquals(DRI(packageName = "test", classNames = "A"), inheritedFrom)
-
- assertNotNull(property.extra[IsVar])
- }
- }
- }
-
- @Test // checking for mapping between kotlin and java visibility
- fun `should resolve inherited java protected field as protected`() {
- val configuration = dokkaConfiguration {
- sourceSets {
- sourceSet {
- sourceRoots = listOf("src/")
- analysisPlatform = "jvm"
- name = "jvm"
- documentedVisibilities = setOf(
- DokkaConfiguration.Visibility.PUBLIC,
- DokkaConfiguration.Visibility.PROTECTED
- )
- }
- }
- }
-
- testInline(
- """
- |/src/test/A.java
- |package test;
- |public class A {
- | protected int protectedProperty = 0;
- |}
- |
- |/src/test/B.kt
- |package test
- |class B : A {}
- """.trimIndent(),
- configuration
- ) {
- documentablesMergingStage = { module ->
- val testedClass = module.packages.single().classlikes.single { it.name == "B" }
- assertEquals(0, testedClass.functions.size)
-
- val property = testedClass.properties.single { it.name == "protectedProperty" }
-
- assertNull(property.getter)
- assertNull(property.setter)
-
- val propertyVisibility = property.visibility.values.single()
- assertEquals(KotlinVisibility.Protected, propertyVisibility)
-
- val inheritedFrom = property.extra[InheritedMember]?.inheritedFrom?.values?.single()
- assertEquals(DRI(packageName = "test", classNames = "A"), inheritedFrom)
-
- assertNotNull(property.extra[IsVar])
- }
- }
- }
-
- @Test
- fun `should mark final property inherited from java as val`() {
- testInline(
- """
- |/src/test/A.java
- |package test;
- |public class A {
- | public final int a = 1;
- |}
- |
- |/src/test/B.kt
- |package test
- |class B : A {}
- """.trimIndent(),
- commonTestConfiguration
- ) {
- documentablesMergingStage = { module ->
- val kotlinProperties = module.packages.single().classlikes.single { it.name == "B" }.properties
- val property = kotlinProperties.single { it.name == "a" }
-
- assertNull(property.extra[IsVar])
- }
- }
- }
-}
diff --git a/plugins/base/src/test/kotlin/superFields/PsiSuperFieldsTest.kt b/plugins/base/src/test/kotlin/superFields/PsiSuperFieldsTest.kt
deleted file mode 100644
index 38f263a6..00000000
--- a/plugins/base/src/test/kotlin/superFields/PsiSuperFieldsTest.kt
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
- */
-
-package superFields
-
-import org.jetbrains.dokka.base.testApi.testRunner.BaseAbstractTest
-import org.jetbrains.dokka.links.DRI
-import org.jetbrains.dokka.model.Annotations
-import org.jetbrains.dokka.model.InheritedMember
-import org.jetbrains.dokka.model.IsVar
-import org.jetbrains.dokka.model.isJvmField
-import kotlin.test.Test
-import kotlin.test.assertEquals
-import kotlin.test.assertNotNull
-import kotlin.test.assertNull
-
-class PsiSuperFieldsTest : BaseAbstractTest() {
-
- private val commonTestConfiguration = dokkaConfiguration {
- sourceSets {
- sourceSet {
- sourceRoots = listOf("src/")
- analysisPlatform = "jvm"
- name = "jvm"
- }
- }
- }
-
- @Test
- fun `java inheriting java`() {
- testInline(
- """
- |/src/test/A.java
- |package test;
- |public class A {
- | public int a = 1;
- |}
- |
- |/src/test/B.java
- |package test;
- |public class B extends A {}
- """.trimIndent(),
- commonTestConfiguration
- ) {
- documentablesMergingStage = { module ->
- val inheritorProperties = module.packages.single().classlikes.single { it.name == "B" }.properties
- val property = inheritorProperties.single { it.name == "a" }
-
- val inheritedFrom = property.extra[InheritedMember]?.inheritedFrom?.values?.single()
- assertEquals(DRI(packageName = "test", classNames = "A"), inheritedFrom)
- }
- }
- }
-
- @Test
- fun `java inheriting kotlin common case`() {
- testInline(
- """
- |/src/test/A.kt
- |package test
- |open class A {
- | var a: Int = 1
- | val b: Int = 2
- |}
- |
- |/src/test/B.java
- |package test;
- |public class B extends A {}
- """.trimIndent(),
- commonTestConfiguration
- ) {
- documentablesMergingStage = { module ->
- val inheritorProperties = module.packages.single().classlikes.single { it.name == "B" }.properties
- inheritorProperties.single { it.name == "a" }.let { mutableProperty ->
- assertNotNull(mutableProperty.getter)
- assertNotNull(mutableProperty.setter)
-
- val inheritedFrom = mutableProperty.extra[InheritedMember]?.inheritedFrom?.values?.single()
- assertEquals(DRI(packageName = "test", classNames = "A"), inheritedFrom)
-
- assertNotNull(mutableProperty.extra[IsVar])
- }
-
- inheritorProperties.single { it.name == "b" }.let { immutableProperty ->
- assertNotNull(immutableProperty.getter)
- assertNull(immutableProperty.setter)
-
- val inheritedFrom = immutableProperty.extra[InheritedMember]?.inheritedFrom?.values?.single()
- assertEquals(DRI(packageName = "test", classNames = "A"), inheritedFrom)
-
- assertNull(immutableProperty.extra[IsVar])
- }
- }
- }
- }
-
- @Test
- fun `java inheriting kotlin with boolean property`() {
- testInline(
- """
- |/src/test/A.kt
- |package test
- |open class A {
- | var isActive: Boolean = true
- |}
- |
- |/src/test/B.java
- |package test;
- |public class B extends A {}
- """.trimIndent(),
- commonTestConfiguration
- ) {
- documentablesMergingStage = { module ->
- val inheritorProperties = module.packages.single().classlikes.single { it.name == "B" }.properties
- val property = inheritorProperties.single { it.name == "isActive" }
-
- assertNotNull(property.getter)
- assertEquals("isActive", property.getter?.name)
-
- assertNotNull(property.setter)
- assertEquals("setActive", property.setter?.name)
-
- val inheritedFrom = property.extra[InheritedMember]?.inheritedFrom?.values?.single()
- assertEquals(DRI(packageName = "test", classNames = "A"), inheritedFrom)
-
- assertNotNull(property.extra[IsVar])
- }
- }
- }
-
- @Test
- fun `java inheriting kotlin with @JvmField should not inherit accessors`() {
- testInline(
- """
- |/src/test/A.kt
- |package test
- |open class A {
- | @kotlin.jvm.JvmField
- | var a: Int = 1
- |}
- |
- |/src/test/B.java
- |package test;
- |public class B extends A {}
- """.trimIndent(),
- dokkaConfiguration {
- sourceSets {
- sourceSet {
- sourceRoots = listOf("src/")
- analysisPlatform = "jvm"
- name = "jvm"
- classpath += jvmStdlibPath!! // needed for JvmField
- }
- }
- }
- ) {
- documentablesMergingStage = { module ->
- val inheritorProperties = module.packages.single().classlikes.single { it.name == "B" }.properties
- val property = inheritorProperties.single { it.name == "a" }
-
- assertNull(property.getter)
- assertNull(property.setter)
-
- val jvmFieldAnnotation = property.extra[Annotations]?.directAnnotations?.values?.single()?.find {
- it.isJvmField()
- }
- assertNotNull(jvmFieldAnnotation)
-
- val inheritedFrom = property.extra[InheritedMember]?.inheritedFrom?.values?.single()
- assertEquals(DRI(packageName = "test", classNames = "A"), inheritedFrom)
-
- assertNotNull(property.extra[IsVar])
- }
- }
- }
-}