/* * Copyright (c) 2016, 2020, 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 8239804 8239816 * @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, """
This is a test description for the moduleA module with a Sear\ ch phrase search phrase\ .
"""); checkOutput("moduleB/module-summary.html", found, """
This is a test description for the moduleB module. Search wor\ d search_word with no de\ scription.
"""); checkOutput("index.html", found, """
The overview summary page header.
"""); checkOutput("index.html", false, """
Modules 
The overview summary page header.
"""); } void checkNoDescription(boolean found) { checkOutput("moduleA/module-summary.html", found, """

@Deprecated(forRemoval=true)

Module moduleA

Modules 
"""); checkOutput("index.html", false, """
Modules
The overview summary page header.
"""); } void checkHtml5NoDescription(boolean found) { checkOutput("moduleA/module-summary.html", found, """

@Deprecated(forRemoval=true)

Module moduleA

  • """); checkOutput("moduleB/module-summary.html", found, """

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

    Module moduleB

    • """); } void checkModuleLink() { checkOutput("index.html", true, "
    • Module
    • "); checkOutput("moduleA/module-summary.html", true, """ """); checkOutput("moduleB/module-summary.html", true, """ """); 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, """
Modules<
"""); checkOutput("overview-summary.html", false, """
Modules
Module Description
"""); } void checkOverviewSummaryPackages() { checkOutput("index.html", false, """
Packages
Package Description
""", """
Modules
Module Description
The overview summary page header.
"""); checkOutput("index.html", true, """
Packages
n """, """
The overview summary page header.
Packages
Package Description
"""); } void checkHtml5OverviewSummaryModules() { checkOutput("index.html", true, """
Packages
"""); checkOutput("overview-summary.html", false, """
Modules
Module Description
"""); } void checkHtml5OverviewSummaryPackages() { checkOutput("index.html", false, """
Packages
Package Description
""", """
Modules
Module Description
The overview summary page header.
"""); checkOutput("index.html", true, """
Packages
""", """
The overview summary page header.
Packages
Package Description
"""); } void checkModuleSummary() { checkOutput("moduleA/module-summary.html", true, """ """, """

Modules

""", """
""", """

Packages

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

    Packages

    """, """ """, """

    Packages

    """, """

    Services

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

    Module moduleT

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

    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 <\ a href="package-summary.html">testpkgmdlB
    """); checkFiles(found, "moduleA/module-summary.html"); } void checkModulesInSearch(boolean found) { checkOutput("index-all.html", found, """
    moduleA - module moduleA
    This is a test description for the moduleA module with a Search phrase search phrase.
    moduleB - module moduleB
    This is a test description for the moduleB module.
    """, """
    search_word - Search tag in module moduleB
     
    search phrase - Search tag in module moduleA
    with description
    """); checkOutput("index-all.html", false, """
    search phrase - Search tag in module moduleA
    with description
    search phrase - Search tag in module moduleA
    with description
    """); } void checkModuleModeCommon() { checkOutput("index.html", true, """ """, """ """, """ """); checkOutput("moduleA/module-summary.html", true, """
  • Description | 
  • Modules | 
  • Packages | 
  • Services
  • """, """ """); checkOutput("moduleB/module-summary.html", true, """ """); checkOutput("moduletags/module-summary.html", true, """
  • Description | 
  • Modules | 
  • Packages | 
  • Services
  • """, """
    Packages
    testpkgmdlA  
    transitive moduleB
    This is a test description for the moduleB module.
    testpkgmdlB  
    TestClassInModuleB
    With a test description for uses.
    Opens
    Package Description
    Uses
    Type Description
    Provides
    Type Description
    transitive moduleA
    This is a test description for the moduleA module with a Search phrase search phrase.
    transitive moduleB
    This is a test description for the moduleB module.
    moduleA
    This is a test description for the moduleA module with a Search phrase search phrase.
    moduleB
    This is a test description for the moduleB module.
    moduletags
    This is a test description for the moduletags module.
    Type Link: TestClassInModuleTags.
    Member Link: testMethod(String).
    Package Link: testpkgmdltags.
    moduleB testpkgmdlBTestClassInModuleB
    With a test description for uses.
    """, """ """, """
    Indirect Requires
    transitive moduleB
    This is a test description for the moduleB module.
    """, """ """, """
    Indirect Exports
    transitive static moduleA
    This is a test description for the moduleA module with a Search phrase search phrase.
    """, """
    Requires
    Modifier Module Description
    """, """
    Indirect Requires
    Modifier Module Description
    """, """ """); } void checkModuleModeApi(boolean found) { checkOutput("moduleA/module-summary.html", found, """ """); checkOutput("moduleB/module-summary.html", found, """
  • Description | 
  • Modules | 
  • Packages | 
  • Services
  • """, """ """, """
    Indirect Opens
    From Packages
    moduleB testpkgmdlBtestpkgmdlA   testpkgmdlB  
    Opens
    Package Description
    testpkgmdlB  
    """); checkOutput("moduletags/module-summary.html", true, """ testpkgmdltags  """); } void checkModuleModeAll(boolean found) { checkOutput("moduleA/module-summary.html", found, """ java.base  """, """ moduleC
    This is a test description for the moduleC module.
    """, """ moduleC testpkgmdlC""", """ testpkgmdlA All Modules  """, """
    """, """ concealedpkgmdlA None  """); checkOutput("moduleB/module-summary.html", found, """
  • Description | 
  • Modules | 
  • Packages | 
  • Services
  • """, """ testpkgmdlB None All Modules  """, """ java.base  """, """ TestClass2InModuleB  """, """ TestInterface2InModuleB  
    (Implementatio\ n(s): TestClass2InModuleB)""", """ TestInterfaceInModuleB  
    (Implementatio\ n(s): TestClassInModuleB)""", """
    """); checkOutput("moduleC/module-summary.html", found, """ Exports Package Exported To Modules Description """); checkOutput("moduletags/module-summary.html", true, """ testpkgmdltags  """); } void checkModuleDeprecation(boolean found) { checkOutput("moduleA/module-summary.html", found, """
    Deprecated, for re\ moval: This API element is subject to removal in a future version.
    This module is deprecated.
    """); checkOutput("deprecated-list.html", found, """ """, """ moduleA
    This module is deprecated.
    """); checkOutput("moduleB/module-summary.html", !found, """
    Deprecated.
    This module is deprecated using just the javadoc tag.
    """); checkOutput("moduletags/module-summary.html", found, """

    @Deprecated

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

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

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

    Packages

    """, "Concealed"); } void checkGroupOption() { checkOutput("index.html", true, """
    """, """ var data = {"i0":1,"i1":2,"i2":2,"i3":4}; var tabs = {65535:["t0","All Modules"],1:["t1","Module Group A"],2:["t2","Module\ Group B & C"],4:["t4","Other Modules"]}; var altColor = "alt-color"; var rowColor = "row-color"; var tableTab = "table-tab"; var activeTableTab = "active-table-tab";"""); checkOutput("index.html", false, """
    """, "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, """
    The overview summary page header.
    Modules
    """, """ var data = {"i0":1,"i1":2}; var tabs = {65535:["t0","All Packages"],1:["t1","Package Group 0"],2:["t2","Package Group 1"]}; var altColor = "alt-color"; var rowColor = "row-color"; var tableTab = "table-tab"; var activeTableTab = "active-table-tab";"""); } 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, """

    Module test.moduleFullName

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

    T

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

    Module moduleFullName

    """); checkOutput("index-all.html", !found, """
    moduleFullName - module moduleFullName
    This is a test description for the test.moduleFullName.
    """); } 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, """
    Exports
    Package Description
    testpkgmdlA  
    """); checkOutput("moduleA/testpkgmdlA/TestClassInModuleA.html", true, """

    public class TestClassInModuleA
                        extends java.lang.Object
    """); checkOutput("src-html/moduleA/testpkgmdlA/TestClassInModuleA.html", true, """ 019 * Please contact Orac\ le, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 020 * or visit www.oracle\ .com if you need additional information or have any 021 * questions. 022 */ 023package testpkgmdlA; 024 025public class TestClassInModuleA { 026}"""); if (includePrivate) { checkOutput("src-html/moduleA/concealedpkgmdlA/ConcealedClassInModuleA.html", true, """ 024package concealedpkgmdlA; 025 026public class ConcealedClassInModuleA { 027 public void testMethodConcealedClass() { } 028}"""); } } void checkAllPkgsAllClasses(boolean found) { checkOutput("allclasses-index.html", true, """
    """, """ Class Description """); checkOutput("allpackages-index.html", true, """ Package Summary Package Description """); checkOutput("allclasses-index.html", found, """ """); checkOutput("allpackages-index.html", found, """
    """); checkOutput("allclasses-index.html", !found, """
    """); checkOutput("allpackages-index.html", !found, """
    """); checkOutput("type-search-index.js", true, """ {"l":"All Classes","u":"allclasses-index.html"}"""); checkOutput("package-search-index.js", true, """ {"l":"All Packages","u":"allpackages-index.html"}"""); checkOutput("index-all.html", true, """
    All Classes|All Packages"""); } }