aboutsummaryrefslogtreecommitdiff
path: root/plugins/base/src/test/kotlin/model/annotations/JavaAnnotationsTest.kt
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/base/src/test/kotlin/model/annotations/JavaAnnotationsTest.kt')
-rw-r--r--plugins/base/src/test/kotlin/model/annotations/JavaAnnotationsTest.kt195
1 files changed, 0 insertions, 195 deletions
diff --git a/plugins/base/src/test/kotlin/model/annotations/JavaAnnotationsTest.kt b/plugins/base/src/test/kotlin/model/annotations/JavaAnnotationsTest.kt
deleted file mode 100644
index daab7dc9..00000000
--- a/plugins/base/src/test/kotlin/model/annotations/JavaAnnotationsTest.kt
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
- */
-
-package model.annotations
-
-import org.jetbrains.dokka.base.testApi.testRunner.BaseAbstractTest
-import org.jetbrains.dokka.model.*
-import translators.findClasslike
-import kotlin.test.*
-
-class JavaAnnotationsTest : BaseAbstractTest() {
-
- val configuration = dokkaConfiguration {
- sourceSets {
- sourceSet {
- sourceRoots = listOf("src/main/java")
- }
- }
- }
-
- @Test // see https://github.com/Kotlin/dokka/issues/2350
- fun `should hande array used as annotation param value`() {
- testInline(
- """
- |/src/main/java/annotation/TestClass.java
- |package annotation;
- |public class TestClass {
- | @SimpleAnnotation(clazz = String[].class)
- | public boolean simpleAnnotation() {
- | return false;
- | }
- |}
- |
- |/src/main/java/annotation/SimpleAnnotation.java
- |package annotation;
- |@Retention(RetentionPolicy.RUNTIME)
- |@Target(ElementType.METHOD)
- |public @interface SimpleAnnotation {
- | Class<?> clazz();
- |}
- """.trimIndent(),
- configuration
- ) {
- documentablesTransformationStage = { module ->
- val testClass = module.findClasslike("annotation", "TestClass") as DClass
- assertNotNull(testClass)
-
- val annotatedFunction = testClass.functions.single { it.name == "simpleAnnotation" }
- val annotation =
- annotatedFunction.extra[Annotations]?.directAnnotations?.entries?.single()?.value?.single()
- assertNotNull(annotation) { "Expected to find an annotation on simpleAnnotation function, found none" }
- assertEquals("annotation", annotation.dri.packageName)
- assertEquals("SimpleAnnotation", annotation.dri.classNames)
- assertEquals(1, annotation.params.size)
-
- val param = annotation.params.values.single()
- assertTrue(param is ClassValue)
- // should probably be Array instead
- // String matches parsing of Kotlin sources as of now
- assertEquals("String", param.className)
- assertEquals("java.lang", param.classDRI.packageName)
- assertEquals("String", param.classDRI.classNames)
- }
- }
- }
-
- @Test // see https://github.com/Kotlin/dokka/issues/2551
- fun `should hande annotation used within annotation params with class param value`() {
- testInline(
- """
- |/src/main/java/annotation/TestClass.java
- |package annotation;
- |public class TestClass {
- | @XmlElementRefs({
- | @XmlElementRef(name = "NotOffered", namespace = "http://www.gaeb.de/GAEB_DA_XML/DA86/3.3", type = JAXBElement.class, required = false)
- | })
- | public List<JAXBElement<Object>> content;
- |}
- |
- |/src/main/java/annotation/XmlElementRefs.java
- |package annotation;
- |public @interface XmlElementRefs {
- | XmlElementRef[] value();
- |}
- |
- |/src/main/java/annotation/XmlElementRef.java
- |package annotation;
- |public @interface XmlElementRef {
- | String name();
- |
- | String namespace();
- |
- | boolean required();
- |
- | Class<JAXBElement> type();
- |}
- |
- |/src/main/java/annotation/JAXBElement.java
- |package annotation;
- |public class JAXBElement<T> {
- |}
- """.trimIndent(),
- configuration
- ) {
- documentablesTransformationStage = { module ->
- val testClass = module.findClasslike("annotation", "TestClass") as DClass
- assertNotNull(testClass)
-
- val contentField = testClass.properties.find { it.name == "content" }
- assertNotNull(contentField)
-
- val annotation = contentField.extra[Annotations]?.directAnnotations?.entries?.single()?.value?.single()
- assertNotNull(annotation) { "Expected to find an annotation on content field, found none" }
- assertEquals("XmlElementRefs", annotation.dri.classNames)
- assertEquals(1, annotation.params.size)
-
- val arrayParam = annotation.params.values.single()
- assertTrue(arrayParam is ArrayValue, "Expected single annotation param to be array")
- assertEquals(1, arrayParam.value.size)
-
- val arrayParamValue = arrayParam.value.single()
- assertTrue(arrayParamValue is AnnotationValue)
-
- val arrayParamAnnotationValue = arrayParamValue.annotation
- assertEquals(4, arrayParamAnnotationValue.params.size)
- assertEquals("XmlElementRef", arrayParamAnnotationValue.dri.classNames)
-
- val annotationParams = arrayParamAnnotationValue.params.values.toList()
-
- val nameParam = annotationParams[0]
- assertTrue(nameParam is StringValue)
- assertEquals("NotOffered", nameParam.value)
-
- val namespaceParam = annotationParams[1]
- assertTrue(namespaceParam is StringValue)
- assertEquals("http://www.gaeb.de/GAEB_DA_XML/DA86/3.3", namespaceParam.value)
-
- val typeParam = annotationParams[2]
- assertTrue(typeParam is ClassValue)
- assertEquals("JAXBElement", typeParam.className)
- assertEquals("annotation", typeParam.classDRI.packageName)
- assertEquals("JAXBElement", typeParam.classDRI.classNames)
-
- val requiredParam = annotationParams[3]
- assertTrue(requiredParam is BooleanValue)
- assertFalse(requiredParam.value)
- }
- }
- }
-
- @Test // see https://github.com/Kotlin/dokka/issues/2509
- fun `should handle generic class in annotation`() {
- testInline(
- """
- |/src/main/java/annotation/Breaking.java
- |package annotation;
- |public class Breaking<Y> {
- |}
- |
- |/src/main/java/annotation/TestAnnotate.java
- |package annotation;
- |public @interface TestAnnotate {
- | Class<?> value();
- |}
- |
- |/src/main/java/annotation/TestClass.java
- |package annotation;
- |@TestAnnotate(Breaking.class)
- |public class TestClass {
- |}
- """.trimIndent(),
- configuration
- ) {
- documentablesTransformationStage = { module ->
- val testClass = module.findClasslike("annotation", "TestClass") as DClass
- assertNotNull(testClass)
-
- val annotation = testClass.extra[Annotations]?.directAnnotations?.entries?.single()?.value?.single()
- assertNotNull(annotation) { "Expected to find an annotation on TestClass, found none" }
-
- assertEquals("TestAnnotate", annotation.dri.classNames)
- assertEquals(1, annotation.params.size)
-
- val valueParameter = annotation.params.values.single()
- assertTrue(valueParameter is ClassValue)
-
- assertEquals("Breaking", valueParameter.className)
-
- assertEquals("annotation", valueParameter.classDRI.packageName)
- assertEquals("Breaking", valueParameter.classDRI.classNames)
- }
- }
- }
-}