/* * Copyright (c) 2016, 2018, 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 * @summary Test modules support in javadoc. * @author bpatel * @library ../lib * @modules jdk.javadoc/jdk.javadoc.internal.tool * @build JavadocTester * @run main TestModules */ 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 4. */ @Test void testHtml4() { javadoc("-d", "out", "-use", "-Xdoclint:none", "-overview", testSrc("overview.html"), "--module-source-path", testSrc, "--module", "moduleA,moduleB", "testpkgmdlA", "testpkgmdlB"); checkExit(Exit.OK); checkDescription(true); checkNoDescription(false); checkOverviewSummaryModules(); checkModuleLink(); checkModuleClickThroughLinks(); checkModuleClickThrough(true); checkModuleFilesAndLinks(true); checkModulesInSearch(true); checkOverviewFrame(true); } /** * Test generated module pages for HTML 5. */ @Test void testHtml5() { javadoc("-d", "out-html5", "-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(); checkModuleClickThroughLinks(); checkModuleClickThrough(true); checkModuleFilesAndLinks(true); checkModulesInSearch(true); checkOverviewFrame(true); } /** * Test generated module pages for HTML 4 with -nocomment option. */ @Test void testHtml4NoComment() { javadoc("-d", "out-nocomment", "-nocomment", "-use", "-Xdoclint:none", "-overview", testSrc("overview.html"), "--module-source-path", testSrc, "--module", "moduleA,moduleB", "testpkgmdlA", "testpkgmdlB"); checkExit(Exit.OK); checkDescription(false); checkNoDescription(true); checkModuleLink(); checkModuleFilesAndLinks(true); checkOverviewFrame(true); } /** * Test generated module pages for HTML 5 with -nocomment option. */ @Test void testHtml5NoComment() { javadoc("-d", "out-html5-nocomment", "-nocomment", "-html5", "-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); checkOverviewFrame(true); } /** * Test generated pages, in an unnamed module, for HTML 4. */ @Test void testHtml4UnnamedModule() { javadoc("-d", "out-nomodule", "-use", "-overview", testSrc("overview.html"), "-sourcepath", testSrc, "testpkgnomodule", "testpkgnomodule1"); checkExit(Exit.OK); checkOverviewSummaryPackages(); checkModuleClickThrough(false); checkModuleFilesAndLinks(false); checkModulesInSearch(false); checkOverviewFrame(false); } /** * Test generated pages, in an unnamed module, for HTML 5. */ @Test void testHtml5UnnamedModule() { javadoc("-d", "out-html5-nomodule", "-html5", "-use", "-overview", testSrc("overview.html"), "-sourcepath", testSrc, "testpkgnomodule", "testpkgnomodule1"); checkExit(Exit.OK); checkHtml5OverviewSummaryPackages(); checkModuleFilesAndLinks(false); checkModulesInSearch(false); checkOverviewFrame(false); } /** * Test generated module pages with javadoc tags. */ @Test 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 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 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 void testModuleFilesAndLinks() { javadoc("-d", "out-modulelinks", "-Xdoclint:none", "--module-source-path", testSrc, "--module", "moduleA,moduleB", "testpkgmdlA", "testpkgmdlB"); checkExit(Exit.OK); checkModuleFilesAndLinks(true); checkOverviewFrame(true); } /** * Test generated module pages for a deprecated module. */ @Test 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 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 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); checkModuleFrameFiles(true); checkAllModulesLink(true); } /** * Test module summary pages in "all" mode. */ @Test 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); checkModuleFrameFiles(true); checkAllModulesLink(true); } /** * Test generated module summary page of a module with no exported package. */ @Test 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 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 void testSingleModuleSinglePkg() { javadoc("-d", "out-singlemod", "--module-source-path", testSrc, "--module", "moduleC", "testpkgmdlC"); checkExit(Exit.OK); checkModuleFrameFiles(false); } /** * Test generated module pages for javadoc run for a single module having multiple packages. */ @Test void testSingleModuleMultiplePkg() { javadoc("-d", "out-singlemodmultiplepkg", "--show-module-contents=all", "-Xdoclint:none", "--module-source-path", testSrc, "--module", "moduleB", "testpkg2mdlB", "testpkgmdlB"); checkExit(Exit.OK); checkAllModulesLink(false); } /** * Test -group option for modules. The overview-summary.html page should group the modules accordingly. */ @Test 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 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 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 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 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 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 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(); } 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("overview-summary.html", found, "\n" + "
\n" + "
The overview summary page header.
\n" + "
\n" + "
\n" + "\n" + ""); checkOutput("overview-summary.html", false, "
Modules 
\n" + "
\n" + "
\n" + "
The overview summary page header.
\n" + "
\n" + "
\n" + "\n" + ""); } void checkNoDescription(boolean found) { checkOutput("moduleA/module-summary.html", found, "
\n" + "
Modules 
\n" + ""); checkOutput("overview-summary.html", false, "
Modules 
\n" + "
\n" + "\n" + "
\n" + "
\n" + "
The overview summary page header.
\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("overview-summary.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" + "
                Bhavesh Patel
                "); checkOutput("moduletags/testpkgmdltags/TestClassInModuleTags.html", false, "
                Module Tag:
                \n" + "
                Just a simple module tag.
                "); } void checkOverviewSummaryModules() { checkOutput("overview-summary.html", true, "
Modules 
\n" + "\n" + "\n" + "\n" + "\n" + ""); checkOutput("overview-summary.html", false, "
Modules 
ModuleDescription
\n" + "\n" + "\n" + "\n" + "\n" + ""); } void checkOverviewSummaryPackages() { checkOutput("overview-summary.html", false, "
Packages 
PackageDescription
\n" + "\n" + "\n" + "\n" + "\n" + "", "
Modules 
ModuleDescription
\n" + "
\n" + "
\n" + "
The overview summary page header.
\n" + "
\n" + "
\n" + "\n" + ""); checkOutput("overview-summary.html", true, "
Packages 
\n" + "\n" + "\n" + "\n" + "\n" + "", "\n" + "
\n" + "
The overview summary page header.
\n" + "
\n" + "
\n" + "
Packages 
PackageDescription
\n" + ""); } void checkHtml5OverviewSummaryModules() { checkOutput("overview-summary.html", true, "
Packages 
\n" + "\n" + "\n" + "\n" + "\n" + ""); checkOutput("overview-summary.html", false, "
Modules 
ModuleDescription
\n" + "\n" + "\n" + "\n" + "\n" + ""); } void checkHtml5OverviewSummaryPackages() { checkOutput("overview-summary.html", false, "
Packages 
PackageDescription
\n" + "\n" + "\n" + "\n" + "\n" + "", "
Modules 
ModuleDescription
\n" + "
\n" + "
\n" + "
\n" + "
\n" + "
The overview summary page header.
\n" + "
\n" + "
\n" + "\n" + "\n" + "\n" + ""); checkOutput("overview-summary.html", true, "
Packages 
\n" + "\n" + "\n" + "\n" + "\n" + "", "\n" + "\n" + "\n" + "
\n" + "
\n" + "
The overview summary page header.
\n" + "
\n" + "
\n" + "
Packages 
PackageDescription
\n" + ""); } void checkModuleSummary() { checkOutput("moduleA/module-summary.html", true, "", "\n" + "\n" + "\n" + "", "\n" + "\n" + "\n" + "", "\n" + "\n" + "\n" + "", "\n" + "\n" + "\n" + "\n" + ""); checkOutput("moduleB/module-summary.html", true, "
  • Description | Modules | " + "Packages | " + "Services
  • ", "\n" + "\n" + "\n" + "", "\n" + "\n" + "\n" + "", "\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" + "\n" + "\n" + ""); } void checkModuleClickThroughLinks() { checkOutput("module-overview-frame.html", true, "
  • moduleA
  • ", "
  • moduleB
  • "); checkOutput("script.js", true, "function updateModuleFrame(pFrame, cFrame)\n" + "{\n" + " top.packageFrame.location = pFrame;\n" + " top.classFrame.location = cFrame;\n" + "}"); } void checkModuleClickThrough(boolean found) { checkFiles(found, "moduleA/module-type-frame.html", "moduleB/module-type-frame.html"); } 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-frame.html", "moduleA/module-summary.html", "module-overview-frame.html"); } void checkModuleFrameFiles(boolean found) { checkFiles(found, "moduleC/module-frame.html", "moduleC/module-type-frame.html", "module-overview-frame.html"); checkFiles(true, "moduleC/module-summary.html", "allclasses-frame.html", "allclasses-noframe.html"); } void checkAllModulesLink(boolean found) { checkOutput("overview-frame.html", found, "
  • All Modules
  • "); } 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 phrase - Search tag in moduleA
    \n" + "
    with description
    \n" + "
    " + "search_word - Search tag in moduleB
    \n" + "
     
    \n" + "
    "); checkOutput("index-all.html", false, "
    " + "search phrase - Search tag in moduleA
    \n" + "
    with description
    \n" + "
    " + "search phrase - Search tag in moduleA
    \n" + "
    with description
    "); } void checkModuleModeCommon() { checkOutput("overview-summary.html", true, "\n" + "", "\n" + "", "\n" + ""); checkOutput("moduleA/module-summary.html", true, "
  • Description | " + "Modules | Packages | Services
  • ", "\n" + "\n"); checkOutput("moduleB/module-summary.html", true, "\n" + "\n"); checkOutput("moduletags/module-summary.html", true, "
  • Description | Modules" + " | Packages | Services
  • ", "
    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" + "", "
    Indirect Requires 
    transitivemoduleB\n" + "
    This is a test description for the moduleB module.
    \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" + "", "
    Requires 
    ModifierModuleDescription
    \n" + "\n" + "\n" + "\n" + "\n" + "", "
    Indirect Requires 
    ModifierModuleDescription
    \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 | Modules | " + "Packages | Services
  • ", "\n" + "", "
    Indirect Opens 
    FromPackages
    moduleBtestpkgmdlBtestpkgmdlA testpkgmdlB 
    \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" + " ", "All Packages " + "Exports" + " " + "Concealed ", "concealedpkgmdlA\n" + "None\n" + " "); checkOutput("moduleB/module-summary.html", found, "
  • Description | " + "Modules | Packages | Services
  • ", "testpkgmdlB\n" + "None\n" + "All Modules\n" + " ", " \n" + "java.base\n" + " ", "TestClass2InModuleB\n" + " ", "TestInterface2InModuleB\n" + " 
    (Implementation(s): TestClass2InModuleB)", "TestInterfaceInModuleB\n" + " 
    (Implementation(s): TestClassInModuleB)", "All Packages " + "Exports " + "Opens "); checkOutput("moduleC/module-summary.html", found, "Exports \n" + "\n" + "Package\n" + "Exported To Modules\n" + "Description\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 checkOverviewFrame(boolean found) { checkOutput("index.html", !found, ""); checkOutput("index.html", found, ""); } void checkModuleSummaryNoExported(boolean found) { checkOutput("moduleNoExport/module-summary.html", found, "\n" + "\n" + "\n" + "", "Concealed "); } void checkGroupOption() { checkOutput("overview-summary.html", true, "
    \n" + "\n" + "", "var groups = {\"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("overview-summary.html", false, "
    All Modules " + "" + "Module Group A " + "Module Group B & C" + " " + "Other Modules 
    \n" + "", "Java SE Modules"); } void checkGroupOptionOrdering() { checkOutput("overview-summary.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("overview-summary.html", false, "", "Java SE Modules"); } void checkUnnamedModuleGroupOption() { checkOutput("overview-summary.html", true, "
    \n" + "
    The overview summary page header.
    \n" + "
    \n" + "
    \n" + "
    Modules All Modules " + "B Group" + " " + "C Group " + "A Group " + "Other Modules" + " All Modules " + "A Group" + " " + "B Group " + "C Group " + "Other Modules" + " 
    \n" + "", "var groups = {\"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("overview-summary.html", true, "", "var tabs = {65535:[\"t0\",\"All Packages\"],1:[\"t1\",\"Z Group\"],2:[\"t2\",\"A Group\"]};"); } void checkGroupOptionSingleModule() { checkOutput("overview-summary.html", true, "
    \n" + "
    All Packages " + "" + "Package Group 0 Package Group 1" + " All Packages " + "Z Group" + " " + "A Group 
    \n" + ""); checkOutput("overview-summary.html", false, "
    Module Group B 
    \n" + ""); } 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("module-overview-frame.html", found, "

    Modules

    \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"); } }
    Modules