aboutsummaryrefslogtreecommitdiff
path: root/plugins/javadoc/src/test/kotlin
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/javadoc/src/test/kotlin')
-rw-r--r--plugins/javadoc/src/test/kotlin/javadoc/AbstractJavadocTemplateMapTest.kt2
-rw-r--r--plugins/javadoc/src/test/kotlin/javadoc/JavadocClasslikeTemplateMapTest.kt239
-rw-r--r--plugins/javadoc/src/test/kotlin/javadoc/location/JavadocLocationTest.kt4
3 files changed, 238 insertions, 7 deletions
diff --git a/plugins/javadoc/src/test/kotlin/javadoc/AbstractJavadocTemplateMapTest.kt b/plugins/javadoc/src/test/kotlin/javadoc/AbstractJavadocTemplateMapTest.kt
index 4fa65c58..7cd42942 100644
--- a/plugins/javadoc/src/test/kotlin/javadoc/AbstractJavadocTemplateMapTest.kt
+++ b/plugins/javadoc/src/test/kotlin/javadoc/AbstractJavadocTemplateMapTest.kt
@@ -101,7 +101,7 @@ internal abstract class AbstractJavadocTemplateMapTest : AbstractCoreTest() {
throw AssertionError(
"Kotlin and Java Code failed assertions\n" +
"Kotlin: ${kotlinException.message}\n" +
- "Java: ${javaException.message}",
+ "Java : ${javaException.message}",
kotlinException
)
}
diff --git a/plugins/javadoc/src/test/kotlin/javadoc/JavadocClasslikeTemplateMapTest.kt b/plugins/javadoc/src/test/kotlin/javadoc/JavadocClasslikeTemplateMapTest.kt
index 0f95894b..dc1573e1 100644
--- a/plugins/javadoc/src/test/kotlin/javadoc/JavadocClasslikeTemplateMapTest.kt
+++ b/plugins/javadoc/src/test/kotlin/javadoc/JavadocClasslikeTemplateMapTest.kt
@@ -36,7 +36,7 @@ internal class JavadocClasslikeTemplateMapTest : AbstractJavadocTemplateMapTest(
assertEquals("com.test.package0", map["packageName"])
assertEquals("Documentation for TestClass", map["classlikeDocumentation"])
assertEquals("Documentation for TestClass", map["subtitle"])
- assertEquals("public final class <a href=TestClass.html>TestClass</a>", map["signature"])
+ assertEquals("public final class <a href=TestClass.html>TestClass</a>", map.signatureWithModifiers())
}
}
@@ -81,21 +81,252 @@ internal class JavadocClasslikeTemplateMapTest : AbstractJavadocTemplateMapTest(
assertEquals("com.test.package0", map["packageName"])
assertEquals("Documentation for TestClass", map["classlikeDocumentation"])
assertEquals("Documentation for TestClass", map["subtitle"])
- assertEquals("public final class <a href=TestClass.html>TestClass</a>", map["signature"])
+ assertEquals("public final class", map.modifiers())
+ assertEquals("<a href=TestClass.html>TestClass</a>", map.signatureWithoutModifiers())
val methods = assertIsInstance<Map<Any, Any?>>(map["methods"])
val ownMethods = assertIsInstance<List<*>>(methods["own"])
assertEquals(1, ownMethods.size, "Expected only one method")
- val method = assertIsInstance<Map<Any, Any?>>(ownMethods.single())
+ val method = assertIsInstance<Map<String, Any?>>(ownMethods.single())
assertEquals("Documentation for testFunction", method["brief"])
assertEquals("testFunction", method["name"])
assertEquals(
0, assertIsInstance<List<*>>(method["parameters"]).size,
"Expected no parameters"
)
+ assertEquals("final <a href=.html>java.lang.String</a>", method.modifiers())
+ assertEquals("<a href=.html>testFunction</a>()", method.signatureWithoutModifiers())
+ }
+ }
+
+ @Test
+ fun `class with annotation`(){
+ dualTestTemplateMapInline(
+ kotlin =
+ """
+ /src/source0.kt
+ package com.test.package0
+ @MustBeDocumented
+ annotation class Author(val name: String)
+
+ @Author(
+ name = "Benjamin Franklin"
+ )
+ class TestClass {`
+
+ @Author(
+ name = "Franklin D. Roosevelt"
+ )
+ fun testFunction(): String = ""
+ }
+ """,
+ java =
+ """
+ /src/com/test/package0/Author.java
+ package com.test.package0
+ import java.lang.annotation.Documented;
+
+ @Documented
+ public @interface Author {
+ String name();
+ }
+ /src/com/test/package0/TestClass.java
+ package com.test.package0
+
+ @Author(
+ name = "Benjamin Franklin"
+ )
+ public final class TestClass {
+
+ @Author(
+ name = "Franklin D. Roosevelt"
+ )
+ public final String testFunction() {
+ return "";
+ }
+ }
+ """
+ ){
+ val map = allPagesOfType<JavadocClasslikePageNode>().first { it.name == "TestClass" }.templateMap
+ assertEquals("TestClass", map["name"])
+ val signature = assertIsInstance<Map<String, Any?>>(map["signature"])
+ assertEquals("@<a href=Author.html>Author</a>(name = \"Benjamin Franklin\")", signature["annotations"])
+
+ val methods = assertIsInstance<Map<Any, Any?>>(map["methods"])
+ val ownMethods = assertIsInstance<List<*>>(methods["own"])
+ val method = assertIsInstance<Map<String, Any?>>(ownMethods.single())
+ val methodSignature = assertIsInstance<Map<String, Any?>>(method["signature"])
+ assertEquals("@<a href=Author.html>Author</a>(name = \"Franklin D. Roosevelt\")", methodSignature["annotations"])
+ }
+ }
+
+ @Test
+ fun `simple enum`(){
+ dualTestTemplateMapInline(
+ kotlin =
+ """
+ /src/source0.kt
+ package com.test.package0
+ enum class ClockDays {
+ /**
+ * Sample docs for first
+ */
+ FIRST,
+ /**
+ * Sample docs for second
+ */
+ SECOND
+ }
+ """,
+ java =
+ """
+ /src/com/test/package0/TestClass.java
+ package com.test.package0;
+ enum ClockDays {
+ /**
+ * Sample docs for first
+ */
+ FIRST,
+ /**
+ * Sample docs for second
+ */
+ SECOND
+ }
+ """
+ ){
+ val map = singlePageOfType<JavadocClasslikePageNode>().templateMap
+ assertEquals("ClockDays", map["name"])
+ assertEquals("enum", map["kind"])
+ val entries = assertIsInstance<List<Map<String, Any?>>>(map["entries"])
+ assertEquals(2, entries.size)
+
+ val (first, second) = entries
+ assertEquals("Sample docs for first", first["brief"])
+ assertEquals("Sample docs for second", second["brief"])
+
+ assertEquals("<a href=.html>FIRST</a>", first.signatureWithoutModifiers())
+ assertEquals("<a href=.html>SECOND</a>", second.signatureWithoutModifiers())
+ }
+ }
+
+ @Test
+ fun `documented function parameters`(){
+ dualTestTemplateMapInline(
+ kotlin =
+ """
+ /src/source0.kt
+ package com.test.package0
+ class TestClass {
+ /**
+ * Simple parameters list to check out
+ * @param simple simple String parameter
+ * @param parameters simple Integer parameter
+ * @param list simple Boolean parameter
+ * @return just a String
+ */
+ fun testFunction(simple: String?, parameters: Int?, list: Boolean?): String {
+ return ""
+ }
+ }
+ """,
+ java =
+ """
+ /src/com/test/package0/TestClass.java
+ package com.test.package0;
+ public final class TestClass {
+ /**
+ * Simple parameters list to check out
+ * @param simple simple String parameter
+ * @param parameters simple Integer parameter
+ * @param list simple Boolean parameter
+ * @return just a String
+ */
+ public final String testFunction(String simple, Integer parameters, Boolean list) {
+ return "";
+ }
+ }
+ """
+ ) {
+ val map = singlePageOfType<JavadocClasslikePageNode>().templateMap
+ assertEquals("TestClass", map["name"])
+
+ val methods = assertIsInstance<Map<String, Any?>>(map["methods"])
+ val testFunction = assertIsInstance<List<Map<String, Any?>>>(methods["own"]).single()
+ assertEquals("Simple parameters list to check out", testFunction["brief"])
+
+ val (first, second, third) = assertIsInstance<List<Map<String, Any?>>>(testFunction["parameters"])
+ assertParameterNode(
+ node = first,
+ expectedName = "simple",
+ expectedType = "<a href=.html>java.lang.String</a>",
+ expectedDescription = "simple String parameter"
+ )
+ assertParameterNode(
+ node = second,
+ expectedName = "parameters",
+ expectedType = "<a href=.html>java.lang.Integer</a>",
+ expectedDescription = "simple Integer parameter"
+ )
+ assertParameterNode(
+ node = third,
+ expectedName = "list",
+ expectedType = "<a href=.html>java.lang.Boolean</a>",
+ expectedDescription = "simple Boolean parameter"
+ )
+ }
+ }
+
+ @Test
+ fun `with generic parameters`(){
+ dualTestTemplateMapInline(
+ kotlin =
+ """
+ /src/source0.kt
+ package com.test.package0
+ import java.io.Serializable
+
+ class Generic<T : Serializable?> {
+ fun <D : T> sampleFunction(): D = TODO()
+ }
+ """,
+ java =
+ """
+ /src/com/test/package0/Generic.java
+ package com.test.package0;
+ import java.io.Serializable;
+
+ public final class Generic<T extends Serializable> {
+ public final <D extends T> D sampleFunction(){
+ return null;
+ }
+ }
+ """
+ ) {
+ val map = singlePageOfType<JavadocClasslikePageNode>().templateMap
+ assertEquals("Generic", map["name"])
+
assertEquals(
- "final <a href=.html>String</a> <a href=.html>testFunction</a>()", method["signature"]
+ "public final class <a href=Generic.html>Generic</a>&lt;T extends <a href=.html>java.io.Serializable</a>&gt;",
+ map.signatureWithModifiers()
)
+ val methods = assertIsInstance<Map<Any, Any?>>(map["methods"])
+ val ownMethods = assertIsInstance<List<*>>(methods["own"]).first()
+ val sampleFunction = assertIsInstance<Map<String, Any?>>(ownMethods)
+
+ assertEquals("final &lt;D extends <a href=Generic.html>T</a>&gt; <a href=.html>D</a> <a href=.html>sampleFunction</a>()", sampleFunction.signatureWithModifiers())
}
}
+
+ private fun assertParameterNode(node: Map<String, Any?>, expectedName: String, expectedType: String, expectedDescription: String){
+ assertEquals(expectedName, node["name"])
+ assertEquals(expectedType, node["type"])
+ assertEquals(expectedDescription, node["description"])
+ }
+
+ private fun Map<String, Any?>.signatureWithModifiers(): String = "${modifiers()} ${signatureWithoutModifiers()}"
+
+ private fun Map<String, Any?>.signatureWithoutModifiers(): String = (get("signature") as Map<String, Any?>)["signatureWithoutModifiers"] as String
+
+ private fun Map<String, Any?>.modifiers(): String = (get("signature") as Map<String, Any?>)["modifiers"] as String
+
}
diff --git a/plugins/javadoc/src/test/kotlin/javadoc/location/JavadocLocationTest.kt b/plugins/javadoc/src/test/kotlin/javadoc/location/JavadocLocationTest.kt
index a47f0142..92620f78 100644
--- a/plugins/javadoc/src/test/kotlin/javadoc/location/JavadocLocationTest.kt
+++ b/plugins/javadoc/src/test/kotlin/javadoc/location/JavadocLocationTest.kt
@@ -54,8 +54,8 @@ class JavadocTest : AbstractCoreTest() {
val testClass = rootPageNode.firstChildOfType<JavadocPackagePageNode>()
.firstChildOfType<JavadocClasslikePageNode>()
assert(
- "public final class <a href=javadoc/Test.html>Test</a> extends <a href=https://docs.oracle.com/javase/8/docs/api/java/lang/Cloneable.html>Cloneable</a>"
- == transformer.htmlForContentNode(testClass.signature, null)
+ "<a href=https://docs.oracle.com/javase/8/docs/api/java/lang/Cloneable.html>java.lang.Cloneable</a>"
+ == transformer.htmlForContentNode(testClass.signature.supertypes!!, null)
)
}
}