diff options
Diffstat (limited to 'plugins/base/src/test')
-rw-r--r-- | plugins/base/src/test/kotlin/signatures/SignatureTest.kt | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/plugins/base/src/test/kotlin/signatures/SignatureTest.kt b/plugins/base/src/test/kotlin/signatures/SignatureTest.kt index f7439d67..f33ad5bd 100644 --- a/plugins/base/src/test/kotlin/signatures/SignatureTest.kt +++ b/plugins/base/src/test/kotlin/signatures/SignatureTest.kt @@ -450,6 +450,63 @@ class SignatureTest : AbstractCoreTest() { } } + @Test + fun `generic constructor params`() { + + val configuration = dokkaConfiguration { + sourceSets { + sourceSet { + moduleName = "test" + name = "common" + sourceRoots = listOf("src/main/kotlin/common/Test.kt") + } + } + } + + val writerPlugin = TestOutputWriterPlugin() + + testInline( + """ + |/src/main/kotlin/common/Test.kt + |package example + | + |import java.util.* + | + |class GenericClass<T>(val x: Int) { + | constructor(x: T) : this(1) + | + | constructor(x: Int, y: String) : this(1) + | + | constructor(x: Int, y: List<T>) : this(1) + | + | constructor(x: Boolean, y: Int, z: String) : this(1) + | + | constructor(x: List<Comparable<ServiceLoader<T>>>?) : this(1) + |} + | + """.trimMargin(), + configuration, + pluginOverrides = listOf(writerPlugin) + ) { + renderingStage = { _, _ -> + writerPlugin.writer.renderedContent("test/example/-generic-class/-generic-class.html").signature().zip( + listOf( + arrayOf("fun <", A("T"), "> ", A("GenericClass"), "(x: ", A("T"), ")", Span()), + arrayOf("fun ", A("GenericClass"), "(x: ", A("Int"), ", y: ", A("String"), ")", Span()), + arrayOf("fun <", A("T"), "> ", A("GenericClass"), "(x: ", A("Int"), ", y: ", A("List"), "<", A("T"), ">)", Span()), + arrayOf("fun ", A("GenericClass"), "(x: ", A("Boolean"), ", y: ", A("Int"), ", z:", A("String"), ")", Span()), + arrayOf("fun <", A("T"), "> ", A("GenericClass"), "(x: ", A("List"), "<", A("Comparable"), + "<", A("ServiceLoader"), "<", A("T"), ">>>?)", Span()), + arrayOf("fun ", A("GenericClass"), "(x: ", A("Int"), ")", Span()), + + ) + ).forEach { + it.first.match(*it.second) + } + } + } + } + private fun TestOutputWriter.renderedContent(path: String = "root/example.html") = contents.getValue(path).let { Jsoup.parse(it) }.select("#content") .single() |