From f724ba6fc6cddfe09015b5ee1d66122c158f11ba Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Tue, 3 Nov 2015 19:36:48 +0100 Subject: build Kotlin documentation for Java files based on descriptors --- test/data/format/javaCodeInParam.java | 2 - test/data/format/javaCodeInParam.md | 10 ++++- test/data/format/javaCodeLiteralTags.java | 2 - test/data/format/javaCodeLiteralTags.md | 10 ++++- test/data/format/javaDeprecated.html | 6 +-- test/data/format/javaDeprecated.java | 2 - test/data/format/javaLinkTag.html | 21 ++++++--- test/data/format/javaLinkTag.java | 2 - test/data/format/javaLinkTagWithLabel.html | 21 ++++++--- test/data/format/javaLinkTagWithLabel.java | 2 - test/data/format/javaSeeTag.html | 19 ++++++-- test/data/format/javaSeeTag.java | 4 +- test/data/format/javaSpaceInAuthor.java | 2 - test/data/format/javaSpaceInAuthor.md | 10 ++++- test/data/format/javaSupertype.html | 21 ++++++--- test/data/format/javaSupertype.java | 2 - test/data/format/javadocHtml.java | 2 - test/data/format/javadocHtml.md | 8 +++- test/data/format/javadocOrderedList.java | 2 - test/data/format/javadocOrderedList.md | 8 +++- test/data/java/annotatedAnnotation.java | 3 +- test/data/java/arrayType.java | 2 - test/data/java/constructors.java | 2 - test/data/java/deprecation.java | 7 +-- test/data/java/enumValues.java | 2 - test/data/java/field.java | 2 - test/data/java/inheritorLinks.java | 2 - test/data/java/innerClass.java | 2 - test/data/java/javaLangObject.java | 2 - test/data/java/member.java | 2 - test/data/java/memberWithModifiers.java | 4 +- test/data/java/staticMethod.java | 2 - test/data/java/superClass.java | 2 - test/data/java/typeParameter.java | 2 - test/data/java/varargs.java | 2 - test/src/TestAPI.kt | 56 ++++++++++++++++++++---- test/src/format/HtmlFormatTest.kt | 10 ++--- test/src/format/MarkdownFormatTest.kt | 10 ++--- test/src/model/JavaTest.kt | 69 +++++++++++++----------------- 39 files changed, 199 insertions(+), 140 deletions(-) (limited to 'test') diff --git a/test/data/format/javaCodeInParam.java b/test/data/format/javaCodeInParam.java index d1cdf6cd..73025fcc 100644 --- a/test/data/format/javaCodeInParam.java +++ b/test/data/format/javaCodeInParam.java @@ -1,5 +1,3 @@ -package test; - /** * @param T this is {@code some code} and other text */ diff --git a/test/data/format/javaCodeInParam.md b/test/data/format/javaCodeInParam.md index 88cb6912..b1d2d871 100644 --- a/test/data/format/javaCodeInParam.md +++ b/test/data/format/javaCodeInParam.md @@ -1,9 +1,9 @@ -[test](test/index) / [test](test/test/index) / [C](test/test/-c) +[test](test/index) / [C](test/-c/index) # C -`open class C<T>` +`protected open class C<T : Any>` @@ -13,3 +13,9 @@ `T` - this is `some code` and other text + +### Constructors + + +| [<init>](test/-c/-init-) | `C()` | + diff --git a/test/data/format/javaCodeLiteralTags.java b/test/data/format/javaCodeLiteralTags.java index cf071f07..e71ddaa7 100644 --- a/test/data/format/javaCodeLiteralTags.java +++ b/test/data/format/javaCodeLiteralTags.java @@ -1,5 +1,3 @@ -package test; - /** *

{@code AC}

*

{@literal AC}

diff --git a/test/data/format/javaCodeLiteralTags.md b/test/data/format/javaCodeLiteralTags.md index 17438bff..83c9cc33 100644 --- a/test/data/format/javaCodeLiteralTags.md +++ b/test/data/format/javaCodeLiteralTags.md @@ -1,9 +1,9 @@ -[test](test/index) / [test](test/test/index) / [C](test/test/-c) +[test](test/index) / [C](test/-c/index) # C -`open class C` +`protected open class C` `A<B>C` @@ -15,3 +15,9 @@ A<B>C + +### Constructors + + +| [<init>](test/-c/-init-) | `C()` | + diff --git a/test/data/format/javaDeprecated.html b/test/data/format/javaDeprecated.html index 9e8958a2..236c6490 100644 --- a/test/data/format/javaDeprecated.html +++ b/test/data/format/javaDeprecated.html @@ -1,13 +1,13 @@ -test / test.Foo.foo +test / Foo.foo -test / test / Foo / foo
+test / Foo / foo

foo

open fun foo(): Unit
-Deprecated: use #bar instead

+Deprecated: use #bar instead



diff --git a/test/data/format/javaDeprecated.java b/test/data/format/javaDeprecated.java index 4216f205..9694a444 100644 --- a/test/data/format/javaDeprecated.java +++ b/test/data/format/javaDeprecated.java @@ -1,5 +1,3 @@ -package test; - class Foo { /** @deprecated use {@link #bar} instead */ public void foo() {} diff --git a/test/data/format/javaLinkTag.html b/test/data/format/javaLinkTag.html index af63710d..1b6921ab 100644 --- a/test/data/format/javaLinkTag.html +++ b/test/data/format/javaLinkTag.html @@ -1,21 +1,32 @@ -test / test.Foo +test / Foo -test / test / Foo
+test / Foo

Foo

-open class Foo
-

Call #bar() to do the job.

+protected open class Foo
+

Call #bar() to do the job.



+

Constructors

+ + + + + + + +
+<init> +Foo()

Functions

+bar diff --git a/test/data/format/javaLinkTag.java b/test/data/format/javaLinkTag.java index 06452f16..84f761c6 100644 --- a/test/data/format/javaLinkTag.java +++ b/test/data/format/javaLinkTag.java @@ -1,5 +1,3 @@ -package test; - /** * Call {@link #bar()} to do the job. */ diff --git a/test/data/format/javaLinkTagWithLabel.html b/test/data/format/javaLinkTagWithLabel.html index ccf3c712..aabfbc58 100644 --- a/test/data/format/javaLinkTagWithLabel.html +++ b/test/data/format/javaLinkTagWithLabel.html @@ -1,21 +1,32 @@ -test / test.Foo +test / Foo -test / test / Foo
+test / Foo

Foo

-open class Foo
-

Call this wonderful method to do the job.

+protected open class Foo
+

Call this wonderful method to do the job.



+

Constructors

+
-bar open fun bar(): Unit
+ + + + + + +
+<init> +Foo()

Functions

+bar diff --git a/test/data/format/javaLinkTagWithLabel.java b/test/data/format/javaLinkTagWithLabel.java index 7226f1c9..1db5ad70 100644 --- a/test/data/format/javaLinkTagWithLabel.java +++ b/test/data/format/javaLinkTagWithLabel.java @@ -1,5 +1,3 @@ -package test; - /** * Call {@link #bar() this wonderful method} to do the job. */ diff --git a/test/data/format/javaSeeTag.html b/test/data/format/javaSeeTag.html index cf7b7941..a6813df3 100644 --- a/test/data/format/javaSeeTag.html +++ b/test/data/format/javaSeeTag.html @@ -1,23 +1,34 @@ -test / test.Foo +test / Foo -test / test / Foo
+test / Foo

Foo

open class Foo

See Also
-#bar
+#bar


+

Constructors

+
-bar open fun bar(): Unit
+ + + + + + +
+<init> +Foo()

Functions

+bar diff --git a/test/data/format/javaSeeTag.java b/test/data/format/javaSeeTag.java index e0b95f11..94a24606 100644 --- a/test/data/format/javaSeeTag.java +++ b/test/data/format/javaSeeTag.java @@ -1,8 +1,6 @@ -package test; - /** * @see #bar */ -class Foo { +public class Foo { public void bar() {} } \ No newline at end of file diff --git a/test/data/format/javaSpaceInAuthor.java b/test/data/format/javaSpaceInAuthor.java index b96f5884..f980ae07 100644 --- a/test/data/format/javaSpaceInAuthor.java +++ b/test/data/format/javaSpaceInAuthor.java @@ -1,5 +1,3 @@ -package test; - /** * @author Dmitry Jemerov */ diff --git a/test/data/format/javaSpaceInAuthor.md b/test/data/format/javaSpaceInAuthor.md index 425d4c9a..4d19ed01 100644 --- a/test/data/format/javaSpaceInAuthor.md +++ b/test/data/format/javaSpaceInAuthor.md @@ -1,9 +1,9 @@ -[test](test/index) / [test](test/test/index) / [C](test/test/-c) +[test](test/index) / [C](test/-c/index) # C -`open class C` +`protected open class C` @@ -11,3 +11,9 @@ Dmitry Jemerov + +### Constructors + + +| [<init>](test/-c/-init-) | `C()` | + diff --git a/test/data/format/javaSupertype.html b/test/data/format/javaSupertype.html index 2bcc2fce..4c847281 100644 --- a/test/data/format/javaSupertype.html +++ b/test/data/format/javaSupertype.html @@ -1,22 +1,33 @@ -test / test.C.Bar +test / C.Bar -test / test / C / Bar
+test / C / Bar

Bar

-open class Bar : Foo
+open class Bar : Foo


+

Constructors

+
-bar open fun bar(): Unit
+ + + + + + +
+<init> +Bar()

Functions

+returnFoo +open fun returnFoo(foo: Foo): Foo
-returnFoo -open fun returnFoo(foo: Foo): Foo
diff --git a/test/data/format/javaSupertype.java b/test/data/format/javaSupertype.java index 295c319f..b3142ff6 100644 --- a/test/data/format/javaSupertype.java +++ b/test/data/format/javaSupertype.java @@ -1,5 +1,3 @@ -package test; - class C { public static class Foo { } diff --git a/test/data/format/javadocHtml.java b/test/data/format/javadocHtml.java index bcb2cf91..622116b2 100644 --- a/test/data/format/javadocHtml.java +++ b/test/data/format/javadocHtml.java @@ -1,5 +1,3 @@ -package test; - /** * Bold * Strong diff --git a/test/data/format/javadocHtml.md b/test/data/format/javadocHtml.md index a75ebf35..db71cc3b 100644 --- a/test/data/format/javadocHtml.md +++ b/test/data/format/javadocHtml.md @@ -1,4 +1,4 @@ -[test](test/index) / [test](test/test/index) / [C](test/test/-c) +[test](test/index) / [C](test/-c/index) # C @@ -19,3 +19,9 @@ Block code + +### Constructors + + +| [<init>](test/-c/-init-) | `C()` | + diff --git a/test/data/format/javadocOrderedList.java b/test/data/format/javadocOrderedList.java index 1c7f8a3e..c32d9032 100644 --- a/test/data/format/javadocOrderedList.java +++ b/test/data/format/javadocOrderedList.java @@ -1,5 +1,3 @@ -package test; - /** *
    *
  1. Rinse
  2. diff --git a/test/data/format/javadocOrderedList.md b/test/data/format/javadocOrderedList.md index acd3e809..02a3c095 100644 --- a/test/data/format/javadocOrderedList.md +++ b/test/data/format/javadocOrderedList.md @@ -1,4 +1,4 @@ -[test](test/index) / [test](test/test/index) / [Bar](test/test/-bar) +[test](test/index) / [Bar](test/-bar/index) # Bar @@ -12,3 +12,9 @@ + +### Constructors + + +| [<init>](test/-bar/-init-) | `Bar()` | + diff --git a/test/data/java/annotatedAnnotation.java b/test/data/java/annotatedAnnotation.java index d9fae956..6296e400 100644 --- a/test/data/java/annotatedAnnotation.java +++ b/test/data/java/annotatedAnnotation.java @@ -1,6 +1,5 @@ -package test; +import java.lang.annotation.*; -@Retention(RetentionPolicy.RUNTIME) @Target({ElementType.FIELD, ElementType.TYPE, ElementType.METHOD}) public @interface Attribute { String value() default ""; diff --git a/test/data/java/arrayType.java b/test/data/java/arrayType.java index a50e3bf6..dc42a207 100644 --- a/test/data/java/arrayType.java +++ b/test/data/java/arrayType.java @@ -1,5 +1,3 @@ -package test; - class Test { public String[] arrayToString(int[] data) { return null; diff --git a/test/data/java/constructors.java b/test/data/java/constructors.java index 3b1838dd..6f899d18 100644 --- a/test/data/java/constructors.java +++ b/test/data/java/constructors.java @@ -1,5 +1,3 @@ -package test; - class Test { public Test() {} diff --git a/test/data/java/deprecation.java b/test/data/java/deprecation.java index 07cbd901..be8decd6 100644 --- a/test/data/java/deprecation.java +++ b/test/data/java/deprecation.java @@ -1,5 +1,6 @@ -package test; - class C { - @Deprecated("This should no longer be used") void fn() {} + /** + * @deprecated This should no longer be used + */ + void fn() {} } \ No newline at end of file diff --git a/test/data/java/enumValues.java b/test/data/java/enumValues.java index 0f622946..d8dda934 100644 --- a/test/data/java/enumValues.java +++ b/test/data/java/enumValues.java @@ -1,5 +1,3 @@ -package test; - enum E { Foo } \ No newline at end of file diff --git a/test/data/java/field.java b/test/data/java/field.java index 47dac0a4..d9ae75f9 100644 --- a/test/data/java/field.java +++ b/test/data/java/field.java @@ -1,5 +1,3 @@ -package test; - class Test { public int i; public static final String s; diff --git a/test/data/java/inheritorLinks.java b/test/data/java/inheritorLinks.java index 96caeb1d..2378f5c6 100644 --- a/test/data/java/inheritorLinks.java +++ b/test/data/java/inheritorLinks.java @@ -1,5 +1,3 @@ -package test; - class C { public static class Foo { } diff --git a/test/data/java/innerClass.java b/test/data/java/innerClass.java index dd08e100..0f1be948 100644 --- a/test/data/java/innerClass.java +++ b/test/data/java/innerClass.java @@ -1,5 +1,3 @@ -package test; - class Test { public class D { } diff --git a/test/data/java/javaLangObject.java b/test/data/java/javaLangObject.java index 8f16629c..be3dd570 100644 --- a/test/data/java/javaLangObject.java +++ b/test/data/java/javaLangObject.java @@ -1,5 +1,3 @@ -package test; - class Test { public Object fn() { return null; } } diff --git a/test/data/java/member.java b/test/data/java/member.java index a417ff7e..d4f4b8d5 100644 --- a/test/data/java/member.java +++ b/test/data/java/member.java @@ -1,5 +1,3 @@ -package test - class Test { /** * Summary for Function diff --git a/test/data/java/memberWithModifiers.java b/test/data/java/memberWithModifiers.java index 7c236224..ea645c21 100644 --- a/test/data/java/memberWithModifiers.java +++ b/test/data/java/memberWithModifiers.java @@ -1,6 +1,4 @@ -package test - -abstract class Test { +public abstract class Test { /** * Summary for Function * @param name is String parameter diff --git a/test/data/java/staticMethod.java b/test/data/java/staticMethod.java index 2bbbbf1b..a2ecd7f1 100644 --- a/test/data/java/staticMethod.java +++ b/test/data/java/staticMethod.java @@ -1,5 +1,3 @@ -package test; - class C { public static void foo() { } diff --git a/test/data/java/superClass.java b/test/data/java/superClass.java index 99535813..31b5fa96 100644 --- a/test/data/java/superClass.java +++ b/test/data/java/superClass.java @@ -1,4 +1,2 @@ -package test; - public class Foo extends Exception implements Cloneable { } diff --git a/test/data/java/typeParameter.java b/test/data/java/typeParameter.java index 98a6aee9..5a24b30a 100644 --- a/test/data/java/typeParameter.java +++ b/test/data/java/typeParameter.java @@ -1,5 +1,3 @@ -package test - class Foo> { public E foo(); } diff --git a/test/data/java/varargs.java b/test/data/java/varargs.java index a6af6a8d..d184564e 100644 --- a/test/data/java/varargs.java +++ b/test/data/java/varargs.java @@ -1,5 +1,3 @@ -package test - class Foo { public void bar(String... x); } diff --git a/test/src/TestAPI.kt b/test/src/TestAPI.kt index 4a0e4fb4..82353610 100644 --- a/test/src/TestAPI.kt +++ b/test/src/TestAPI.kt @@ -2,6 +2,7 @@ package org.jetbrains.dokka.tests import com.intellij.openapi.application.PathManager import com.intellij.openapi.util.Disposer +import com.intellij.openapi.util.io.FileUtil import org.jetbrains.dokka.* import org.jetbrains.kotlin.cli.common.messages.CompilerMessageLocation import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity @@ -66,11 +67,34 @@ public fun verifyModel(source: String, verifier = verifier) } -public fun verifyPackageMember(kotlinSource: String, +public fun verifyPackageMember(source: String, withJdk: Boolean = false, withKotlinRuntime: Boolean = false, verifier: (DocumentationNode) -> Unit) { - verifyModel(kotlinSource, withJdk = withJdk, withKotlinRuntime = withKotlinRuntime) { model -> + verifyModel(source, withJdk = withJdk, withKotlinRuntime = withKotlinRuntime) { model -> + val pkg = model.members.single() + verifier(pkg.members.single()) + } +} + +public fun verifyJavaModel(source: String, + withKotlinRuntime: Boolean = false, + verifier: (DocumentationModule) -> Unit) { + val tempDir = FileUtil.createTempDirectory("dokka", "") + try { + val sourceFile = File(source) + FileUtil.copy(sourceFile, File(tempDir, sourceFile.name)) + verifyModel(JavaSourceRoot(tempDir), withJdk = true, withKotlinRuntime = withKotlinRuntime, verifier = verifier) + } + finally { + FileUtil.delete(tempDir) + } +} + +public fun verifyJavaPackageMember(source: String, + withKotlinRuntime: Boolean = false, + verifier: (DocumentationNode) -> Unit) { + verifyJavaModel(source, withKotlinRuntime) { model -> val pkg = model.members.single() verifier(pkg.members.single()) } @@ -82,15 +106,22 @@ public fun verifyOutput(roots: Array, withKotlinRuntime: Boolean = false, outputGenerator: (DocumentationModule, StringBuilder) -> Unit) { verifyModel(*roots, withJdk = withJdk, withKotlinRuntime = withKotlinRuntime) { - val output = StringBuilder() - outputGenerator(it, output) - val ext = outputExtension.removePrefix(".") - val path = roots.first().path - val expectedOutput = File(path.replaceAfterLast(".", ext, path + "." + ext)).readText() - assertEqualsIgnoringSeparators(expectedOutput, output.toString()) + verifyModelOutput(it, outputExtension, outputGenerator, roots.first().path) } } +private fun verifyModelOutput(it: DocumentationModule, + outputExtension: String, + outputGenerator: (DocumentationModule, StringBuilder) -> Unit, + sourcePath: String) { + val output = StringBuilder() + outputGenerator(it, output) + val ext = outputExtension.removePrefix(".") + val path = sourcePath + val expectedOutput = File(path.replaceAfterLast(".", ext, path + "." + ext)).readText() + assertEqualsIgnoringSeparators(expectedOutput, output.toString()) +} + public fun verifyOutput(path: String, outputExtension: String, withJdk: Boolean = false, @@ -99,6 +130,15 @@ public fun verifyOutput(path: String, verifyOutput(arrayOf(contentRootFromPath(path)), outputExtension, withJdk, withKotlinRuntime, outputGenerator) } +public fun verifyJavaOutput(path: String, + outputExtension: String, + withKotlinRuntime: Boolean = false, + outputGenerator: (DocumentationModule, StringBuilder) -> Unit) { + verifyJavaModel(path, withKotlinRuntime) { model -> + verifyModelOutput(model, outputExtension, outputGenerator, path) + } +} + public fun assertEqualsIgnoringSeparators(expectedOutput: String, output: String) { Assert.assertEquals(expectedOutput.replace("\r\n", "\n"), output.replace("\r\n", "\n")) } diff --git a/test/src/format/HtmlFormatTest.kt b/test/src/format/HtmlFormatTest.kt index 66fd0fee..752e4424 100644 --- a/test/src/format/HtmlFormatTest.kt +++ b/test/src/format/HtmlFormatTest.kt @@ -99,31 +99,31 @@ public class HtmlFormatTest { } @Test fun javaSupertypeLink() { - verifyOutput("test/data/format/javaSupertype.java", ".html") { model, output -> + verifyJavaOutput("test/data/format/javaSupertype.java", ".html") { model, output -> htmlService.appendNodes(tempLocation, output, model.members.single().members.single { it.name == "C"}.members.filter { it.name == "Bar"} ) } } @Test fun javaLinkTag() { - verifyOutput("test/data/format/javaLinkTag.java", ".html", withJdk = true) { model, output -> + verifyJavaOutput("test/data/format/javaLinkTag.java", ".html") { model, output -> htmlService.appendNodes(tempLocation, output, model.members.single().members) } } @Test fun javaLinkTagWithLabel() { - verifyOutput("test/data/format/javaLinkTagWithLabel.java", ".html", withJdk = true) { model, output -> + verifyJavaOutput("test/data/format/javaLinkTagWithLabel.java", ".html") { model, output -> htmlService.appendNodes(tempLocation, output, model.members.single().members) } } @Test fun javaSeeTag() { - verifyOutput("test/data/format/javaSeeTag.java", ".html", withJdk = true) { model, output -> + verifyJavaOutput("test/data/format/javaSeeTag.java", ".html") { model, output -> htmlService.appendNodes(tempLocation, output, model.members.single().members) } } @Test fun javaDeprecated() { - verifyOutput("test/data/format/javaDeprecated.java", ".html") { model, output -> + verifyJavaOutput("test/data/format/javaDeprecated.java", ".html") { model, output -> htmlService.appendNodes(tempLocation, output, model.members.single().members.single { it.name == "Foo" }.members.filter { it.name == "foo" }) } } diff --git a/test/src/format/MarkdownFormatTest.kt b/test/src/format/MarkdownFormatTest.kt index bb61fa1c..1a09ae60 100644 --- a/test/src/format/MarkdownFormatTest.kt +++ b/test/src/format/MarkdownFormatTest.kt @@ -121,25 +121,25 @@ public class MarkdownFormatTest { } @Test fun javadocHtml() { - verifyOutput("test/data/format/javadocHtml.java", ".md", withJdk = true) { model, output -> + verifyJavaOutput("test/data/format/javadocHtml.java", ".md") { model, output -> markdownService.appendNodes(tempLocation, output, model.members.single().members) } } @Test fun javaCodeLiteralTags() { - verifyOutput("test/data/format/javaCodeLiteralTags.java", ".md", withJdk = true) { model, output -> + verifyJavaOutput("test/data/format/javaCodeLiteralTags.java", ".md") { model, output -> markdownService.appendNodes(tempLocation, output, model.members.single().members) } } @Test fun javaCodeInParam() { - verifyOutput("test/data/format/javaCodeInParam.java", ".md", withJdk = true) { model, output -> + verifyJavaOutput("test/data/format/javaCodeInParam.java", ".md") { model, output -> markdownService.appendNodes(tempLocation, output, model.members.single().members) } } @Test fun javaSpaceInAuthor() { - verifyOutput("test/data/format/javaSpaceInAuthor.java", ".md", withJdk = true) { model, output -> + verifyJavaOutput("test/data/format/javaSpaceInAuthor.java", ".md") { model, output -> markdownService.appendNodes(tempLocation, output, model.members.single().members) } } @@ -157,7 +157,7 @@ public class MarkdownFormatTest { } @Test fun javadocOrderedList() { - verifyOutput("test/data/format/javadocOrderedList.java", ".md", withJdk = true) { model, output -> + verifyJavaOutput("test/data/format/javadocOrderedList.java", ".md") { model, output -> markdownService.appendNodes(tempLocation, output, model.members.single().members.filter { it.name == "Bar" }) } } diff --git a/test/src/model/JavaTest.kt b/test/src/model/JavaTest.kt index 5ec29b25..0633a5cc 100644 --- a/test/src/model/JavaTest.kt +++ b/test/src/model/JavaTest.kt @@ -9,12 +9,11 @@ import kotlin.test.assertTrue public class JavaTest { @Test fun function() { - verifyPackageMember("test/data/java/member.java") { cls -> + verifyJavaPackageMember("test/data/java/member.java") { cls -> assertEquals("Test", cls.name) assertEquals(DocumentationNode.Kind.Class, cls.kind) - with(cls.members.single()) { + with(cls.members(DocumentationNode.Kind.Function).single()) { assertEquals("fn", name) - assertEquals(DocumentationNode.Kind.Function, kind) assertEquals("Summary for Function", content.summary.toTestString().trimEnd()) assertEquals(3, content.sections.size) with(content.sections[0]) { @@ -47,8 +46,9 @@ public class JavaTest { } @Test fun memberWithModifiers() { - verifyPackageMember("test/data/java/memberWithModifiers.java") { cls -> - assertEquals("abstract", cls.details[0].name) + verifyJavaPackageMember("test/data/java/memberWithModifiers.java") { cls -> + val modifiers = cls.details(DocumentationNode.Kind.Modifier).map { it.name } + assertTrue("abstract" in modifiers) with(cls.members.single { it.name == "fn" }) { assertEquals("protected", details[0].name) } @@ -59,7 +59,7 @@ public class JavaTest { } @Test fun superClass() { - verifyPackageMember("test/data/java/superClass.java") { cls -> + verifyJavaPackageMember("test/data/java/superClass.java") { cls -> val superTypes = cls.details(DocumentationNode.Kind.Supertype) assertEquals(2, superTypes.size) assertEquals("Exception", superTypes[0].name) @@ -68,22 +68,21 @@ public class JavaTest { } @Test fun arrayType() { - verifyPackageMember("test/data/java/arrayType.java") { cls -> - with(cls.members.single()) { + verifyJavaPackageMember("test/data/java/arrayType.java") { cls -> + with(cls.members(DocumentationNode.Kind.Function).single()) { val type = detail(DocumentationNode.Kind.Type) assertEquals("Array", type.name) assertEquals("String", type.detail(DocumentationNode.Kind.Type).name) with(details(DocumentationNode.Kind.Parameter).single()) { val parameterType = detail(DocumentationNode.Kind.Type) - assertEquals("Array", parameterType.name) - assertEquals("Int", parameterType.detail(DocumentationNode.Kind.Type).name) + assertEquals("IntArray", parameterType.name) } } } } @Test fun typeParameter() { - verifyPackageMember("test/data/java/typeParameter.java") { cls -> + verifyJavaPackageMember("test/data/java/typeParameter.java") { cls -> val typeParameters = cls.details(DocumentationNode.Kind.TypeParameter) with(typeParameters.single()) { assertEquals("T", name) @@ -92,7 +91,7 @@ public class JavaTest { assertEquals("T", detail(DocumentationNode.Kind.Type).name) } } - with(cls.members.single()) { + with(cls.members(DocumentationNode.Kind.Function).single()) { val methodTypeParameters = details(DocumentationNode.Kind.TypeParameter) with(methodTypeParameters.single()) { assertEquals("E", name) @@ -102,7 +101,7 @@ public class JavaTest { } @Test fun constructors() { - verifyPackageMember("test/data/java/constructors.java") { cls -> + verifyJavaPackageMember("test/data/java/constructors.java") { cls -> val constructors = cls.members(DocumentationNode.Kind.Constructor) assertEquals(2, constructors.size) with(constructors[0]) { @@ -112,17 +111,17 @@ public class JavaTest { } @Test fun innerClass() { - verifyPackageMember("test/data/java/innerClass.java") { cls -> + verifyJavaPackageMember("test/data/java/innerClass.java") { cls -> val innerClass = cls.members(DocumentationNode.Kind.Class).single() assertEquals("D", innerClass.name) } } @Test fun varargs() { - verifyPackageMember("test/data/java/varargs.java") { cls -> + verifyJavaPackageMember("test/data/java/varargs.java") { cls -> val fn = cls.members(DocumentationNode.Kind.Function).single() val param = fn.detail(DocumentationNode.Kind.Parameter) - assertEquals("vararg", param.annotations.first().name) + assertEquals("vararg", param.details(DocumentationNode.Kind.Modifier).first().name) val psiType = param.detail(DocumentationNode.Kind.Type) assertEquals("String", psiType.name) assertTrue(psiType.details(DocumentationNode.Kind.Type).isEmpty()) @@ -130,26 +129,28 @@ public class JavaTest { } @Test fun fields() { - verifyPackageMember("test/data/java/field.java") { cls -> + verifyJavaPackageMember("test/data/java/field.java") { cls -> val i = cls.members(DocumentationNode.Kind.Property).single { it.name == "i" } assertEquals("Int", i.detail(DocumentationNode.Kind.Type).name) assertTrue("var" in i.details(DocumentationNode.Kind.Modifier).map { it.name }) - val s = cls.members(DocumentationNode.Kind.CompanionObjectProperty).single { it.name == "s" } + + val s = cls.members(DocumentationNode.Kind.Property).single { it.name == "s" } assertEquals("String", s.detail(DocumentationNode.Kind.Type).name) assertFalse("var" in s.details(DocumentationNode.Kind.Modifier).map { it.name }) + assertTrue("static" in s.details(DocumentationNode.Kind.Modifier).map { it.name }) } } @Test fun staticMethod() { - verifyPackageMember("test/data/java/staticMethod.java") { cls -> - val m = cls.members(DocumentationNode.Kind.CompanionObjectFunction).single { it.name == "foo" } - assertFalse("static" in m.details(DocumentationNode.Kind.Modifier).map { it.name }) + verifyJavaPackageMember("test/data/java/staticMethod.java") { cls -> + val m = cls.members(DocumentationNode.Kind.Function).single { it.name == "foo" } + assertTrue("static" in m.details(DocumentationNode.Kind.Modifier).map { it.name }) } } @Test fun annotatedAnnotation() { - verifyPackageMember("test/data/java/annotatedAnnotation.java") { cls -> - assertEquals(2, cls.annotations.size) + verifyJavaPackageMember("test/data/java/annotatedAnnotation.java") { cls -> + assertEquals(1, cls.annotations.size) with(cls.annotations[0]) { assertEquals(1, details.count()) with(details[0]) { @@ -157,7 +158,7 @@ public class JavaTest { assertEquals(1, details.count()) with(details[0]) { assertEquals(DocumentationNode.Kind.Value, kind) - assertEquals("RetentionPolicy.RUNTIME", name) + assertEquals("[AnnotationTarget.FIELD, AnnotationTarget.CLASS, AnnotationTarget.FILE, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER]", name) } } } @@ -165,31 +166,21 @@ public class JavaTest { } @Test fun deprecation() { - verifyPackageMember("test/data/java/deprecation.java", withJdk = true) { cls -> + verifyJavaPackageMember("test/data/java/deprecation.java") { cls -> val fn = cls.members(DocumentationNode.Kind.Function).single() - with(fn.deprecation!!) { - assertEquals(1, details.count()) - with(details[0]) { - assertEquals(DocumentationNode.Kind.Parameter, kind) - assertEquals(1, details.count()) - with(details[0]) { - assertEquals(DocumentationNode.Kind.Value, kind) - assertEquals("This should no longer be used", name) - } - } - } + assertEquals("This should no longer be used", fn.deprecation!!.content.toTestString()) } } @Test fun javaLangObject() { - verifyPackageMember("test/data/java/javaLangObject.java", withJdk = true) { cls -> + verifyJavaPackageMember("test/data/java/javaLangObject.java") { cls -> val fn = cls.members(DocumentationNode.Kind.Function).single() assertEquals("Any", fn.detail(DocumentationNode.Kind.Type).name) } } @Test fun enumValues() { - verifyPackageMember("test/data/java/enumValues.java", withJdk = true) { cls -> + verifyJavaPackageMember("test/data/java/enumValues.java") { cls -> val superTypes = cls.details(DocumentationNode.Kind.Supertype) assertEquals(0, superTypes.size) assertEquals(1, cls.members(DocumentationNode.Kind.EnumItem).size) @@ -197,7 +188,7 @@ public class JavaTest { } @Test fun inheritorLinks() { - verifyPackageMember("test/data/java/inheritorLinks.java") { cls -> + verifyJavaPackageMember("test/data/java/inheritorLinks.java") { cls -> val fooClass = cls.members.single { it.name == "Foo" } val inheritors = fooClass.references(DocumentationReference.Kind.Inheritor) assertEquals(1, inheritors.size) -- cgit