aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorDmitry Jemerov <intelliyole@gmail.com>2015-01-12 16:06:54 +0100
committerDmitry Jemerov <intelliyole@gmail.com>2015-01-12 16:06:54 +0100
commit49feb9021ca24150257caac4a62af5628f52b6b5 (patch)
treee5b53761a5338b9931bfe6969cbee988596ec28e /test
parent5f47bc17630ef1457b36054dc8b19011d9d14132 (diff)
parent23af5e2540aca25ab64deec1821a069f827d7c77 (diff)
downloaddokka-49feb9021ca24150257caac4a62af5628f52b6b5.tar.gz
dokka-49feb9021ca24150257caac4a62af5628f52b6b5.tar.bz2
dokka-49feb9021ca24150257caac4a62af5628f52b6b5.zip
Merge pull request #9 from orangy/annotations
Support annotation classes and annotations in model and rendered output
Diffstat (limited to 'test')
-rw-r--r--test/data/classes/annotatedClass.kt1
-rw-r--r--test/data/classes/annotatedClassWithAnnotationParameters.kt1
-rw-r--r--test/data/classes/javaAnnotationClass.kt5
-rw-r--r--test/data/format/annotationClass.kt1
-rw-r--r--test/data/format/annotationClass.md18
-rw-r--r--test/data/format/annotationParams.kt1
-rw-r--r--test/data/format/annotationParams.md12
-rw-r--r--test/data/format/annotations.kt6
-rw-r--r--test/data/format/annotations.md30
-rw-r--r--test/data/format/classWithClassObject.md6
-rw-r--r--test/data/format/deprecated.class.html46
-rw-r--r--test/data/format/deprecated.kt5
-rw-r--r--test/data/format/deprecated.package.html44
-rw-r--r--test/data/format/extensions.class.md16
-rw-r--r--test/data/format/extensions.kt19
-rw-r--r--test/data/format/extensions.package.md18
-rw-r--r--test/data/functions/annotatedFunction.kt2
-rw-r--r--test/data/functions/annotatedFunctionWithAnnotationParameters.kt1
-rw-r--r--test/data/functions/functionWithAnnotatedParam.kt2
-rw-r--r--test/data/functions/functionWithReceiver.kt8
-rw-r--r--test/data/properties/annotatedProperty.kt1
-rw-r--r--test/data/properties/propertyWithReceiver.kt2
-rw-r--r--test/src/TestAPI.kt12
-rw-r--r--test/src/format/HtmlFormatTest.kt9
-rw-r--r--test/src/format/MarkdownFormatTest.kt27
-rw-r--r--test/src/model/ClassTest.kt56
-rw-r--r--test/src/model/FunctionTest.kt89
-rw-r--r--test/src/model/PropertyTest.kt26
28 files changed, 438 insertions, 26 deletions
diff --git a/test/data/classes/annotatedClass.kt b/test/data/classes/annotatedClass.kt
new file mode 100644
index 00000000..62c6f0ec
--- /dev/null
+++ b/test/data/classes/annotatedClass.kt
@@ -0,0 +1 @@
+data class Foo() {}
diff --git a/test/data/classes/annotatedClassWithAnnotationParameters.kt b/test/data/classes/annotatedClassWithAnnotationParameters.kt
new file mode 100644
index 00000000..1af97e75
--- /dev/null
+++ b/test/data/classes/annotatedClassWithAnnotationParameters.kt
@@ -0,0 +1 @@
+deprecated("should no longer be used") class Foo() {}
diff --git a/test/data/classes/javaAnnotationClass.kt b/test/data/classes/javaAnnotationClass.kt
new file mode 100644
index 00000000..c5f5cac4
--- /dev/null
+++ b/test/data/classes/javaAnnotationClass.kt
@@ -0,0 +1,5 @@
+import java.lang.annotation.Retention
+import java.lang.annotation.RetentionPolicy
+
+Retention(RetentionPolicy.SOURCE)
+public annotation class throws()
diff --git a/test/data/format/annotationClass.kt b/test/data/format/annotationClass.kt
new file mode 100644
index 00000000..89d494fb
--- /dev/null
+++ b/test/data/format/annotationClass.kt
@@ -0,0 +1 @@
+annotation class fancy
diff --git a/test/data/format/annotationClass.md b/test/data/format/annotationClass.md
new file mode 100644
index 00000000..301eff08
--- /dev/null
+++ b/test/data/format/annotationClass.md
@@ -0,0 +1,18 @@
+[test](out.md) / [](out.md) / [fancy](out.md)
+
+
+# fancy
+
+
+```
+annotation class fancy
+```
+
+
+
+
+### Constructors
+
+
+| [&lt;init&gt;](out.md) | `public fancy()` |
+
diff --git a/test/data/format/annotationParams.kt b/test/data/format/annotationParams.kt
new file mode 100644
index 00000000..ee5b524a
--- /dev/null
+++ b/test/data/format/annotationParams.kt
@@ -0,0 +1 @@
+inlineOptions(InlineOption.LOCAL_CONTINUE_AND_BREAK) fun f() {}
diff --git a/test/data/format/annotationParams.md b/test/data/format/annotationParams.md
new file mode 100644
index 00000000..6bbdc0e5
--- /dev/null
+++ b/test/data/format/annotationParams.md
@@ -0,0 +1,12 @@
+[test](out.md) / [](out.md) / [f](out.md)
+
+
+# f
+
+
+```
+inlineOptions([InlineOption.LOCAL_CONTINUE_AND_BREAK]) fun f(): Unit
+```
+
+
+
diff --git a/test/data/format/annotations.kt b/test/data/format/annotations.kt
new file mode 100644
index 00000000..9356d4ca
--- /dev/null
+++ b/test/data/format/annotations.kt
@@ -0,0 +1,6 @@
+data class Foo {
+ inline fun bar([noinline] notInlined: () -> Unit) {
+ }
+
+ inline val x: Int
+}
diff --git a/test/data/format/annotations.md b/test/data/format/annotations.md
new file mode 100644
index 00000000..e745213e
--- /dev/null
+++ b/test/data/format/annotations.md
@@ -0,0 +1,30 @@
+[test](out.md) / [](out.md) / [Foo](out.md)
+
+
+# Foo
+
+
+```
+data class Foo
+```
+
+
+
+
+### Constructors
+
+
+| [&lt;init&gt;](out.md) | `public Foo()` |
+
+
+### Properties
+
+
+| [x](out.md) | `inline val x: Int` |
+
+
+### Functions
+
+
+| [bar](out.md) | `inline fun bar(noinline notInlined: () -&gt; Unit): Unit` |
+
diff --git a/test/data/format/classWithClassObject.md b/test/data/format/classWithClassObject.md
index f694a76f..796ecce2 100644
--- a/test/data/format/classWithClassObject.md
+++ b/test/data/format/classWithClassObject.md
@@ -14,17 +14,17 @@ class Klass
### Constructors
-| [&lt;init&gt;](out.md) | `public Klass()` |
+| [&lt;init&gt;](out.md) | `public Klass()` |
### Class Object Properties
-| [x](out.md) | `val x: Int` |
+| [x](out.md) | `val x: Int` |
### Class Object Functions
-| [foo](out.md) | `fun foo(): Unit` |
+| [foo](out.md) | `fun foo(): Unit` |
diff --git a/test/data/format/deprecated.class.html b/test/data/format/deprecated.class.html
new file mode 100644
index 00000000..87599082
--- /dev/null
+++ b/test/data/format/deprecated.class.html
@@ -0,0 +1,46 @@
+<HTML>
+<HEAD>
+</HEAD>
+<BODY>
+<a href="out.html">test</a>&nbsp;/&nbsp;<a href="out.html"></a>&nbsp;/&nbsp;<a href="out.html">C</a><br/>
+<br/>
+<h1>C</h1>
+<pre><code><span class="keyword">class </span><s><span class="identifier">C</span></s></code></pre><strong>Deprecated: </strong>This class sucks<br/>
+<br/>
+<br/>
+<a href="out.html">test</a>&nbsp;/&nbsp;<a href="out.html"></a>&nbsp;/&nbsp;<a href="out.html">f</a><br/>
+<br/>
+<h1>f</h1>
+<pre><code><span class="keyword">fun </span><s><span class="identifier">f</span></s><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><span class="identifier">Unit</span></code></pre><strong>Deprecated: </strong>This function sucks<br/>
+<br/>
+<br/>
+<a href="out.html">test</a>&nbsp;/&nbsp;<a href="out.html"></a>&nbsp;/&nbsp;<a href="out.html">p</a><br/>
+<br/>
+<h1>p</h1>
+<pre><code><span class="keyword">val </span><s><span class="identifier">p</span></s><span class="symbol">: </span><span class="identifier">Int</span></code></pre><strong>Deprecated: </strong>This property sucks<br/>
+<br/>
+<br/>
+<h3>Constructors</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<a href="out.html">&lt;init&gt;</a></td>
+<td>
+<code><span class="keyword">public</span> <span class="identifier">C</span><span class="symbol">(</span><span class="symbol">)</span></code></td>
+</tr>
+</tbody>
+</table>
+<h3>Accessors</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<a href="out.html">get</a></td>
+<td>
+<code></code></td>
+</tr>
+</tbody>
+</table>
+</BODY>
+</HTML>
diff --git a/test/data/format/deprecated.kt b/test/data/format/deprecated.kt
new file mode 100644
index 00000000..9ee2c1d6
--- /dev/null
+++ b/test/data/format/deprecated.kt
@@ -0,0 +1,5 @@
+deprecated("This class sucks") class C() { }
+
+deprecated("This function sucks") fun f() { }
+
+deprecated("This property sucks") val p: Int get() = 0
diff --git a/test/data/format/deprecated.package.html b/test/data/format/deprecated.package.html
new file mode 100644
index 00000000..cf563a8b
--- /dev/null
+++ b/test/data/format/deprecated.package.html
@@ -0,0 +1,44 @@
+<HTML>
+<HEAD>
+</HEAD>
+<BODY>
+<a href="out.html">test</a>&nbsp;/&nbsp;<a href="out.html"></a><br/>
+<br/>
+<h1></h1>
+<pre><code><span class="keyword">package</span> <span class="identifier"></span></code></pre><br/>
+<br/>
+<h3>Types</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<a href="out.html">C</a></td>
+<td>
+<code><span class="keyword">class </span><s><span class="identifier">C</span></s></code></td>
+</tr>
+</tbody>
+</table>
+<h3>Properties</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<a href="out.html">p</a></td>
+<td>
+<code><span class="keyword">val </span><s><span class="identifier">p</span></s><span class="symbol">: </span><span class="identifier">Int</span></code></td>
+</tr>
+</tbody>
+</table>
+<h3>Functions</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<a href="out.html">f</a></td>
+<td>
+<code><span class="keyword">fun </span><s><span class="identifier">f</span></s><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><span class="identifier">Unit</span></code></td>
+</tr>
+</tbody>
+</table>
+</BODY>
+</HTML>
diff --git a/test/data/format/extensions.class.md b/test/data/format/extensions.class.md
new file mode 100644
index 00000000..a9747756
--- /dev/null
+++ b/test/data/format/extensions.class.md
@@ -0,0 +1,16 @@
+[test](out.md) / [foo](out.md) / [String](out.md)
+
+
+### Extensions for String
+
+
+| [fn](out.md) | `fun String.fn(): Unit`
+`fun String.fn(x: Int): Unit`
+Function with receiver
+
+ |
+| [foobar](out.md) | `val String.foobar: Int`
+Property with receiver.
+
+ |
+
diff --git a/test/data/format/extensions.kt b/test/data/format/extensions.kt
new file mode 100644
index 00000000..6f2eff9d
--- /dev/null
+++ b/test/data/format/extensions.kt
@@ -0,0 +1,19 @@
+package foo
+
+/**
+ * Function with receiver
+ */
+fun String.fn() {
+}
+
+/**
+ * Function with receiver
+ */
+fun String.fn(x: Int) {
+}
+
+/**
+ * Property with receiver.
+ */
+val String.foobar: Int
+ get() = size() * 2
diff --git a/test/data/format/extensions.package.md b/test/data/format/extensions.package.md
new file mode 100644
index 00000000..13f40457
--- /dev/null
+++ b/test/data/format/extensions.package.md
@@ -0,0 +1,18 @@
+[test](out.md) / [foo](out.md)
+
+
+# foo
+
+
+```
+package foo
+```
+
+
+
+
+### Extensions for External Classes
+
+
+| [String](out.md) | `` |
+
diff --git a/test/data/functions/annotatedFunction.kt b/test/data/functions/annotatedFunction.kt
new file mode 100644
index 00000000..11c19672
--- /dev/null
+++ b/test/data/functions/annotatedFunction.kt
@@ -0,0 +1,2 @@
+inline fun f() {
+}
diff --git a/test/data/functions/annotatedFunctionWithAnnotationParameters.kt b/test/data/functions/annotatedFunctionWithAnnotationParameters.kt
new file mode 100644
index 00000000..ee5b524a
--- /dev/null
+++ b/test/data/functions/annotatedFunctionWithAnnotationParameters.kt
@@ -0,0 +1 @@
+inlineOptions(InlineOption.LOCAL_CONTINUE_AND_BREAK) fun f() {}
diff --git a/test/data/functions/functionWithAnnotatedParam.kt b/test/data/functions/functionWithAnnotatedParam.kt
new file mode 100644
index 00000000..8922f765
--- /dev/null
+++ b/test/data/functions/functionWithAnnotatedParam.kt
@@ -0,0 +1,2 @@
+fun function([noinline] notInlined: () -> Unit) {
+}
diff --git a/test/data/functions/functionWithReceiver.kt b/test/data/functions/functionWithReceiver.kt
index 663c3e56..c8473251 100644
--- a/test/data/functions/functionWithReceiver.kt
+++ b/test/data/functions/functionWithReceiver.kt
@@ -2,4 +2,10 @@
* Function with receiver
*/
fun String.fn() {
-} \ No newline at end of file
+}
+
+/**
+ * Function with receiver
+ */
+fun String.fn(x: Int) {
+}
diff --git a/test/data/properties/annotatedProperty.kt b/test/data/properties/annotatedProperty.kt
new file mode 100644
index 00000000..f70c28b4
--- /dev/null
+++ b/test/data/properties/annotatedProperty.kt
@@ -0,0 +1 @@
+inline val property = "test" \ No newline at end of file
diff --git a/test/data/properties/propertyWithReceiver.kt b/test/data/properties/propertyWithReceiver.kt
new file mode 100644
index 00000000..e282f6bd
--- /dev/null
+++ b/test/data/properties/propertyWithReceiver.kt
@@ -0,0 +1,2 @@
+val String.foobar: Int
+ get() = size() * 2
diff --git a/test/src/TestAPI.kt b/test/src/TestAPI.kt
index cc09f001..e559e337 100644
--- a/test/src/TestAPI.kt
+++ b/test/src/TestAPI.kt
@@ -4,9 +4,9 @@ import org.jetbrains.jet.cli.common.messages.*
import com.intellij.openapi.util.*
import kotlin.test.fail
import org.jetbrains.dokka.*
-import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor
import java.io.File
-import kotlin.test.assertEquals
+import com.intellij.openapi.application.PathManager
+import org.junit.Assert
public fun verifyModel(vararg files: String, verifier: (DocumentationModule) -> Unit) {
val messageCollector = object : MessageCollector {
@@ -27,6 +27,8 @@ public fun verifyModel(vararg files: String, verifier: (DocumentationModule) ->
}
val environment = AnalysisEnvironment(messageCollector) {
+ val stringRoot = PathManager.getResourceRoot(javaClass<String>(), "/java/lang/String.class")
+ addClasspath(File(stringRoot))
addSources(files.toList())
}
@@ -34,10 +36,6 @@ public fun verifyModel(vararg files: String, verifier: (DocumentationModule) ->
val documentation = environment.withContext { environment, session ->
val fragments = environment.getSourceFiles().map { session.getPackageFragment(it.getPackageFqName()) }.filterNotNull().distinct()
- val descriptors = hashMapOf<String, List<DeclarationDescriptor>>()
- for ((name, parts) in fragments.groupBy { it.fqName }) {
- descriptors.put(name.asString(), parts.flatMap { it.getMemberScope().getAllDescriptors() })
- }
val documentationModule = DocumentationModule("test")
val documentationBuilder = DocumentationBuilder(session, options)
@@ -56,7 +54,7 @@ public fun verifyOutput(path: String, outputExtension: String, outputGenerator:
val output = StringBuilder()
outputGenerator(it, output)
val expectedOutput = File(path.replace(".kt", outputExtension)).readText()
- assertEquals(expectedOutput, output.toString())
+ Assert.assertEquals(expectedOutput, output.toString())
}
}
diff --git a/test/src/format/HtmlFormatTest.kt b/test/src/format/HtmlFormatTest.kt
index 881a7828..47fe9c4e 100644
--- a/test/src/format/HtmlFormatTest.kt
+++ b/test/src/format/HtmlFormatTest.kt
@@ -24,4 +24,13 @@ public class HtmlFormatTest {
htmlService.appendNodes(tempLocation, output, model.members)
}
}
+
+ Test fun deprecated() {
+ verifyOutput("test/data/format/deprecated.kt", ".package.html") { model, output ->
+ htmlService.appendNodes(tempLocation, output, model.members)
+ }
+ verifyOutput("test/data/format/deprecated.kt", ".class.html") { model, output ->
+ htmlService.appendNodes(tempLocation, output, model.members.single().members)
+ }
+ }
}
diff --git a/test/src/format/MarkdownFormatTest.kt b/test/src/format/MarkdownFormatTest.kt
index 5cdfb8b5..3d32743f 100644
--- a/test/src/format/MarkdownFormatTest.kt
+++ b/test/src/format/MarkdownFormatTest.kt
@@ -19,4 +19,31 @@ public class MarkdownFormatTest {
markdownService.appendNodes(tempLocation, output, model.members.single().members)
}
}
+
+ Test fun annotations() {
+ verifyOutput("test/data/format/annotations.kt", ".md") { model, output ->
+ markdownService.appendNodes(tempLocation, output, model.members.single().members)
+ }
+ }
+
+ Test fun annotationClass() {
+ verifyOutput("test/data/format/annotationClass.kt", ".md") { model, output ->
+ markdownService.appendNodes(tempLocation, output, model.members.single().members)
+ }
+ }
+
+ Test fun annotationParams() {
+ verifyOutput("test/data/format/annotationParams.kt", ".md") { model, output ->
+ markdownService.appendNodes(tempLocation, output, model.members.single().members)
+ }
+ }
+
+ Test fun extensions() {
+ verifyOutput("test/data/format/extensions.kt", ".package.md") { model, output ->
+ markdownService.appendNodes(tempLocation, output, model.members)
+ }
+ verifyOutput("test/data/format/extensions.kt", ".class.md") { model, output ->
+ markdownService.appendNodes(tempLocation, output, model.members.single().members)
+ }
+ }
}
diff --git a/test/src/model/ClassTest.kt b/test/src/model/ClassTest.kt
index b95a31dc..f21c5c57 100644
--- a/test/src/model/ClassTest.kt
+++ b/test/src/model/ClassTest.kt
@@ -166,4 +166,60 @@ public class ClassTest {
}
}
}
+
+ Test fun annotatedClass() {
+ verifyModel("test/data/classes/annotatedClass.kt") { model ->
+ with(model.members.single().members.single()) {
+ assertEquals(1, annotations.count())
+ with(annotations[0]) {
+ assertEquals("data", name)
+ assertEquals(Content.Empty, content)
+ assertEquals(DocumentationNode.Kind.Annotation, kind)
+ }
+ }
+ }
+ }
+
+ Test fun annotatedClassWithAnnotationParameters() {
+ verifyModel("test/data/classes/annotatedClassWithAnnotationParameters.kt") { model ->
+ with(model.members.single().members.single()) {
+ with(deprecation!!) {
+ assertEquals("deprecated", name)
+ assertEquals(Content.Empty, content)
+ assertEquals(DocumentationNode.Kind.Annotation, kind)
+ 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("\"should no longer be used\"", name)
+ }
+ }
+ }
+ }
+ }
+ }
+
+ Test fun javaAnnotationClass() {
+ verifyModel("test/data/classes/javaAnnotationClass.kt") { model ->
+ with(model.members.single().members.single()) {
+ assertEquals(1, annotations.count())
+ with(annotations[0]) {
+ assertEquals("Retention", name)
+ assertEquals(Content.Empty, content)
+ assertEquals(DocumentationNode.Kind.Annotation, kind)
+ 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("RetentionPolicy.SOURCE", name)
+ }
+ }
+ }
+ }
+ }
+ }
}
diff --git a/test/src/model/FunctionTest.kt b/test/src/model/FunctionTest.kt
index 2a4ad0a5..299f33a8 100644
--- a/test/src/model/FunctionTest.kt
+++ b/test/src/model/FunctionTest.kt
@@ -21,23 +21,32 @@ public class FunctionTest {
Test fun functionWithReceiver() {
verifyModel("test/data/functions/functionWithReceiver.kt") { model ->
with(model.members.single().members.single()) {
- assertEquals("fn", name)
- assertEquals(DocumentationNode.Kind.Function, kind)
- assertEquals("Function with receiver", content.summary.toTestString())
- assertEquals(4, details.count())
- assertEquals("internal", details.elementAt(0).name)
- assertEquals("final", details.elementAt(1).name)
- with(details.elementAt(2)) {
- assertEquals("<this>", name)
- assertEquals(DocumentationNode.Kind.Receiver, kind)
- assertEquals(Content.Empty, content)
- assertEquals("String", details.single().name)
+ assertEquals("String", name)
+ assertEquals(DocumentationNode.Kind.ExternalClass, kind)
+ assertEquals(2, members.count())
+ with(members[0]) {
+ assertEquals("fn", name)
+ assertEquals(DocumentationNode.Kind.Function, kind)
+ assertEquals("Function with receiver", content.summary.toTestString())
+ assertEquals(4, details.count())
+ assertEquals("internal", details.elementAt(0).name)
+ assertEquals("final", details.elementAt(1).name)
+ with(details.elementAt(2)) {
+ assertEquals("<this>", name)
+ assertEquals(DocumentationNode.Kind.Receiver, kind)
+ assertEquals(Content.Empty, content)
+ assertEquals("String", details.single().name)
+ assertTrue(members.none())
+ assertTrue(links.none())
+ }
+ assertEquals("Unit", details.elementAt(3).name)
assertTrue(members.none())
assertTrue(links.none())
}
- assertEquals("Unit", details.elementAt(3).name)
- assertTrue(members.none())
- assertTrue(links.none())
+ with(members[1]) {
+ assertEquals("fn", name)
+ assertEquals(DocumentationNode.Kind.Function, kind)
+ }
}
}
}
@@ -135,4 +144,54 @@ Documentation""", content.description.toTestString())
}
}
}
-} \ No newline at end of file
+
+ Test fun annotatedFunction() {
+ verifyModel("test/data/functions/annotatedFunction.kt") { model ->
+ with(model.members.single().members.single()) {
+ assertEquals(1, annotations.count())
+ with(annotations[0]) {
+ assertEquals("inline", name)
+ assertEquals(Content.Empty, content)
+ assertEquals(DocumentationNode.Kind.Annotation, kind)
+ }
+ }
+ }
+ }
+
+ Test fun functionWithAnnotatedParam() {
+ verifyModel("test/data/functions/functionWithAnnotatedParam.kt") { model ->
+ with(model.members.single().members.single()) {
+ with(details.elementAt(2)) {
+ assertEquals(1, annotations.count())
+ with(annotations[0]) {
+ assertEquals("noinline", name)
+ assertEquals(Content.Empty, content)
+ assertEquals(DocumentationNode.Kind.Annotation, kind)
+ }
+ }
+ }
+ }
+ }
+
+ Test fun annotatedFunctionWithAnnotationParameters() {
+ verifyModel("test/data/functions/annotatedFunctionWithAnnotationParameters.kt") { model ->
+ with(model.members.single().members.single()) {
+ assertEquals(1, annotations.count())
+ with(annotations[0]) {
+ assertEquals("inlineOptions", name)
+ assertEquals(Content.Empty, content)
+ assertEquals(DocumentationNode.Kind.Annotation, kind)
+ 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("[InlineOption.LOCAL_CONTINUE_AND_BREAK]", name)
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/test/src/model/PropertyTest.kt b/test/src/model/PropertyTest.kt
index 103da170..14c43f78 100644
--- a/test/src/model/PropertyTest.kt
+++ b/test/src/model/PropertyTest.kt
@@ -99,4 +99,30 @@ public class PropertyTest {
}
}
}
+
+ Test fun annotatedProperty() {
+ verifyModel("test/data/properties/annotatedProperty.kt") { model ->
+ with(model.members.single().members.single()) {
+ assertEquals(1, annotations.count())
+ with(annotations[0]) {
+ assertEquals("inline", name)
+ assertEquals(Content.Empty, content)
+ assertEquals(DocumentationNode.Kind.Annotation, kind)
+ }
+ }
+ }
+ }
+
+ Test fun propertyWithReceiver() {
+ verifyModel("test/data/properties/propertyWithReceiver.kt") { model ->
+ with(model.members.single().members.single()) {
+ assertEquals("String", name)
+ assertEquals(DocumentationNode.Kind.ExternalClass, kind)
+ with(members.single()) {
+ assertEquals("foobar", name)
+ assertEquals(DocumentationNode.Kind.Property, kind)
+ }
+ }
+ }
+ }
}