package translators import org.jetbrains.dokka.links.DRI import org.jetbrains.dokka.model.DModule import org.jetbrains.dokka.model.childrenOfType import org.jetbrains.dokka.model.doc.* import org.jetbrains.dokka.model.firstChildOfType import org.jetbrains.dokka.model.firstMemberOfType import org.jetbrains.dokka.testApi.testRunner.AbstractCoreTest import org.junit.jupiter.api.Test import org.junit.jupiter.api.Assertions.* import utils.text class JavadocParserTest : AbstractCoreTest() { private fun performJavadocTest(testOperation: (DModule) -> Unit) { val configuration = dokkaConfiguration { sourceSets { sourceSet { sourceRoots = listOf("src/main/java") } } } testInline( """ |/src/main/java/sample/Date2.java |/** | * The class Date represents a specific instant | * in time, with millisecond precision. | *

| * Prior to JDK 1.1, the class Date had two additional | * functions. It allowed the interpretation of dates as year, month, day, hour, | * minute, and second values. It also allowed the formatting and parsing | * of date strings. Unfortunately, the API for these functions was not | * amenable to internationalization. As of JDK 1.1, the | * Calendar class should be used to convert between dates and time | * fields and the DateFormat class should be used to format and | * parse date strings. | * The corresponding methods in Date are deprecated. | *

| * Although the Date class is intended to reflect | * coordinated universal time (UTC), it may not do so exactly, | * depending on the host environment of the Java Virtual Machine. | * Nearly all modern operating systems assume that 1 day = | * 24 × 60 × 60 = 86400 seconds | * in all cases. In UTC, however, about once every year or two there | * is an extra second, called a "leap second." The leap | * second is always added as the last second of the day, and always | * on December 31 or June 30. For example, the last minute of the | * year 1995 was 61 seconds long, thanks to an added leap second. | * Most computer clocks are not accurate enough to be able to reflect | * the leap-second distinction. | *

| * Some computer standards are defined in terms of Greenwich mean | * time (GMT), which is equivalent to universal time (UT). GMT is | * the "civil" name for the standard; UT is the | * "scientific" name for the same standard. The | * distinction between UTC and UT is that UTC is based on an atomic | * clock and UT is based on astronomical observations, which for all | * practical purposes is an invisibly fine hair to split. Because the | * earth's rotation is not uniform (it slows down and speeds up | * in complicated ways), UT does not always flow uniformly. Leap | * seconds are introduced as needed into UTC so as to keep UTC within | * 0.9 seconds of UT1, which is a version of UT with certain | * corrections applied. There are other time and date systems as | * well; for example, the time scale used by the satellite-based | * global positioning system (GPS) is synchronized to UTC but is | * not adjusted for leap seconds. An interesting source of | * further information is the U.S. Naval Observatory, particularly | * the Directorate of Time at: | *

            | *     http://tycho.usno.navy.mil
            | * 
| *

| * and their definitions of "Systems of Time" at: | *

            | *     http://tycho.usno.navy.mil/systime.html
            | * 
| *

| * In all methods of class Date that accept or return | * year, month, date, hours, minutes, and seconds values, the | * following representations are used: | *

| *
            | * <androidx.fragment.app.FragmentContainerView
            | *        xmlns:android="http://schemas.android.com/apk/res/android"
            | *        xmlns:app="http://schemas.android.com/apk/res-auto"
            | *        android:id="@+id/fragment_container_view"
            | *        android:layout_width="match_parent"
            | *        android:layout_height="match_parent">
            | * </androidx.fragment.app.FragmentContainerView>
            | * 
| *

| * In all cases, arguments given to methods for these purposes need | * not fall within the indicated ranges; for example, a date may be | * specified as January 32 and is interpreted as meaning February 1. | * | *

            | * class MyFragment extends Fragment {
            | *   public MyFragment() {
            | *     super(R.layout.fragment_main);
            | *   }
            | * }
            | * 
| | * @author James Gosling | * @author Arthur van Hoff | * @author Alan Liu | * @see java.text.DateFormat | * @see java.util.Calendar | * @since JDK1.0 | * @apiSince 1 | */ |public class Date2 implements java.io.Serializable, java.lang.Cloneable, java.lang.Comparable { | void x() { } |} """.trimIndent(), configuration ) { documentablesMergingStage = testOperation } } @Test fun `correctly parsed list`() { performJavadocTest { module -> val dateDescription = module.descriptionOf("Date2")!! assertEquals(6, dateDescription.firstChildOfType