test/langtools/jdk/javadoc/doclet/testModules/TestModules.java
changeset 49139 771616d26ca1
parent 48759 ffa68af7da87
child 49551 0d4786e42471
--- a/test/langtools/jdk/javadoc/doclet/testModules/TestModules.java	Tue Mar 06 17:43:21 2018 +0100
+++ b/test/langtools/jdk/javadoc/doclet/testModules/TestModules.java	Tue Mar 06 10:45:47 2018 -0800
@@ -26,7 +26,7 @@
  * @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
+        8164407 8192007 8182765
  * @summary Test modules support in javadoc.
  * @author bpatel
  * @library ../lib
@@ -46,7 +46,10 @@
      */
     @Test
     void testHtml4() {
-        javadoc("-d", "out", "-use", "-Xdoclint:none",
+        javadoc("-d", "out",
+                "-html4",
+                "-use",
+                "-Xdoclint:none",
                 "-overview", testSrc("overview.html"),
                 "--module-source-path", testSrc,
                 "--module", "moduleA,moduleB",
@@ -68,7 +71,9 @@
      */
     @Test
     void testHtml5() {
-        javadoc("-d", "out-html5", "-html5", "-use", "-Xdoclint:none",
+        javadoc("-d", "out-html5",
+                "-use",
+                "-Xdoclint:none",
                 "-overview", testSrc("overview.html"),
                 "--module-source-path", testSrc,
                 "--module", "moduleA,moduleB",
@@ -90,7 +95,11 @@
      */
     @Test
     void testHtml4NoComment() {
-        javadoc("-d", "out-nocomment", "-nocomment", "-use", "-Xdoclint:none",
+        javadoc("-d", "out-nocomment",
+                "-html4",
+                "-nocomment",
+                "-use",
+                "-Xdoclint:none",
                 "-overview", testSrc("overview.html"),
                 "--module-source-path", testSrc,
                 "--module", "moduleA,moduleB",
@@ -108,7 +117,10 @@
      */
     @Test
     void testHtml5NoComment() {
-        javadoc("-d", "out-html5-nocomment", "-nocomment", "-html5", "-use", "-Xdoclint:none",
+        javadoc("-d", "out-html5-nocomment",
+                "-nocomment",
+                "-use",
+                "-Xdoclint:none",
                 "-overview", testSrc("overview.html"),
                 "--module-source-path", testSrc,
                 "--module", "moduleA,moduleB",
@@ -126,7 +138,9 @@
      */
     @Test
     void testHtml4UnnamedModule() {
-        javadoc("-d", "out-nomodule", "-use",
+        javadoc("-d", "out-nomodule",
+                "-html4",
+                "-use",
                 "-overview", testSrc("overview.html"),
                 "-sourcepath", testSrc,
                 "testpkgnomodule", "testpkgnomodule1");
@@ -143,7 +157,8 @@
      */
     @Test
     void testHtml5UnnamedModule() {
-        javadoc("-d", "out-html5-nomodule", "-html5", "-use",
+        javadoc("-d", "out-html5-nomodule",
+                "-use",
                 "-overview", testSrc("overview.html"),
                 "-sourcepath", testSrc,
                 "testpkgnomodule", "testpkgnomodule1");
@@ -159,7 +174,10 @@
      */
     @Test
     void testJDTagsInModules() {
-        javadoc("-d", "out-mdltags", "-author", "-version", "-Xdoclint:none",
+        javadoc("-d", "out-mdltags",
+                "-author",
+                "-version",
+                "-Xdoclint:none",
                 "-tag", "regular:a:Regular Tag:",
                 "-tag", "moduletag:s:Module Tag:",
                 "--module-source-path", testSrc,
@@ -170,11 +188,32 @@
     }
 
     /**
+     * Test generated module pages with javadoc tags.
+     */
+    @Test
+    void testJDTagsInModules_html4() {
+        javadoc("-d", "out-mdltags-html4",
+                "-html4",
+                "-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_html4();
+    }
+
+    /**
      * Test generated module summary page.
      */
     @Test
     void testModuleSummary() {
-        javadoc("-d", "out-moduleSummary", "-use", "-Xdoclint:none",
+        javadoc("-d", "out-moduleSummary",
+                "-use",
+                "-Xdoclint:none",
                 "--module-source-path", testSrc,
                 "--module", "moduleA,moduleB",
                 "testpkgmdlA", "testpkgmdlB", "moduleB/testpkg2mdlB");
@@ -184,11 +223,29 @@
     }
 
     /**
+     * Test generated module summary page.
+     */
+    @Test
+    void testModuleSummary_html4() {
+        javadoc("-d", "out-moduleSummary-html4",
+                "-html4",
+                "-use",
+                "-Xdoclint:none",
+                "--module-source-path", testSrc,
+                "--module", "moduleA,moduleB",
+                "testpkgmdlA", "testpkgmdlB", "moduleB/testpkg2mdlB");
+        checkExit(Exit.OK);
+        checkModuleSummary_html4();
+        checkNegatedModuleSummary_html4();
+    }
+
+    /**
      * Test generated module summary page of an aggregating module.
      */
     @Test
     void testAggregatorModuleSummary() {
-        javadoc("-d", "out-aggregatorModuleSummary", "-use",
+        javadoc("-d", "out-aggregatorModuleSummary",
+                "-use",
                 "--module-source-path", testSrc,
                 "--expand-requires", "transitive",
                 "--module", "moduleT");
@@ -201,7 +258,8 @@
      */
     @Test
     void testModuleFilesAndLinks() {
-        javadoc("-d", "out-modulelinks", "-Xdoclint:none",
+        javadoc("-d", "out-modulelinks",
+                "-Xdoclint:none",
                 "--module-source-path", testSrc,
                 "--module", "moduleA,moduleB",
                 "testpkgmdlA", "testpkgmdlB");
@@ -215,7 +273,8 @@
      */
     @Test
     void testModuleDeprecation() {
-        javadoc("-d", "out-moduledepr", "-Xdoclint:none",
+        javadoc("-d", "out-moduledepr",
+                "-Xdoclint:none",
                 "-tag", "regular:a:Regular Tag:",
                 "-tag", "moduletag:s:Module Tag:",
                 "--module-source-path", testSrc,
@@ -230,7 +289,8 @@
      */
     @Test
     void testModuleAnnotation() {
-        javadoc("-d", "out-moduleanno", "-Xdoclint:none",
+        javadoc("-d", "out-moduleanno",
+                "-Xdoclint:none",
                 "--module-source-path", testSrc,
                 "--module", "moduleA,moduleB",
                 "testpkgmdlA", "testpkgmdlB");
@@ -239,11 +299,31 @@
     }
 
     /**
+     * Test annotations on modules.
+     */
+    @Test
+    void testModuleAnnotation_html4() {
+        javadoc("-d", "out-moduleanno-html4",
+                "-html4",
+                "-Xdoclint:none",
+                "--module-source-path", testSrc,
+                "--module", "moduleA,moduleB",
+                "testpkgmdlA", "testpkgmdlB");
+        checkExit(Exit.OK);
+        checkModuleAnnotation_html4();
+    }
+
+    /**
      * Test module summary pages in "api" mode.
      */
     @Test
     void testApiMode() {
-        javadoc("-d", "out-api", "-use", "--show-module-contents=api", "-author", "-version", "-Xdoclint:none",
+        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,
@@ -262,7 +342,12 @@
      */
     @Test
     void testAllMode() {
-        javadoc("-d", "out-all", "-use", "--show-module-contents=all", "-author", "-version", "-Xdoclint:none",
+        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,
@@ -277,11 +362,35 @@
     }
 
     /**
+     * Test module summary pages in "all" mode.
+     */
+    @Test
+    void testAllModeHtml4() {
+        javadoc("-d", "out-all-html4",
+                "-html4",
+                "-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_html4();
+        checkModuleModeApi_html4(false);
+    }
+
+    /**
      * Test generated module summary page of a module with no exported package.
      */
     @Test
     void testModuleSummaryNoExportedPkgAll() {
-        javadoc("-d", "out-ModuleSummaryNoExportedPkgAll", "-use", "--show-module-contents=all",
+        javadoc("-d", "out-ModuleSummaryNoExportedPkgAll",
+                "-use",
+                "--show-module-contents=all",
                 "-sourcepath", testSrc + "/moduleNoExport",
                 "--module", "moduleNoExport",
                 "testpkgmdlNoExport");
@@ -293,8 +402,25 @@
      * Test generated module summary page of a module with no exported package.
      */
     @Test
+    void testModuleSummaryNoExportedPkgAll_html4() {
+        javadoc("-d", "out-ModuleSummaryNoExportedPkgAll-html4",
+                "-html4",
+                "-use",
+                "--show-module-contents=all",
+                "-sourcepath", testSrc + "/moduleNoExport",
+                "--module", "moduleNoExport",
+                "testpkgmdlNoExport");
+        checkExit(Exit.OK);
+        checkModuleSummaryNoExported_html4(true);
+    }
+
+    /**
+     * Test generated module summary page of a module with no exported package.
+     */
+    @Test
     void testModuleSummaryNoExportedPkgApi() {
-        javadoc("-d", "out-ModuleSummaryNoExportedPkgApi", "-use",
+        javadoc("-d", "out-ModuleSummaryNoExportedPkgApi",
+                "-use",
                 "-sourcepath", testSrc + "/moduleNoExport",
                 "--module", "moduleNoExport",
                 "testpkgmdlNoExport");
@@ -303,6 +429,21 @@
     }
 
     /**
+     * Test generated module summary page of a module with no exported package.
+     */
+    @Test
+    void testModuleSummaryNoExportedPkgApi_html4() {
+        javadoc("-d", "out-ModuleSummaryNoExportedPkgApi-html4",
+                "-html4",
+                "-use",
+                "-sourcepath", testSrc + "/moduleNoExport",
+                "--module", "moduleNoExport",
+                "testpkgmdlNoExport");
+        checkExit(Exit.OK);
+        checkModuleSummaryNoExported_html4(false);
+    }
+
+    /**
      * Test generated module pages for javadoc run for a single module having a single package.
      */
     @Test
@@ -320,7 +461,9 @@
      */
     @Test
     void testSingleModuleMultiplePkg() {
-        javadoc("-d", "out-singlemodmultiplepkg", "--show-module-contents=all", "-Xdoclint:none",
+        javadoc("-d", "out-singlemodmultiplepkg",
+                "--show-module-contents=all",
+                "-Xdoclint:none",
                 "--module-source-path", testSrc,
                 "--module", "moduleB",
                 "testpkg2mdlB", "testpkgmdlB");
@@ -333,7 +476,9 @@
      */
     @Test
     void testGroupOption() {
-        javadoc("-d", "out-group", "--show-module-contents=all", "-Xdoclint:none",
+        javadoc("-d", "out-group",
+                "--show-module-contents=all",
+                "-Xdoclint:none",
                 "-tag", "regular:a:Regular Tag:",
                 "-tag", "moduletag:s:Module Tag:",
                 "--module-source-path", testSrc,
@@ -348,13 +493,37 @@
     }
 
     /**
+     * Test -group option for modules. The overview-summary.html page should group the modules accordingly.
+     */
+    @Test
+    void testGroupOption_html4() {
+        javadoc("-d", "out-group-html4",
+                "-html4",
+                "--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_html4();
+    }
+
+    /**
      * 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",
+        javadoc("-d", "out-groupOrder",
+                "--show-module-contents=all",
+                "-Xdoclint:none",
                 "-tag", "regular:a:Regular Tag:",
                 "-tag", "moduletag:s:Module Tag:",
                 "--module-source-path", testSrc,
@@ -374,7 +543,9 @@
      */
     @Test
     void testUnnamedModuleGroupOption() {
-        javadoc("-d", "out-groupnomodule", "-use", "-Xdoclint:none",
+        javadoc("-d", "out-groupnomodule",
+                "-use",
+                "-Xdoclint:none",
                 "-overview", testSrc("overview.html"),
                 "-sourcepath", testSrc,
                 "-group", "Package Group 0", "testpkgnomodule",
@@ -385,13 +556,33 @@
     }
 
     /**
+     * Test -group option for unnamed modules. The overview-summary.html page should group the packages accordingly.
+     */
+    @Test
+    void testUnnamedModuleGroupOption_html4() {
+        javadoc("-d", "out-groupnomodule-html4",
+                "-html4",
+                "-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_html4();
+    }
+
+    /**
      * 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",
+        javadoc("-d", "out-groupPkgOrder",
+                "-use",
+                "-Xdoclint:none",
                 "-overview", testSrc("overview.html"),
                 "-sourcepath", testSrc,
                 "-group", "Z Group", "testpkgnomodule",
@@ -406,7 +597,9 @@
      */
     @Test
     void testGroupOptionSingleModule() {
-        javadoc("-d", "out-groupsinglemodule", "-use", "-Xdoclint:none",
+        javadoc("-d", "out-groupsinglemodule",
+                "-use",
+                "-Xdoclint:none",
                 "--module-source-path", testSrc,
                 "-group", "Module Group B", "moduleB*",
                 "--module", "moduleB",
@@ -419,8 +612,27 @@
      * Test -group option for a single module.
      */
     @Test
+    void testGroupOptionSingleModule_html4() {
+        javadoc("-d", "out-groupsinglemodule-html4",
+                "-html4",
+                "-use",
+                "-Xdoclint:none",
+                "--module-source-path", testSrc,
+                "-group", "Module Group B", "moduleB*",
+                "--module", "moduleB",
+                "testpkg2mdlB", "testpkgmdlB");
+        checkExit(Exit.OK);
+        checkGroupOptionSingleModule_html4();
+    }
+
+    /**
+     * Test -group option for a single module.
+     */
+    @Test
     void testModuleName() {
-        javadoc("-d", "out-modulename", "-use", "-Xdoclint:none",
+        javadoc("-d", "out-modulename",
+                "-use",
+                "-Xdoclint:none",
                 "--module-source-path", testSrc,
                 "--module", "moduleB,test.moduleFullName",
                 "testpkg2mdlB", "testpkgmdlB", "testpkgmdlfullname");
@@ -434,7 +646,10 @@
     @Test
     void testLinkOffline() {
         String url = "https://docs.oracle.com/javase/9/docs/api/";
-        javadoc("-d", "out-linkoffline", "-use", "--show-module-contents=all", "-Xdoclint:none",
+        javadoc("-d", "out-linkoffline",
+                "-use",
+                "--show-module-contents=all",
+                "-Xdoclint:none",
                 "--module-source-path", testSrc,
                 "--module", "moduleA,moduleB",
                 "-linkoffline", url, testSrc + "/jdk",
@@ -589,7 +804,7 @@
                 "Type Link: <a href=\"testpkgmdltags/TestClassInModuleTags.html\" title=\"class in "
                 + "testpkgmdltags\"><code>TestClassInModuleTags</code></a>.",
                 "Member Link: <a href=\"testpkgmdltags/TestClassInModuleTags.html#"
-                + "testMethod-java.lang.String-\"><code>testMethod(String)</code></a>.",
+                + "testMethod(java.lang.String)\"><code>testMethod(String)</code></a>.",
                 "Package Link: <a href=\"testpkgmdltags/package-summary.html\"><code>testpkgmdltags</code></a>.",
                 "<dt><span class=\"simpleTagLabel\">Since:</span></dt>\n"
                 + "<dd>JDK 9</dd>",
@@ -610,6 +825,12 @@
                 + "<dd>Just a simple module tag.</dd>");
     }
 
+    void checkModuleTags_html4() {
+        checkOutput("moduletags/module-summary.html", true,
+                "Member Link: <a href=\"testpkgmdltags/TestClassInModuleTags.html#"
+                + "testMethod-java.lang.String-\"><code>testMethod(String)</code></a>.");
+    }
+
     void checkOverviewSummaryModules() {
         checkOutput("overview-summary.html", true,
                 "<table class=\"overviewSummary\" summary=\"Module Summary table, listing modules, and an explanation\">\n"
@@ -724,7 +945,7 @@
                 + "Packages</a>&nbsp;|&nbsp;Services</li>\n"
                 + "</ul>",
                 "<!-- ============ MODULES SUMMARY =========== -->\n"
-                + "<a name=\"modules.summary\">\n"
+                + "<a id=\"modules.summary\">\n"
                 + "<!--   -->\n"
                 + "</a>",
                 "<tr class=\"altColor\" id=\"i0\">\n"
@@ -732,7 +953,7 @@
                 + "<td class=\"colLast\">&nbsp;</td>\n"
                 + "</tr>",
                 "<!-- ============ PACKAGES SUMMARY =========== -->\n"
-                + "<a name=\"packages.summary\">\n"
+                + "<a id=\"packages.summary\">\n"
                 + "<!--   -->\n"
                 + "</a>",
                 "<tr class=\"altColor\">\n"
@@ -747,7 +968,7 @@
                 + "<a href=\"#packages.summary\">Packages</a>&nbsp;|&nbsp;<a href=\"#services.summary\">"
                 + "Services</a></li>",
                 "<!-- ============ PACKAGES SUMMARY =========== -->\n"
-                + "<a name=\"packages.summary\">\n"
+                + "<a id=\"packages.summary\">\n"
                 + "<!--   -->\n"
                 + "</a>",
                 "<tr class=\"altColor\" id=\"i0\">\n"
@@ -755,11 +976,11 @@
                 + "<td class=\"colLast\">&nbsp;</td>\n"
                 + "</tr>",
                 "<!-- ============ PACKAGES SUMMARY =========== -->\n"
-                + "<a name=\"packages.summary\">\n"
+                + "<a id=\"packages.summary\">\n"
                 + "<!--   -->\n"
                 + "</a>",
                 "<!-- ============ SERVICES SUMMARY =========== -->\n"
-                + "<a name=\"services.summary\">\n"
+                + "<a id=\"services.summary\">\n"
                 + "<!--   -->\n"
                 + "</a>",
                 "<tr class=\"altColor\">\n"
@@ -784,6 +1005,31 @@
                 + "</tr>");
     }
 
+    void checkModuleSummary_html4() {
+        checkOutput("moduleA/module-summary.html", true,
+                "<!-- ============ MODULES SUMMARY =========== -->\n"
+                + "<a name=\"modules.summary\">\n"
+                + "<!--   -->\n"
+                + "</a>",
+                "<!-- ============ PACKAGES SUMMARY =========== -->\n"
+                + "<a name=\"packages.summary\">\n"
+                + "<!--   -->\n"
+                + "</a>");
+        checkOutput("moduleB/module-summary.html", true,
+                "<!-- ============ PACKAGES SUMMARY =========== -->\n"
+                + "<a name=\"packages.summary\">\n"
+                + "<!--   -->\n"
+                + "</a>",
+                "<!-- ============ PACKAGES SUMMARY =========== -->\n"
+                + "<a name=\"packages.summary\">\n"
+                + "<!--   -->\n"
+                + "</a>",
+                "<!-- ============ SERVICES SUMMARY =========== -->\n"
+                + "<a name=\"services.summary\">\n"
+                + "<!--   -->\n"
+                + "</a>");
+    }
+
     void checkAggregatorModuleSummary() {
         checkOutput("moduleT/module-summary.html", true,
                 "<div class=\"header\">\n"
@@ -814,6 +1060,14 @@
     void checkNegatedModuleSummary() {
         checkOutput("moduleA/module-summary.html", false,
                 "<!-- ============ SERVICES SUMMARY =========== -->\n"
+                + "<a id=\"services.summary\">\n"
+                + "<!--   -->\n"
+                + "</a>");
+    }
+
+    void checkNegatedModuleSummary_html4() {
+        checkOutput("moduleA/module-summary.html", false,
+                "<!-- ============ SERVICES SUMMARY =========== -->\n"
                 + "<a name=\"services.summary\">\n"
                 + "<!--   -->\n"
                 + "</a>");
@@ -922,7 +1176,7 @@
                 + "<td class=\"colLast\">\n"
                 + "<div class=\"block\">This is a test description for the moduletags module.<br>\n"
                 + " Type Link: <a href=\"moduletags/testpkgmdltags/TestClassInModuleTags.html\" title=\"class in testpkgmdltags\"><code>TestClassInModuleTags</code></a>.<br>\n"
-                + " Member Link: <a href=\"moduletags/testpkgmdltags/TestClassInModuleTags.html#testMethod-java.lang.String-\"><code>testMethod(String)</code></a>.<br>\n"
+                + " Member Link: <a href=\"moduletags/testpkgmdltags/TestClassInModuleTags.html#testMethod(java.lang.String)\"><code>testMethod(String)</code></a>.<br>\n"
                 + " Package Link: <a href=\"moduletags/testpkgmdltags/package-summary.html\"><code>testpkgmdltags</code></a>.<br></div>\n"
                 + "</td>");
         checkOutput("moduleA/module-summary.html", true,
@@ -937,14 +1191,14 @@
         checkOutput("moduletags/module-summary.html", true,
                 "<li><a href=\"#module.description\">Description</a>&nbsp;|&nbsp;<a href=\"#modules.summary\">Modules"
                 + "</a>&nbsp;|&nbsp;<a href=\"#packages.summary\">Packages</a>&nbsp;|&nbsp;Services</li>",
-                "<table class=\"requiresSummary\" summary=\"Indirect Requires table, listing modules, and an explanation\">\n"
+                "<table class=\"requiresSummary\">\n"
                 + "<caption><span>Indirect Requires</span><span class=\"tabEnd\">&nbsp;</span></caption>",
                 "<td class=\"colFirst\">transitive</td>\n"
                 + "<th class=\"colSecond\" scope=\"row\"><a href=\"../moduleB/module-summary.html\">moduleB</a></th>\n"
                 + "<td class=\"colLast\">\n"
                 + "<div class=\"block\">This is a test description for the moduleB module.</div>\n"
                 + "</td>",
-                "<table class=\"packagesSummary\" summary=\"Indirect Exports table, listing modules, and packages\">\n"
+                "<table class=\"packagesSummary\">\n"
                 + "<caption><span>Indirect Exports</span><span class=\"tabEnd\">&nbsp;</span></caption>",
                 "<td class=\"colFirst\">transitive static</td>\n"
                 + "<th class=\"colSecond\" scope=\"row\"><a href=\"../moduleA/module-summary.html\">moduleA</a></th>\n"
@@ -952,6 +1206,42 @@
                 + "<div class=\"block\">This is a test description for the moduleA module with a Search "
                 + "phrase <a id=\"searchphrase\" class=\"searchTagResult\">search phrase</a>.</div>\n"
                 + "</td>",
+                "<table class=\"requiresSummary\">\n"
+                + "<caption><span>Requires</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
+                + "<tr>\n"
+                + "<th class=\"colFirst\" scope=\"col\">Modifier</th>\n"
+                + "<th class=\"colSecond\" scope=\"col\">Module</th>\n"
+                + "<th class=\"colLast\" scope=\"col\">Description</th>",
+                "<table class=\"requiresSummary\">\n"
+                + "<caption><span>Indirect Requires</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
+                + "<tr>\n"
+                + "<th class=\"colFirst\" scope=\"col\">Modifier</th>\n"
+                + "<th class=\"colSecond\" scope=\"col\">Module</th>\n"
+                + "<th class=\"colLast\" scope=\"col\">Description</th>",
+                "<table class=\"packagesSummary\">\n"
+                + "<caption><span>Indirect Opens</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
+                + "<tr>\n"
+                + "<th class=\"colFirst\" scope=\"col\">From</th>\n"
+                + "<th class=\"colLast\" scope=\"col\">Packages</th>\n"
+                + "</tr>\n",
+                "<th class=\"colFirst\" scope=\"row\"><a href=\"../moduleB/module-summary.html\">moduleB</a></th>\n"
+                + "<td class=\"colLast\"><a href=\"../moduleB/testpkgmdlB/package-summary.html\">testpkgmdlB</a></td>\n");
+    }
+
+    void checkModuleModeCommon_html4() {
+        checkOutput("overview-summary.html", true,
+                "<th class=\"colFirst\" scope=\"row\"><a href=\"moduletags/module-summary.html\">moduletags</a></th>\n"
+                + "<td class=\"colLast\">\n"
+                + "<div class=\"block\">This is a test description for the moduletags module.<br>\n"
+                + " Type Link: <a href=\"moduletags/testpkgmdltags/TestClassInModuleTags.html\" title=\"class in testpkgmdltags\"><code>TestClassInModuleTags</code></a>.<br>\n"
+                + " Member Link: <a href=\"moduletags/testpkgmdltags/TestClassInModuleTags.html#testMethod-java.lang.String-\"><code>testMethod(String)</code></a>.<br>\n"
+                + " Package Link: <a href=\"moduletags/testpkgmdltags/package-summary.html\"><code>testpkgmdltags</code></a>.<br></div>\n"
+                + "</td>");
+        checkOutput("moduletags/module-summary.html", true,
+                "<table class=\"requiresSummary\" summary=\"Indirect Requires table, listing modules, and an explanation\">\n"
+                + "<caption><span>Indirect Requires</span><span class=\"tabEnd\">&nbsp;</span></caption>",
+                "<table class=\"packagesSummary\" summary=\"Indirect Exports table, listing modules, and packages\">\n"
+                + "<caption><span>Indirect Exports</span><span class=\"tabEnd\">&nbsp;</span></caption>",
                 "<table class=\"requiresSummary\" summary=\"Requires table, listing modules, and an explanation\">\n"
                 + "<caption><span>Requires</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
                 + "<tr>\n"
@@ -969,9 +1259,7 @@
                 + "<tr>\n"
                 + "<th class=\"colFirst\" scope=\"col\">From</th>\n"
                 + "<th class=\"colLast\" scope=\"col\">Packages</th>\n"
-                + "</tr>\n",
-                "<th class=\"colFirst\" scope=\"row\"><a href=\"../moduleB/module-summary.html\">moduleB</a></th>\n"
-                + "<td class=\"colLast\"><a href=\"../moduleB/testpkgmdlB/package-summary.html\">testpkgmdlB</a></td>\n");
+                + "</tr>\n");
     }
 
     void checkModuleModeApi(boolean found) {
@@ -983,7 +1271,7 @@
                 + "<a href=\"#packages.summary\">Packages</a>&nbsp;|&nbsp;<a href=\"#services.summary\">Services</a></li>",
                 "<th class=\"colFirst\" scope=\"row\"><a href=\"testpkgmdlB/package-summary.html\">testpkgmdlB</a></th>\n"
                 + "<td class=\"colLast\">&nbsp;</td>",
-                "<table class=\"packagesSummary\" summary=\"Packages table, listing packages, and an explanation\">\n"
+                "<table class=\"packagesSummary\">\n"
                 + "<caption><span>Opens</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
                 + "<tr>\n"
                 + "<th class=\"colFirst\" scope=\"col\">Package</th>\n"
@@ -1001,6 +1289,23 @@
                 + "<td class=\"colLast\">&nbsp;</td>");
     }
 
+    void checkModuleModeApi_html4(boolean found) {
+        checkOutput("moduleB/module-summary.html", found,
+                "<table class=\"packagesSummary\" summary=\"Packages table, listing packages, and an explanation\">\n"
+                + "<caption><span>Opens</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
+                + "<tr>\n"
+                + "<th class=\"colFirst\" scope=\"col\">Package</th>\n"
+                + "<th class=\"colLast\" scope=\"col\">Description</th>\n"
+                + "</tr>\n"
+                + "<tbody>\n"
+                + "<tr class=\"altColor\" id=\"i0\">\n"
+                + "<th class=\"colFirst\" scope=\"row\"><a href=\"testpkgmdlB/package-summary.html\">testpkgmdlB</a></th>\n"
+                + "<td class=\"colLast\">&nbsp;</td>\n"
+                + "</tr>\n"
+                + "</tbody>\n"
+                + "</table>");
+    }
+
     void checkModuleModeAll(boolean found) {
         checkOutput("moduleA/module-summary.html", found,
                 "<td class=\"colFirst\"> </td>\n"
@@ -1084,11 +1389,18 @@
 
     void checkModuleAnnotation() {
         checkOutput("moduleB/module-summary.html", true,
+                "<p><a href=\"testpkgmdlB/AnnotationType.html\" title=\"annotation in testpkgmdlB\">@AnnotationType</a>(<a href=\"testpkgmdlB/AnnotationType.html#optional()\">optional</a>=\"Module Annotation\",\n"
+                + "                <a href=\"testpkgmdlB/AnnotationType.html#required()\">required</a>=2016)\n"
+                + "</p>");
+        checkOutput("moduleB/module-summary.html", false,
+                "@AnnotationTypeUndocumented");
+    }
+
+    void checkModuleAnnotation_html4() {
+        checkOutput("moduleB/module-summary.html", true,
                 "<p><a href=\"testpkgmdlB/AnnotationType.html\" title=\"annotation in testpkgmdlB\">@AnnotationType</a>(<a href=\"testpkgmdlB/AnnotationType.html#optional--\">optional</a>=\"Module Annotation\",\n"
                 + "                <a href=\"testpkgmdlB/AnnotationType.html#required--\">required</a>=2016)\n"
                 + "</p>");
-        checkOutput("moduleB/module-summary.html", false,
-                "@AnnotationTypeUndocumented");
     }
 
     void checkOverviewFrame(boolean found) {
@@ -1101,15 +1413,45 @@
     void checkModuleSummaryNoExported(boolean found) {
         checkOutput("moduleNoExport/module-summary.html", found,
                 "<!-- ============ PACKAGES SUMMARY =========== -->\n"
-                + "<a name=\"packages.summary\">\n"
+                + "<a id=\"packages.summary\">\n"
                 + "<!--   -->\n"
                 + "</a>",
                 "<caption><span>Concealed</span><span class=\"tabEnd\">&nbsp;</span></caption>");
     }
 
+    void checkModuleSummaryNoExported_html4(boolean found) {
+        checkOutput("moduleNoExport/module-summary.html", found,
+                "<!-- ============ PACKAGES SUMMARY =========== -->\n"
+                + "<a name=\"packages.summary\">\n"
+                + "<!--   -->\n"
+                + "</a>");
+    }
+
     void checkGroupOption() {
         checkOutput("overview-summary.html", true,
                 "<div class=\"contentContainer\">\n"
+                + "<table class=\"overviewSummary\">\n"
+                + "<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Modules</span><span class=\"tabEnd\">&nbsp;"
+                + "</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:showGroups(1);\">"
+                + "Module Group A</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\">"
+                + "<span><a href=\"javascript:showGroups(2);\">Module Group B &amp; C</a></span><span class=\"tabEnd\">"
+                + "&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:showGroups(4);\">"
+                + "Other Modules</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>",
+                "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,
+                "<table class=\"overviewSummary\">\n"
+                + "<caption><span>Modules</span><span class=\"tabEnd\">&nbsp;</span></caption>",
+                "Java SE Modules");
+    }
+
+    void checkGroupOption_html4() {
+        checkOutput("overview-summary.html", true,
+                "<div class=\"contentContainer\">\n"
                 + "<table class=\"overviewSummary\" summary=\"Module Summary table, listing modules, and an explanation\">\n"
                 + "<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Modules</span><span class=\"tabEnd\">&nbsp;"
                 + "</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:showGroups(1);\">"
@@ -1159,7 +1501,7 @@
                 + "<div class=\"block\">The overview summary page header.</div>\n"
                 + "</div>\n"
                 + "<div class=\"contentContainer\">\n"
-                + "<table class=\"overviewSummary\" summary=\"Package Summary table, listing packages, and an explanation\">\n"
+                + "<table class=\"overviewSummary\">\n"
                 + "<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Packages</span><span class=\"tabEnd\">&nbsp;"
                 + "</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:showGroups(1);\">"
                 + "Package Group 0</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" "
@@ -1173,6 +1515,20 @@
                 + "var activeTableTab = \"activeTableTab\";");
     }
 
+    void checkUnnamedModuleGroupOption_html4() {
+        checkOutput("overview-summary.html", true,
+                "<div class=\"contentContainer\">\n"
+                + "<div class=\"block\">The overview summary page header.</div>\n"
+                + "</div>\n"
+                + "<div class=\"contentContainer\">\n"
+                + "<table class=\"overviewSummary\" summary=\"Package Summary table, listing packages, and an explanation\">\n"
+                + "<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Packages</span><span class=\"tabEnd\">&nbsp;"
+                + "</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:showGroups(1);\">"
+                + "Package Group 0</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" "
+                + "class=\"tableTab\"><span><a href=\"javascript:showGroups(2);\">Package Group 1</a></span>"
+                + "<span class=\"tabEnd\">&nbsp;</span></span></caption>");
+    }
+
     void checkGroupOptionPackageOrdering() {
         checkOutput("overview-summary.html", true,
                 "<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Packages</span><span "
@@ -1186,6 +1542,16 @@
     void checkGroupOptionSingleModule() {
         checkOutput("overview-summary.html", true,
                 "<div class=\"contentContainer\">\n"
+                + "<table class=\"overviewSummary\">\n"
+                + "<caption><span>Module Group B</span><span class=\"tabEnd\">&nbsp;</span></caption>");
+        checkOutput("overview-summary.html", false,
+                "<table class=\"overviewSummary\">\n"
+                + "<caption><span>Modules</span><span class=\"tabEnd\">&nbsp;</span></caption>");
+    }
+
+    void checkGroupOptionSingleModule_html4() {
+        checkOutput("overview-summary.html", true,
+                "<div class=\"contentContainer\">\n"
                 + "<table class=\"overviewSummary\" summary=\"Module Summary table, listing modules, and an explanation\">\n"
                 + "<caption><span>Module Group B</span><span class=\"tabEnd\">&nbsp;</span></caption>");
         checkOutput("overview-summary.html", false,