1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
package org.jetbrains.dokka.javadoc
import org.jetbrains.dokka.DokkaConsoleLogger
import org.jetbrains.dokka.tests.verifyModel
import org.junit.Assert.*
import org.junit.Test
class JavadocTest {
@Test fun testTypes() {
verifyJavadoc("testdata/javadoc/types.kt", withJdk = true) { doc ->
val classDoc = doc.classNamed("foo.TypesKt")!!
val method = classDoc.methods().find { it.name() == "foo" }!!
val type = method.returnType()
assertFalse(type.asClassDoc().isIncluded)
assertEquals("java.lang.String", type.qualifiedTypeName())
assertEquals("java.lang.String", type.asClassDoc().qualifiedName())
val params = method.parameters()
assertTrue(params[0].type().isPrimitive)
assertFalse(params[1].type().asClassDoc().isIncluded)
}
}
@Test fun testObject() {
verifyJavadoc("testdata/javadoc/obj.kt") { doc ->
val classDoc = doc.classNamed("foo.O")
assertNotNull(classDoc)
val companionDoc = doc.classNamed("foo.O.Companion")
assertNotNull(companionDoc)
val pkgDoc = doc.packageNamed("foo")!!
assertEquals(2, pkgDoc.allClasses().size)
}
}
@Test fun testException() {
verifyJavadoc("testdata/javadoc/exception.kt", withKotlinRuntime = true) { doc ->
val classDoc = doc.classNamed("foo.MyException")!!
val member = classDoc.methods().find { it.name() == "foo" }
assertEquals(classDoc, member!!.containingClass())
}
}
@Test fun testByteArray() {
verifyJavadoc("testdata/javadoc/bytearr.kt", withKotlinRuntime = true) { doc ->
val classDoc = doc.classNamed("foo.ByteArray")!!
assertNotNull(classDoc.asClassDoc())
val member = classDoc.methods().find { it.name() == "foo" }!!
assertEquals("[]", member.returnType().dimension())
}
}
@Test fun testStringArray() {
verifyJavadoc("testdata/javadoc/stringarr.kt", withKotlinRuntime = true) { doc ->
val classDoc = doc.classNamed("foo.Foo")!!
assertNotNull(classDoc.asClassDoc())
val member = classDoc.methods().find { it.name() == "main" }!!
val paramType = member.parameters()[0].type()
assertNull(paramType.asParameterizedType())
assertEquals("String", paramType.typeName())
assertEquals("String", paramType.asClassDoc().name())
}
}
@Test fun testJvmName() {
verifyJavadoc("testdata/javadoc/jvmname.kt", withKotlinRuntime = true) { doc ->
val classDoc = doc.classNamed("foo.Apple")!!
assertNotNull(classDoc.asClassDoc())
val member = classDoc.methods().find { it.name() == "_tree" }
assertNotNull(member)
}
}
@Test fun testLinkWithParam() {
verifyJavadoc("testdata/javadoc/paramlink.kt", withKotlinRuntime = true) { doc ->
val classDoc = doc.classNamed("demo.Apple")!!
assertNotNull(classDoc.asClassDoc())
val tags = classDoc.inlineTags().filterIsInstance<SeeTagAdapter>()
assertEquals(2, tags.size)
val linkTag = tags[1] as SeeMethodTagAdapter
assertEquals("cutIntoPieces", linkTag.method.name())
}
}
@Test fun testInternalVisibility() {
verifyJavadoc("testdata/javadoc/internal.kt", withKotlinRuntime = true, includeNonPublic = false) { doc ->
val classDoc = doc.classNamed("foo.Person")!!
val constructors = classDoc.constructors()
assertEquals(1, constructors.size)
assertEquals(1, constructors.single().parameters().size)
}
}
@Test fun testSuppress() {
verifyJavadoc("testdata/javadoc/suppress.kt", withKotlinRuntime = true) { doc ->
assertNull(doc.classNamed("Some"))
assertNull(doc.classNamed("SomeAgain"))
assertNull(doc.classNamed("Interface"))
val classSame = doc.classNamed("Same")!!
assertTrue(classSame.fields().isEmpty())
assertTrue(classSame.methods().isEmpty())
}
}
private fun verifyJavadoc(name: String,
withJdk: Boolean = false,
withKotlinRuntime: Boolean = false,
includeNonPublic: Boolean = true,
callback: (ModuleNodeAdapter) -> Unit) {
verifyModel(name, format = "javadoc", withJdk = withJdk, withKotlinRuntime = withKotlinRuntime, includeNonPublic = includeNonPublic) { model ->
val doc = ModuleNodeAdapter(model, StandardReporter(DokkaConsoleLogger), "")
callback(doc)
}
}
}
|