/* * Copyright (c) 2016, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */ /* * @test * @bug 8154119 8154262 8156077 8157987 8154261 8154817 8135291 8155995 8162363 * 8168766 8168688 8162674 8160196 8175799 8174974 8176778 8177562 8175218 * 8175823 8166306 8178043 8181622 8183511 8169819 8074407 8183037 8191464 * 8164407 8192007 8182765 8196200 8196201 8196202 8196202 8205593 8202462 * 8184205 8219060 8223378 8234746 * @summary Test modules support in javadoc. * @library ../../lib * @modules jdk.javadoc/jdk.javadoc.internal.tool * @build javadoc.tester.* * @run main TestModules */ import javadoc.tester.JavadocTester; public class TestModules extends JavadocTester { public static void main(String... args) throws Exception { TestModules tester = new TestModules(); tester.runTests(); } /** * Test generated module pages for HTML 5. */ @Test public void testHtml5() { javadoc("-d", "out-html5", "-use", "-Xdoclint:none", "-overview", testSrc("overview.html"), "--module-source-path", testSrc, "--module", "moduleA,moduleB", "testpkgmdlA", "testpkgmdlB"); checkExit(Exit.OK); checkHtml5Description(true); checkHtml5NoDescription(false); checkHtml5OverviewSummaryModules(); checkModuleLink(); checkModuleFilesAndLinks(true); checkModulesInSearch(true); checkAllPkgsAllClasses(true); } /** * Test generated module pages for HTML 5 with -nocomment option. */ @Test public void testHtml5NoComment() { javadoc("-d", "out-html5-nocomment", "-nocomment", "-use", "-Xdoclint:none", "-overview", testSrc("overview.html"), "--module-source-path", testSrc, "--module", "moduleA,moduleB", "testpkgmdlA", "testpkgmdlB"); checkExit(Exit.OK); checkHtml5Description(false); checkHtml5NoDescription(true); checkModuleLink(); checkModuleFilesAndLinks(true); } /** * Test generated pages, in an unnamed module, for HTML 5. */ @Test public void testHtml5UnnamedModule() { javadoc("-d", "out-html5-nomodule", "-use", "-overview", testSrc("overview.html"), "-sourcepath", testSrc, "testpkgnomodule", "testpkgnomodule1"); checkExit(Exit.OK); checkHtml5OverviewSummaryPackages(); checkModuleFilesAndLinks(false); checkModulesInSearch(false); } /** * Test generated module pages with javadoc tags. */ @Test public void testJDTagsInModules() { javadoc("-d", "out-mdltags", "-author", "-version", "-Xdoclint:none", "-tag", "regular:a:Regular Tag:", "-tag", "moduletag:s:Module Tag:", "--module-source-path", testSrc, "--module", "moduletags,moduleB", "testpkgmdltags", "testpkgmdlB"); checkExit(Exit.OK); checkModuleTags(); } /** * Test generated module summary page. */ @Test public void testModuleSummary() { javadoc("-d", "out-moduleSummary", "-use", "-Xdoclint:none", "--module-source-path", testSrc, "--module", "moduleA,moduleB", "testpkgmdlA", "testpkgmdlB", "moduleB/testpkg2mdlB"); checkExit(Exit.OK); checkModuleSummary(); checkNegatedModuleSummary(); } /** * Test generated module summary page of an aggregating module. */ @Test public void testAggregatorModuleSummary() { javadoc("-d", "out-aggregatorModuleSummary", "-use", "--module-source-path", testSrc, "--expand-requires", "transitive", "--module", "moduleT"); checkExit(Exit.OK); checkAggregatorModuleSummary(); } /** * Test generated module pages and pages with link to modules. */ @Test public void testModuleFilesAndLinks() { javadoc("-d", "out-modulelinks", "-Xdoclint:none", "--module-source-path", testSrc, "--module", "moduleA,moduleB", "testpkgmdlA", "testpkgmdlB"); checkExit(Exit.OK); checkModuleFilesAndLinks(true); } /** * Test generated module pages for a deprecated module. */ @Test public void testModuleDeprecation() { javadoc("-d", "out-moduledepr", "-Xdoclint:none", "-tag", "regular:a:Regular Tag:", "-tag", "moduletag:s:Module Tag:", "--module-source-path", testSrc, "--module", "moduleA,moduleB,moduletags", "testpkgmdlA", "testpkgmdlB", "testpkgmdltags"); checkExit(Exit.OK); checkModuleDeprecation(true); } /** * Test annotations on modules. */ @Test public void testModuleAnnotation() { javadoc("-d", "out-moduleanno", "-Xdoclint:none", "--module-source-path", testSrc, "--module", "moduleA,moduleB", "testpkgmdlA", "testpkgmdlB"); checkExit(Exit.OK); checkModuleAnnotation(); } /** * Test module summary pages in "api" mode. */ @Test public void testApiMode() { javadoc("-d", "out-api", "-use", "--show-module-contents=api", "-author", "-version", "-Xdoclint:none", "-tag", "regular:a:Regular Tag:", "-tag", "moduletag:s:Module Tag:", "--module-source-path", testSrc, "--module", "moduleA,moduleB,moduleC,moduletags", "testpkgmdlA", "moduleA/concealedpkgmdlA", "testpkgmdlB", "testpkg2mdlB", "testpkgmdlC", "testpkgmdltags"); checkExit(Exit.OK); checkModuleModeCommon(); checkModuleModeApi(true); checkModuleModeAll(false); } /** * Test module summary pages in "all" mode. */ @Test public void testAllMode() { javadoc("-d", "out-all", "-use", "--show-module-contents=all", "-author", "-version", "-Xdoclint:none", "-tag", "regular:a:Regular Tag:", "-tag", "moduletag:s:Module Tag:", "--module-source-path", testSrc, "--module", "moduleA,moduleB,moduleC,moduletags", "testpkgmdlA", "moduleA/concealedpkgmdlA", "testpkgmdlB", "testpkg2mdlB", "testpkgmdlC", "testpkgmdltags"); checkExit(Exit.OK); checkModuleModeCommon(); checkModuleModeApi(false); checkModuleModeAll(true); } /** * Test generated module summary page of a module with no exported package. */ @Test public void testModuleSummaryNoExportedPkgAll() { javadoc("-d", "out-ModuleSummaryNoExportedPkgAll", "-use", "--show-module-contents=all", "-sourcepath", testSrc + "/moduleNoExport", "--module", "moduleNoExport", "testpkgmdlNoExport"); checkExit(Exit.OK); checkModuleSummaryNoExported(true); } /** * Test generated module summary page of a module with no exported package. */ @Test public void testModuleSummaryNoExportedPkgApi() { javadoc("-d", "out-ModuleSummaryNoExportedPkgApi", "-use", "-sourcepath", testSrc + "/moduleNoExport", "--module", "moduleNoExport", "testpkgmdlNoExport"); checkExit(Exit.OK); checkModuleSummaryNoExported(false); } /** * Test generated module pages for javadoc run for a single module having a single package. */ @Test public void testSingleModuleSinglePkg() { javadoc("-d", "out-singlemod", "--module-source-path", testSrc, "--module", "moduleC", "testpkgmdlC"); checkExit(Exit.OK); } /** * Test generated module pages for javadoc run for a single module having multiple packages. */ @Test public void testSingleModuleMultiplePkg() { javadoc("-d", "out-singlemodmultiplepkg", "--show-module-contents=all", "-Xdoclint:none", "--module-source-path", testSrc, "--module", "moduleB", "testpkg2mdlB", "testpkgmdlB"); checkExit(Exit.OK); } /** * Test -group option for modules. The overview-summary.html page should group the modules accordingly. */ @Test public void testGroupOption() { javadoc("-d", "out-group", "--show-module-contents=all", "-Xdoclint:none", "-tag", "regular:a:Regular Tag:", "-tag", "moduletag:s:Module Tag:", "--module-source-path", testSrc, "-group", "Module Group A", "moduleA*", "-group", "Module Group B & C", "moduleB*:moduleC*", "-group", "Java SE Modules", "java*", "--module", "moduleA,moduleB,moduleC,moduletags", "moduleA/concealedpkgmdlA", "testpkgmdlA", "testpkg2mdlB", "testpkgmdlB", "testpkgmdlC", "testpkgmdltags"); checkExit(Exit.OK); checkGroupOption(); } /** * Test -group option for modules and the ordering of module groups. * The overview-summary.html page should group the modules accordingly and display the group tabs in * the order it was provided on the command-line. */ @Test public void testGroupOptionOrdering() { javadoc("-d", "out-groupOrder", "--show-module-contents=all", "-Xdoclint:none", "-tag", "regular:a:Regular Tag:", "-tag", "moduletag:s:Module Tag:", "--module-source-path", testSrc, "-group", "B Group", "moduleB*", "-group", "C Group", "moduleC*", "-group", "A Group", "moduleA*", "-group", "Java SE Modules", "java*", "--module", "moduleA,moduleB,moduleC,moduletags", "moduleA/concealedpkgmdlA", "testpkgmdlA", "testpkg2mdlB", "testpkgmdlB", "testpkgmdlC", "testpkgmdltags"); checkExit(Exit.OK); checkGroupOptionOrdering(); } /** * Test -group option for unnamed modules. The overview-summary.html page should group the packages accordingly. */ @Test public void testUnnamedModuleGroupOption() { javadoc("-d", "out-groupnomodule", "-use", "-Xdoclint:none", "-overview", testSrc("overview.html"), "-sourcepath", testSrc, "-group", "Package Group 0", "testpkgnomodule", "-group", "Package Group 1", "testpkgnomodule1", "testpkgnomodule", "testpkgnomodule1"); checkExit(Exit.OK); checkUnnamedModuleGroupOption(); } /** * Test -group option for unnamed modules and the ordering of package groups. * The overview-summary.html page should group the packages accordingly and display the group tabs in * the order it was provided on the command-line. */ @Test public void testGroupOptionPackageOrdering() { javadoc("-d", "out-groupPkgOrder", "-use", "-Xdoclint:none", "-overview", testSrc("overview.html"), "-sourcepath", testSrc, "-group", "Z Group", "testpkgnomodule", "-group", "A Group", "testpkgnomodule1", "testpkgnomodule", "testpkgnomodule1"); checkExit(Exit.OK); checkGroupOptionPackageOrdering(); } /** * Test -group option for a single module. */ @Test public void testGroupOptionSingleModule() { javadoc("-d", "out-groupsinglemodule", "-use", "-Xdoclint:none", "--module-source-path", testSrc, "-group", "Module Group B", "moduleB*", "--module", "moduleB", "testpkg2mdlB", "testpkgmdlB"); checkExit(Exit.OK); checkGroupOptionSingleModule(); } /** * Test -group option for a single module. */ @Test public void testModuleName() { javadoc("-d", "out-modulename", "-use", "-Xdoclint:none", "--module-source-path", testSrc, "--module", "moduleB,test.moduleFullName", "testpkg2mdlB", "testpkgmdlB", "testpkgmdlfullname"); checkExit(Exit.OK); checkModuleName(true); } /** * Test -linkoffline option. */ @Test public void testLinkOffline() { String url = "https://docs.oracle.com/javase/9/docs/api/"; javadoc("-d", "out-linkoffline", "-use", "--show-module-contents=all", "-Xdoclint:none", "--module-source-path", testSrc, "--module", "moduleA,moduleB", "-linkoffline", url, testSrc + "/jdk", "testpkgmdlA", "testpkgmdlB", "testpkg3mdlB"); checkExit(Exit.OK); checkLinkOffline(); } /** * Test -linksource option. */ @Test public void testLinkSource() { javadoc("-d", "out-linksource", "-use", "-linksource", "-Xdoclint:none", "--module-source-path", testSrc, "--module", "moduleA,moduleB"); checkExit(Exit.OK); checkLinks(); checkLinkSource(false); } /** * Test -linksource option combined with -private. */ @Test public void testLinkSourcePrivate() { javadoc("-d", "out-linksource-private", "-use", "-private", "-linksource", "-Xdoclint:none", "--module-source-path", testSrc, "--module", "moduleA,moduleB"); checkExit(Exit.OK); checkLinks(); checkLinkSource(true); } void checkDescription(boolean found) { checkOutput("moduleA/module-summary.html", found, "\n" + "\n" + "\n" + "\n" + "
This is a test description for the moduleA module with a Search " + "phrase search phrase.
"); checkOutput("moduleB/module-summary.html", found, "\n" + "\n" + "\n" + "\n" + "
This is a test description for the moduleB module. Search " + "word search_word with no description.
"); checkOutput("index.html", found, "\n" + "
\n" + "
The overview summary page header.
\n" + "
\n" + "
\n" + "
\n" + "\n" + ""); checkOutput("index.html", false, "
Modules 
\n" + "
\n" + "
\n" + "
The overview summary page header.
\n" + "
\n" + "
\n" + "
\n" + "\n" + ""); } void checkNoDescription(boolean found) { checkOutput("moduleA/module-summary.html", found, "
\n" + "
    \n" + "
  • \n" + "
      \n" + "
    • \n" + ""); checkOutput("moduleB/module-summary.html", found, "
      \n" + "
        \n" + "
      • \n" + "
          \n" + "
        • \n" + ""); } void checkHtml5Description(boolean found) { checkOutput("moduleA/module-summary.html", found, "
          \n" + "
          Deprecated, for removal:" + " This API element is subject to removal in a future version.\n" + "
          This module is deprecated.
          \n" + "
          \n" + "\n" + "
          This is a test description for the moduleA module with a Search " + "phrase search phrase.
          "); checkOutput("moduleB/module-summary.html", found, "
          \n" + "\n" + "
          This is a test description for the moduleB module. Search " + "word search_word with no description.
          "); checkOutput("index.html", found, "\n" + "\n" + "
          \n" + "
          \n" + "
          \n" + "
          The overview summary page header.
          \n" + "
          \n" + "
          \n" + "
          \n
Modules 
\n" + ""); checkOutput("index.html", false, "
Modules 
\n" + "
\n" + "\n" + "
\n" + "
\n" + "
The overview summary page header.
\n" + "
\n" + "
\n" + "
\n\n" + ""); } void checkHtml5NoDescription(boolean found) { checkOutput("moduleA/module-summary.html", found, "
\n" + "
\n" + "
    \n" + "
  • \n" + "
    \n" + ""); checkOutput("moduleB/module-summary.html", found, "
    \n" + "
    \n" + "
      \n" + "
    • \n" + "
      \n" + ""); } void checkModuleLink() { checkOutput("index.html", true, "
    • Module
    • "); checkOutput("moduleA/module-summary.html", true, "
    • Module
    • "); checkOutput("moduleB/module-summary.html", true, "
    • Module
    • "); checkOutput("moduleA/testpkgmdlA/class-use/TestClassInModuleA.html", true, "
    • Module
    • "); checkOutput("moduleB/testpkgmdlB/package-summary.html", true, "
    • Module
    • "); checkOutput("moduleB/testpkgmdlB/TestClassInModuleB.html", true, "
    • Module
    • "); checkOutput("moduleB/testpkgmdlB/class-use/TestClassInModuleB.html", true, "
    • Module
    • "); } void checkNoModuleLink() { checkOutput("testpkgnomodule/package-summary.html", true, "
        \n" + "
      • Package
      • "); checkOutput("testpkgnomodule/TestClassNoModule.html", true, "
          \n" + "
        • Package
        • "); checkOutput("testpkgnomodule/class-use/TestClassNoModule.html", true, "
            \n" + "
          • Package
          • "); } void checkModuleTags() { checkOutput("moduletags/module-summary.html", true, "Type Link: TestClassInModuleTags.", "Member Link: testMethod(String).", "Package Link: testpkgmdltags.", "
            Since:
            \n" + "
            JDK 9
            ", "
            See Also:
            \n" + "
            \"Test see tag\", \n" + "" + "TestClassInModuleTags
            ", "
            Regular Tag:
            \n" + "
            Just a regular simple tag.
            ", "
            Module Tag:
            \n" + "
            Just a simple module tag.
            ", "
            Version:
            \n" + "
            1.0
            ", "
            Author:
            \n" + "
            Alice
            "); checkOutput("moduletags/testpkgmdltags/TestClassInModuleTags.html", false, "
            Module Tag:
            \n" + "
            Just a simple module tag.
            "); } void checkOverviewSummaryModules() { checkOutput("index.html", true, "
            \n" + "
Modules 
\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + ""); checkOutput("overview-summary.html", false, "
\n" + "
Modules 
ModuleDescription
\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + ""); } void checkOverviewSummaryPackages() { checkOutput("index.html", false, "
\n" + "
Packages 
PackageDescription
\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "", "
Modules 
ModuleDescription
\n" + "
\n" + "
\n" + "
The overview summary page header.
\n" + "
\n" + "
\n" + "
\n" + "\n" + ""); checkOutput("index.html", true, "
\n" + "
Packages 
\n" + "\n" + "n" + "\n" + "\n" + "\n" + "\n" + "\n", "\n" + "
\n" + "
The overview summary page header.
\n" + "
\n" + "
\n" + "
\n" + "
Packages 
PackageDescription
\n" + ""); } void checkHtml5OverviewSummaryModules() { checkOutput("index.html", true, "
\n" + "
Packages 
\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + ""); checkOutput("overview-summary.html", false, "
\n" + "
Modules 
ModuleDescription
\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + ""); } void checkHtml5OverviewSummaryPackages() { checkOutput("index.html", false, "
\n" + "
Packages 
PackageDescription
\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "", "
Modules 
ModuleDescription
\n" + "
\n" + "
\n" + "
\n" + "
\n" + "
The overview summary page header.
\n" + "
\n" + "
\n" + "\n" + "\n" + "
\n" + "\n" + ""); checkOutput("index.html", true, "
\n
Packages 
\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "", "\n" + "\n" + "
\n" + "
\n" + "
\n" + "
The overview summary page header.
\n" + "
\n" + "
\n" + "
\n
Packages 
PackageDescription
\n" + ""); } void checkModuleSummary() { checkOutput("moduleA/module-summary.html", true, "", "
\n" + "\n" + "

Modules

", "
\n" + "\n" + "\n" + "", "
\n" + "\n" + "

Packages

", "
\n" + "\n" + "\n" + "\n" + ""); checkOutput("moduleB/module-summary.html", true, "
  • Description | 
  • \n" + "
  • Modules | 
  • \n" + "
  • Packages | 
  • \n" + "
  • Services
  • ", "\n" + "

    Packages

    ", "\n" + "\n" + "\n" + "", "\n" + "

    Packages

    ", "\n" + "

    Services

    ", "\n" + "\n" + "\n" + "", "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "", "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "", "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + ""); } void checkAggregatorModuleSummary() { checkOutput("moduleT/module-summary.html", true, "
    \n" + "

    Module moduleT

    \n" + "
    ", "
    This is a test description for the moduleT module. " + "Search phrase search phrase. " + "Make sure there are no exported packages.
    ", "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + ""); } void checkNegatedModuleSummary() { checkOutput("moduleA/module-summary.html", false, "\n" + "

    Services

    "); } void checkModuleFilesAndLinks(boolean found) { checkFileAndOutput("moduleA/testpkgmdlA/package-summary.html", found, "
  • Module
  • ", "
    Module " + "moduleA
    "); checkFileAndOutput("moduleA/testpkgmdlA/TestClassInModuleA.html", found, "
  • Module
  • ", "
    Module " + "moduleA
    "); checkFileAndOutput("moduleB/testpkgmdlB/AnnotationType.html", found, "
    Module " + "moduleB
    ", "
    " + "Package testpkgmdlB
    "); checkFiles(found, "moduleA/module-summary.html"); } void checkModulesInSearch(boolean found) { checkOutput("index-all.html", found, "
    \n" + "
    moduleA - module moduleA
    \n" + "
    \n" + "
    This is a test description for the moduleA module with a Search " + "phrase search phrase.
    \n" + "
    \n" + "
    moduleB - module moduleB
    \n" + "
    \n" + "
    This is a test description for the moduleB module.
    \n" + "
    \n" + "
    ", "
    \n" + "
    " + "search_word - Search tag in module moduleB
    \n" + "
     
    \n" + "
    " + "search phrase - Search tag in module moduleA
    \n" + "
    with description
    \n" + "
    "); checkOutput("index-all.html", false, "
    " + "search phrase - Search tag in module moduleA
    \n" + "
    with description
    \n" + "
    " + "search phrase - Search tag in module moduleA
    \n" + "
    with description
    "); } void checkModuleModeCommon() { checkOutput("index.html", true, "\n" + "", "\n" + "", "\n" + ""); checkOutput("moduleA/module-summary.html", true, "
  • Description | 
  • \n" + "
  • Modules | 
  • \n" + "
  • Packages | 
  • \n" + "
  • Services
  • ", "\n" + "\n"); checkOutput("moduleB/module-summary.html", true, "\n" + "\n"); checkOutput("moduletags/module-summary.html", true, "
  • Description | 
  • \n" + "
  • Modules | 
  • \n" + "
  • Packages | 
  • \n" + "
  • Services
  • ", "
    \n
    Packages 
    testpkgmdlA 
    transitivemoduleB\n" + "
    This is a test description for the moduleB module.
    \n" + "
    testpkgmdlB 
    TestClassInModuleB\n" + "
    With a test description for uses.
    \n
    Opens 
    PackageDescription
    Uses 
    TypeDescription
    Provides 
    TypeDescription
    transitivemoduleA\n" + "
    This is a test description for the moduleA module with a Search " + "phrase search phrase.
    \n" + "
    transitivemoduleB\n" + "
    This is a test description for the moduleB module.
    \n" + "
    moduleA\n" + "
    This is a test description for the moduleA module with a Search " + "phrase search phrase.
    \n" + "
    moduleB\n" + "
    This is a test description for the moduleB module.
    \n" + "
    moduletags\n" + "
    This is a test description for the moduletags module.
    \n" + " Type Link: TestClassInModuleTags.
    \n" + " Member Link: testMethod(String).
    \n" + " Package Link: testpkgmdltags.
    \n" + "
    moduleBtestpkgmdlBTestClassInModuleB\n" + "
    With a test description for uses.
    \n
    \n" + "", "\n" + "\n" + "", "
    \n
    Indirect Requires 
    transitivemoduleB\n" + "
    This is a test description for the moduleB module.
    \n" + "
    \n" + "", "\n" + "\n" + "", "
    \n
    Indirect Exports 
    transitive staticmoduleA\n" + "
    This is a test description for the moduleA module with a Search " + "phrase search phrase.
    \n" + "
    \n" + "\n" + "\n" + "\n" + "\n" + "\n" + "", "
    \n
    Requires 
    ModifierModuleDescription
    \n" + "\n" + "\n" + "\n" + "\n" + "\n" + "", "
    \n
    Indirect Requires 
    ModifierModuleDescription
    \n" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n", "\n" + "\n"); } void checkModuleModeApi(boolean found) { checkOutput("moduleA/module-summary.html", found, "\n" + ""); checkOutput("moduleB/module-summary.html", found, "
  • Description | 
  • \n" + "
  • Modules | 
  • \n" + "
  • Packages | 
  • \n" + "
  • Services
  • ", "\n" + "", "
    \n
    Indirect Opens 
    FromPackages
    moduleBtestpkgmdlBtestpkgmdlA testpkgmdlB 
    \n" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "
    Opens 
    PackageDescription
    testpkgmdlB 
    "); checkOutput("moduletags/module-summary.html", true, "testpkgmdltags\n" + " "); } void checkModuleModeAll(boolean found) { checkOutput("moduleA/module-summary.html", found, " \n" + "java.base\n" + " ", " \n" + "moduleC\n" + "\n" + "
    This is a test description for the moduleC module.
    \n" + "", "moduleC\n" + "testpkgmdlC", "testpkgmdlA\n" + "All Modules\n" + " ", "
    ", "concealedpkgmdlA\n" + "None\n" + " "); checkOutput("moduleB/module-summary.html", found, "
  • Description | 
  • \n" + "
  • Modules | 
  • \n" + "
  • Packages | 
  • \n" + "
  • Services
  • ", "testpkgmdlB\n" + "None\n" + "All Modules\n" + " ", " \n" + "java.base\n" + " ", "TestClass2InModuleB\n" + " ", "TestInterface2InModuleB\n" + " 
    (Implementation(s): TestClass2InModuleB)", "TestInterfaceInModuleB\n" + " 
    (Implementation(s): TestClassInModuleB)", "
    "); checkOutput("moduleC/module-summary.html", found, "Exports \n" + "\n" + "\n" + "Package\n" + "Exported To Modules\n" + "Description\n" + "\n" + ""); checkOutput("moduletags/module-summary.html", true, "testpkgmdltags\n" + " "); } void checkModuleDeprecation(boolean found) { checkOutput("moduleA/module-summary.html", found, "
    Deprecated, for removal:" + " This API element is subject to removal in a future version.\n" + "
    This module is deprecated.
    \n" + "
    "); checkOutput("deprecated-list.html", found, "", "\n" + "moduleA\n" + "\n" + "
    This module is deprecated.
    \n" + "\n" + ""); checkOutput("moduleB/module-summary.html", !found, "
    Deprecated.\n" + "
    This module is deprecated using just the javadoc tag.
    \n"); checkOutput("moduletags/module-summary.html", found, "

    @Deprecated\n" + "

    ", "
    Deprecated.
    "); } void checkModuleAnnotation() { checkOutput("moduleB/module-summary.html", true, "

    @AnnotationType(optional=\"Module Annotation\",\n" + " required=2016)\n" + "

    "); checkOutput("moduleB/module-summary.html", false, "@AnnotationTypeUndocumented"); } void checkModuleSummaryNoExported(boolean found) { checkOutput("moduleNoExport/module-summary.html", found, "\n" + "

    Packages

    ", "Concealed "); } void checkGroupOption() { checkOutput("index.html", true, "
    \n" + "
    \n" + "
    " + "" + "Other Modules
    \n" + "
    \n" + "", "var data = {\"i0\":1,\"i1\":2,\"i2\":2,\"i3\":4};\n" + "var tabs = {65535:[\"t0\",\"All Modules\"],1:[\"t1\",\"Module Group A\"],2:[\"t2\",\"Module Group B & C\"],4:[\"t4\",\"Other Modules\"]};\n" + "var altColor = \"altColor\";\n" + "var rowColor = \"rowColor\";\n" + "var tableTab = \"tableTab\";\n" + "var activeTableTab = \"activeTableTab\";"); checkOutput("index.html", false, "
    \n
    \n" + "", "Java SE Modules"); } void checkGroupOptionOrdering() { checkOutput("index.html", true, "
    " + "
    ", "var tabs = {65535:[\"t0\",\"All Modules\"],1:[\"t1\",\"B Group\"],2:[\"t2\",\"C Group\"]," + "4:[\"t4\",\"A Group\"],8:[\"t8\",\"Other Modules\"]};"); checkOutput("index.html", false, "
    " + "
    ", "Java SE Modules"); } void checkUnnamedModuleGroupOption() { checkOutput("index.html", true, "
    \n" + "
    The overview summary page header.
    \n" + "
    \n" + "
    \n" + "
    \n" + "
    " + "
    \n" + "
    \n" + "
    Modules 
    ", "var data = {\"i0\":1,\"i1\":2};\n" + "var tabs = {65535:[\"t0\",\"All Packages\"],1:[\"t1\",\"Package Group 0\"],2:[\"t2\",\"Package Group 1\"]};\n" + "var altColor = \"altColor\";\n" + "var rowColor = \"rowColor\";\n" + "var tableTab = \"tableTab\";\n" + "var activeTableTab = \"activeTableTab\";"); } void checkGroupOptionPackageOrdering() { checkOutput("index.html", true, "
    " + "
    ", "var tabs = {65535:[\"t0\",\"All Packages\"],1:[\"t1\",\"Z Group\"],2:[\"t2\",\"A Group\"]};"); } void checkGroupOptionSingleModule() { checkOutput("index.html", true, "window.location.replace('moduleB/module-summary.html')"); } void checkModuleName(boolean found) { checkOutput("test.moduleFullName/module-summary.html", found, "
    \n" + "

    Module test.moduleFullName

    \n" + "
    "); checkOutput("index-all.html", found, "

    T

    \n" + "
    \n" + "
    test.moduleFullName - module test.moduleFullName
    \n" + "
    \n" + "
    This is a test description for the test.moduleFullName.
    \n" + "
    "); checkOutput("test.moduleFullName/module-summary.html", !found, "
    \n" + "

    Module moduleFullName

    \n" + "
    "); checkOutput("index-all.html", !found, "
    \n" + "
    moduleFullName - module moduleFullName
    \n" + "
    \n" + "
    This is a test description for the test.moduleFullName.
    \n" + "
    \n" + "
    "); } void checkLinkOffline() { checkOutput("moduleB/testpkg3mdlB/package-summary.html", true, "Link to String Class"); checkOutput("moduleB/testpkg3mdlB/package-summary.html", true, "Link to java.lang package"); checkOutput("moduleB/testpkg3mdlB/package-summary.html", true, "Link to java.base module"); } void checkLinkSource(boolean includePrivate) { checkOutput("moduleA/module-summary.html", !includePrivate, "
    \n\n" + "\n\n\n" + "\n\n\n" + "\n\n" + "\n" + "\n\n\n
    Exports 
    PackageDescription
    testpkgmdlA 
    "); checkOutput("moduleA/testpkgmdlA/TestClassInModuleA.html", true, "
    \n
    \n" + "
    public class "
                    + "TestClassInModuleA\nextends java.lang.Object
    \n
    "); checkOutput("src-html/moduleA/testpkgmdlA/TestClassInModuleA.html", true, "019 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA\n" + "020 * or visit www.oracle.com if you need additional information or have any\n" + "021 * questions.\n" + "022 */\n" + "023package testpkgmdlA;\n" + "024\n" + "025public class TestClassInModuleA {\n" + "026}"); if (includePrivate) { checkOutput("src-html/moduleA/concealedpkgmdlA/ConcealedClassInModuleA.html", true, "024package concealedpkgmdlA;\n" + "025\n" + "026public class ConcealedClassInModuleA {\n" + "027 public void testMethodConcealedClass() { }\n" + "028}"); } } void checkAllPkgsAllClasses(boolean found) { checkOutput("allclasses-index.html", true, "
    " + "
    \n", "\n" + "\n" + "Class\n" + "Description\n" + "\n" + "\n"); checkOutput("allpackages-index.html", true, "Package Summary \n" + "\n" + "\n" + "Package\n" + "Description\n" + "\n" + ""); checkOutput("allclasses-index.html", found, "\n"); checkOutput("allpackages-index.html", found, "
    \n
    \n"); checkOutput("allclasses-index.html", !found, "
    "); checkOutput("allpackages-index.html", !found, "
    \n" + "
    "); checkOutput("type-search-index.js", true, "{\"l\":\"All Classes\",\"url\":\"allclasses-index.html\"}"); checkOutput("package-search-index.js", true, "{\"l\":\"All Packages\",\"url\":\"allpackages-index.html\"}"); checkOutput("index-all.html", true, "
    All Classes" + "|" + "All Packages"); } }