Skip to content

Commit

Permalink
Add tests for members implemented by delegation (#3566)
Browse files Browse the repository at this point in the history
  • Loading branch information
vmishenev committed Apr 16, 2024
1 parent aab8115 commit 8badf76
Showing 1 changed file with 111 additions and 0 deletions.
111 changes: 111 additions & 0 deletions dokka-subprojects/plugin-base/src/test/kotlin/model/ClassesTest.kt
Expand Up @@ -4,6 +4,7 @@

package model

import org.jetbrains.dokka.links.Callable
import org.jetbrains.dokka.links.DRI
import org.jetbrains.dokka.links.TypeConstructor
import org.jetbrains.dokka.links.sureClassNames
Expand Down Expand Up @@ -591,4 +592,114 @@ class ClassesTest : AbstractModelTest("/src/main/kotlin/classes/Test.kt", "class
?.firstOrNull() equals ExtraModifiers.KotlinOnlyModifiers.Value
}
}

@Test
fun `members implemented by delegation should have the override keyword`() {
inlineModelTest(
"""
|interface CookieJar {
| /**
| * Saves cookies
| */
| fun saveFromResponse(url: String)
| val prop: String
|}
|
|class CookieJarImpl() : CookieJar {
| override fun saveFromResponse(url: String) {}
| override val prop: String = ""
|}
|
|class JavaNetCookieJar private constructor(
| delegate: CookieJarImpl,
|) : CookieJar by delegate
""".trimMargin()
) {
with((this / "classes" / "CookieJarImpl"/ "saveFromResponse").cast<DFunction>()) {
name equals "saveFromResponse"
extra[AdditionalModifiers]?.content?.values?.firstOrNull()
?.firstOrNull() equals ExtraModifiers.KotlinOnlyModifiers.Override
}
with((this / "classes" / "JavaNetCookieJar"/ "saveFromResponse").cast<DFunction>()) {
name equals "saveFromResponse"
extra[AdditionalModifiers]?.content?.values?.firstOrNull()
?.firstOrNull() equals ExtraModifiers.KotlinOnlyModifiers.Override
}
with((this / "classes" / "CookieJarImpl"/ "prop").cast<DProperty>()) {
name equals "prop"
extra[AdditionalModifiers]?.content?.values?.firstOrNull()
?.firstOrNull() equals ExtraModifiers.KotlinOnlyModifiers.Override
}
with((this / "classes" / "JavaNetCookieJar"/ "prop").cast<DProperty>()) {
name equals "prop"
extra[AdditionalModifiers]?.content?.values?.firstOrNull()
?.firstOrNull() equals ExtraModifiers.KotlinOnlyModifiers.Override
}
}
}

@Test
fun `members implemented by delegation should have the correct DRI`() {
inlineModelTest(
"""
|interface CookieJar {
| /**
| * Saves cookies
| */
| fun saveFromResponse(url: String)
| val prop: String
|}
|
|class CookieJarImpl() : CookieJar {
| override fun saveFromResponse(url: String) {}
| override val prop: String = ""
|}
|
|class JavaNetCookieJar private constructor(
| delegate: CookieJarImpl,
|) : CookieJar by delegate
""".trimMargin()
) {
with((this / "classes" / "CookieJar"/ "saveFromResponse").cast<DFunction>()) {
name equals "saveFromResponse"
dri equals DRI(
"classes",
"CookieJar",
Callable("saveFromResponse", params = listOf(TypeConstructor("kotlin.String", emptyList())))
)
}
with((this / "classes" / "CookieJarImpl"/ "saveFromResponse").cast<DFunction>()) {
name equals "saveFromResponse"
dri equals DRI(
"classes",
"CookieJarImpl",
Callable("saveFromResponse", params = listOf(TypeConstructor("kotlin.String", emptyList())))
)
}
with((this / "classes" / "JavaNetCookieJar"/ "saveFromResponse").cast<DFunction>()) {
name equals "saveFromResponse"
dri equals DRI(
"classes",
"CookieJar",
Callable("saveFromResponse", params = listOf(TypeConstructor("kotlin.String", emptyList())))
)
}
with((this / "classes" / "CookieJarImpl"/ "prop").cast<DProperty>()) {
name equals "prop"
dri equals DRI(
"classes",
"CookieJarImpl",
Callable("prop", params = emptyList())
)
}
with((this / "classes" / "JavaNetCookieJar"/ "prop").cast<DProperty>()) {
name equals "prop"
dri equals DRI(
"classes",
"CookieJar",
Callable("prop", params = emptyList())
)
}
}
}
}

0 comments on commit 8badf76

Please sign in to comment.