TestModules.java revision 4098:0e63023ff978
1/*
2 * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23
24/*
25 * @test
26 * @bug 8154119 8154262 8156077 8157987 8154261 8154817 8135291 8155995 8162363
27 *      8168766 8168688 8162674 8160196 8175799 8174974 8176778 8177562 8175218
28 * @summary Test modules support in javadoc.
29 * @author bpatel
30 * @library ../lib
31 * @modules jdk.javadoc/jdk.javadoc.internal.tool
32 * @build JavadocTester
33 * @run main TestModules
34 */
35public class TestModules extends JavadocTester {
36
37    public static void main(String... args) throws Exception {
38        TestModules tester = new TestModules();
39        tester.runTests();
40    }
41
42    /**
43     * Test generated module pages for HTML 4.
44     */
45    @Test
46    void testHtml4() {
47        javadoc("-d", "out", "-use",
48                "-overview", testSrc("overview.html"),
49                "--module-source-path", testSrc,
50                "--module", "moduleA,moduleB",
51                "testpkgmdlA", "testpkgmdlB");
52        checkExit(Exit.OK);
53        checkDescription(true);
54        checkNoDescription(false);
55        checkOverviewSummaryModules();
56        checkModuleLink();
57        checkModuleClickThroughLinks();
58        checkModuleClickThrough(true);
59        checkModuleFilesAndLinks(true);
60        checkModulesInSearch(true);
61        checkOverviewFrame(true);
62    }
63
64    /**
65     * Test generated module pages for HTML 5.
66     */
67    @Test
68    void testHtml5() {
69        javadoc("-d", "out-html5", "-html5", "-use",
70                "-overview", testSrc("overview.html"),
71                "--module-source-path", testSrc,
72                "--module", "moduleA,moduleB",
73                "testpkgmdlA", "testpkgmdlB");
74        checkExit(Exit.OK);
75        checkHtml5Description(true);
76        checkHtml5NoDescription(false);
77        checkHtml5OverviewSummaryModules();
78        checkModuleLink();
79        checkModuleClickThroughLinks();
80        checkModuleClickThrough(true);
81        checkModuleFilesAndLinks(true);
82        checkModulesInSearch(true);
83        checkOverviewFrame(true);
84    }
85
86    /**
87     * Test generated module pages for HTML 4 with -nocomment option.
88     */
89    @Test
90    void testHtml4NoComment() {
91        javadoc("-d", "out-nocomment", "-nocomment", "-use",
92                "-overview", testSrc("overview.html"),
93                "--module-source-path", testSrc,
94                "--module", "moduleA,moduleB",
95                "testpkgmdlA", "testpkgmdlB");
96        checkExit(Exit.OK);
97        checkDescription(false);
98        checkNoDescription(true);
99        checkModuleLink();
100        checkModuleFilesAndLinks(true);
101        checkOverviewFrame(true);
102    }
103
104    /**
105     * Test generated module pages for HTML 5 with -nocomment option.
106     */
107    @Test
108    void testHtml5NoComment() {
109        javadoc("-d", "out-html5-nocomment", "-nocomment", "-html5", "-use",
110                "-overview", testSrc("overview.html"),
111                "--module-source-path", testSrc,
112                "--module", "moduleA,moduleB",
113                "testpkgmdlA", "testpkgmdlB");
114        checkExit(Exit.OK);
115        checkHtml5Description(false);
116        checkHtml5NoDescription(true);
117        checkModuleLink();
118        checkModuleFilesAndLinks(true);
119        checkOverviewFrame(true);
120    }
121
122    /**
123     * Test generated pages, in an unnamed module, for HTML 4.
124     */
125    @Test
126    void testHtml4UnnamedModule() {
127        javadoc("-d", "out-nomodule", "-use",
128                "-overview", testSrc("overview.html"),
129                "-sourcepath", testSrc,
130                "testpkgnomodule", "testpkgnomodule1");
131        checkExit(Exit.OK);
132        checkOverviewSummaryPackages();
133        checkModuleClickThrough(false);
134        checkModuleFilesAndLinks(false);
135        checkModulesInSearch(false);
136        checkOverviewFrame(false);
137    }
138
139    /**
140     * Test generated pages, in an unnamed module, for HTML 5.
141     */
142    @Test
143    void testHtml5UnnamedModule() {
144        javadoc("-d", "out-html5-nomodule", "-html5", "-use",
145                "-overview", testSrc("overview.html"),
146                "-sourcepath", testSrc,
147                "testpkgnomodule", "testpkgnomodule1");
148        checkExit(Exit.OK);
149        checkHtml5OverviewSummaryPackages();
150        checkModuleFilesAndLinks(false);
151        checkModulesInSearch(false);
152        checkOverviewFrame(false);
153    }
154
155    /**
156     * Test generated module pages with javadoc tags.
157     */
158    @Test
159    void testJDTagsInModules() {
160        javadoc("-d", "out-mdltags", "-author", "-version",
161                "-tag", "regular:a:Regular Tag:",
162                "-tag", "moduletag:s:Module Tag:",
163                "--module-source-path", testSrc,
164                "--module", "moduletags,moduleB",
165                "testpkgmdltags", "testpkgmdlB");
166        checkExit(Exit.OK);
167        checkModuleTags();
168    }
169
170    /**
171     * Test generated module summary page.
172     */
173    @Test
174    void testModuleSummary() {
175        javadoc("-d", "out-moduleSummary", "-use",
176                "--module-source-path", testSrc,
177                "--module", "moduleA,moduleB",
178                "testpkgmdlA", "testpkgmdlB", "moduleB/testpkg2mdlB");
179        checkExit(Exit.OK);
180        checkModuleSummary();
181        checkNegatedModuleSummary();
182    }
183
184    /**
185     * Test generated module summary page of an aggregating module.
186     */
187    @Test
188    void testAggregatorModuleSummary() {
189        javadoc("-d", "out-aggregatorModuleSummary", "-use",
190                "--module-source-path", testSrc,
191                "--expand-requires", "transitive",
192                "--module", "moduleT");
193        checkExit(Exit.OK);
194        checkAggregatorModuleSummary();
195    }
196
197    /**
198     * Test generated module pages and pages with link to modules.
199     */
200    @Test
201    void testModuleFilesAndLinks() {
202        javadoc("-d", "out-modulelinks",
203                "--module-source-path", testSrc,
204                "--module", "moduleA,moduleB",
205                "testpkgmdlA", "testpkgmdlB");
206        checkExit(Exit.OK);
207        checkModuleFilesAndLinks(true);
208        checkOverviewFrame(true);
209    }
210
211    /**
212     * Test generated module pages for a deprecated module.
213     */
214    @Test
215    void testModuleDeprecation() {
216        javadoc("-d", "out-moduledepr",
217                "-tag", "regular:a:Regular Tag:",
218                "-tag", "moduletag:s:Module Tag:",
219                "--module-source-path", testSrc,
220                "--module", "moduleA,moduleB,moduletags",
221                "testpkgmdlA", "testpkgmdlB", "testpkgmdltags");
222        checkExit(Exit.OK);
223        checkModuleDeprecation(true);
224    }
225
226    /**
227     * Test annotations on modules.
228     */
229    @Test
230    void testModuleAnnotation() {
231        javadoc("-d", "out-moduleanno",
232                "--module-source-path", testSrc,
233                "--module", "moduleA,moduleB",
234                "testpkgmdlA", "testpkgmdlB");
235        checkExit(Exit.OK);
236        checkModuleAnnotation();
237    }
238
239    /**
240     * Test module summary pages in "api" mode.
241     */
242    @Test
243    void testApiMode() {
244        javadoc("-d", "out-api", "-use", "--show-module-contents=api", "-author", "-version",
245                "-tag", "regular:a:Regular Tag:",
246                "-tag", "moduletag:s:Module Tag:",
247                "--module-source-path", testSrc,
248                "--module", "moduleA,moduleB,moduleC,moduletags",
249                "testpkgmdlA", "moduleA/concealedpkgmdlA", "testpkgmdlB", "testpkg2mdlB", "testpkgmdlC", "testpkgmdltags");
250        checkExit(Exit.OK);
251        checkModuleModeCommon();
252        checkModuleModeApi(true);
253        checkModuleModeAll(false);
254    }
255
256    /**
257     * Test module summary pages in "all" mode.
258     */
259    @Test
260    void testAllMode() {
261        javadoc("-d", "out-all", "-use", "--show-module-contents=all", "-author", "-version",
262                "-tag", "regular:a:Regular Tag:",
263                "-tag", "moduletag:s:Module Tag:",
264                "--module-source-path", testSrc,
265                "--module", "moduleA,moduleB,moduleC,moduletags",
266                "testpkgmdlA", "moduleA/concealedpkgmdlA", "testpkgmdlB", "testpkg2mdlB", "testpkgmdlC", "testpkgmdltags");
267        checkExit(Exit.OK);
268        checkModuleModeCommon();
269        checkModuleModeApi(false);
270        checkModuleModeAll(true);
271    }
272
273    void checkDescription(boolean found) {
274        checkOutput("moduleA-summary.html", found,
275                "<!-- ============ MODULE DESCRIPTION =========== -->\n"
276                + "<a name=\"module.description\">\n"
277                + "<!--   -->\n"
278                + "</a>\n"
279                + "<div class=\"block\">This is a test description for the moduleA module. Search "
280                + "phrase <a id=\"searchphrase\" class=\"searchTagResult\">search phrase</a>.</div>");
281        checkOutput("moduleB-summary.html", found,
282                "<!-- ============ MODULE DESCRIPTION =========== -->\n"
283                + "<a name=\"module.description\">\n"
284                + "<!--   -->\n"
285                + "</a>\n"
286                + "<div class=\"block\">This is a test description for the moduleB module. Search "
287                + "word <a id=\"search_word\" class=\"searchTagResult\">search_word</a> with no description.</div>");
288        checkOutput("overview-summary.html", found,
289                "</script>\n"
290                + "<div class=\"contentContainer\">\n"
291                + "<div class=\"block\">The overview summary page header.</div>\n"
292                + "</div>\n"
293                + "<div class=\"contentContainer\">\n"
294                + "<table class=\"overviewSummary\" summary=\"Module Summary table, listing modules, and an explanation\">\n"
295                + "<caption><span>Modules</span><span class=\"tabEnd\">&nbsp;</span></caption>");
296        checkOutput("overview-summary.html", false,
297                "</table>\n"
298                + "</div>\n"
299                + "<div class=\"contentContainer\">\n"
300                + "<div class=\"block\">The overview summary page header.</div>\n"
301                + "</div>\n"
302                + "<div class=\"contentContainer\">\n"
303                + "<table class=\"overviewSummary\" summary=\"Module Summary table, listing modules, and an explanation\">\n"
304                + "<caption><span>Modules</span><span class=\"tabEnd\">&nbsp;</span></caption>");
305    }
306
307    void checkNoDescription(boolean found) {
308        checkOutput("moduleA-summary.html", found,
309                "<div class=\"contentContainer\">\n"
310                + "<ul class=\"blockList\">\n"
311                + "<li class=\"blockList\">\n"
312                + "<ul class=\"blockList\">\n"
313                + "<li class=\"blockList\">\n"
314                + "<!-- ============ PACKAGES SUMMARY =========== -->");
315        checkOutput("moduleB-summary.html", found,
316                "<div class=\"contentContainer\">\n"
317                + "<ul class=\"blockList\">\n"
318                + "<li class=\"blockList\">\n"
319                + "<ul class=\"blockList\">\n"
320                + "<li class=\"blockList\">\n"
321                + "<!-- ============ PACKAGES SUMMARY =========== -->");
322    }
323
324    void checkHtml5Description(boolean found) {
325        checkOutput("moduleA-summary.html", found,
326                "<section role=\"region\">\n"
327                + "<div class=\"deprecatedContent\"><span class=\"deprecatedLabel\">Deprecated, for removal:"
328                + " This API element is subject to removal in a future version.</span>\n"
329                + "<div class=\"block\"><span class=\"deprecationComment\">This module is deprecated.</span></div>\n"
330                + "</div>\n"
331                + "<!-- ============ MODULE DESCRIPTION =========== -->\n"
332                + "<a id=\"module.description\">\n"
333                + "<!--   -->\n"
334                + "</a>\n"
335                + "<div class=\"block\">This is a test description for the moduleA module. Search "
336                + "phrase <a id=\"searchphrase\" class=\"searchTagResult\">search phrase</a>.</div>");
337        checkOutput("moduleB-summary.html", found,
338                "<section role=\"region\">\n"
339                + "<!-- ============ MODULE DESCRIPTION =========== -->\n"
340                + "<a id=\"module.description\">\n"
341                + "<!--   -->\n"
342                + "</a>\n"
343                + "<div class=\"block\">This is a test description for the moduleB module. Search "
344                + "word <a id=\"search_word\" class=\"searchTagResult\">search_word</a> with no description.</div>");
345        checkOutput("overview-summary.html", found,
346                "</nav>\n"
347                + "</header>\n"
348                + "<main role=\"main\">\n"
349                + "<div class=\"contentContainer\">\n"
350                + "<div class=\"block\">The overview summary page header.</div>\n"
351                + "</div>\n"
352                + "<div class=\"contentContainer\">\n"
353                + "<table class=\"overviewSummary\">\n"
354                + "<caption><span>Modules</span><span class=\"tabEnd\">&nbsp;</span></caption>");
355        checkOutput("overview-summary.html", false,
356                "</table>\n"
357                + "</div>\n"
358                + "</main>\n"
359                + "<main role=\"main\">\n"
360                + "<div class=\"contentContainer\">\n"
361                + "<div class=\"block\">The overview summary page header.</div>\n"
362                + "</div>\n"
363                + "<div class=\"contentContainer\">\n"
364                + "<table class=\"overviewSummary\">\n"
365                + "<caption><span>Modules</span><span class=\"tabEnd\">&nbsp;</span></caption>");
366    }
367
368    void checkHtml5NoDescription(boolean found) {
369        checkOutput("moduleA-summary.html", found,
370                "<div class=\"contentContainer\">\n"
371                + "<ul class=\"blockList\">\n"
372                + "<li class=\"blockList\">\n"
373                + "<ul class=\"blockList\">\n"
374                + "<li class=\"blockList\">\n"
375                + "<!-- ============ PACKAGES SUMMARY =========== -->");
376        checkOutput("moduleB-summary.html", found,
377                "<div class=\"contentContainer\">\n"
378                + "<ul class=\"blockList\">\n"
379                + "<li class=\"blockList\">\n"
380                + "<ul class=\"blockList\">\n"
381                + "<li class=\"blockList\">\n"
382                + "<!-- ============ PACKAGES SUMMARY =========== -->");
383    }
384
385    void checkModuleLink() {
386        checkOutput("overview-summary.html", true,
387                "<li>Module</li>");
388        checkOutput("moduleA-summary.html", true,
389                "<li class=\"navBarCell1Rev\">Module</li>");
390        checkOutput("moduleB-summary.html", true,
391                "<li class=\"navBarCell1Rev\">Module</li>");
392        checkOutput("testpkgmdlA/class-use/TestClassInModuleA.html", true,
393                "<li><a href=\"../../moduleA-summary.html\">Module</a></li>");
394        checkOutput("testpkgmdlB/package-summary.html", true,
395                "<li><a href=\"../moduleB-summary.html\">Module</a></li>");
396        checkOutput("testpkgmdlB/TestClassInModuleB.html", true,
397                "<li><a href=\"../moduleB-summary.html\">Module</a></li>");
398        checkOutput("testpkgmdlB/class-use/TestClassInModuleB.html", true,
399                "<li><a href=\"../../moduleB-summary.html\">Module</a></li>");
400    }
401
402    void checkNoModuleLink() {
403        checkOutput("testpkgnomodule/package-summary.html", true,
404                "<ul class=\"navList\" title=\"Navigation\">\n"
405                + "<li><a href=\"../testpkgnomodule/package-summary.html\">Package</a></li>");
406        checkOutput("testpkgnomodule/TestClassNoModule.html", true,
407                "<ul class=\"navList\" title=\"Navigation\">\n"
408                + "<li><a href=\"../testpkgnomodule/package-summary.html\">Package</a></li>");
409        checkOutput("testpkgnomodule/class-use/TestClassNoModule.html", true,
410                "<ul class=\"navList\" title=\"Navigation\">\n"
411                + "<li><a href=\"../../testpkgnomodule/package-summary.html\">Package</a></li>");
412    }
413
414    void checkModuleTags() {
415        checkOutput("moduletags-summary.html", true,
416                "Type Link: <a href=\"testpkgmdltags/TestClassInModuleTags.html\" title=\"class in "
417                + "testpkgmdltags\"><code>TestClassInModuleTags</code></a>.",
418                "Member Link: <a href=\"testpkgmdltags/TestClassInModuleTags.html#"
419                + "testMethod-java.lang.String-\"><code>testMethod(String)</code></a>.",
420                "Package Link: <a href=\"testpkgmdltags/package-summary.html\"><code>testpkgmdltags</code></a>.",
421                "<dt><span class=\"simpleTagLabel\">Since:</span></dt>\n"
422                + "<dd>JDK 9</dd>",
423                "<dt><span class=\"seeLabel\">See Also:</span></dt>\n"
424                + "<dd>\"Test see tag\", \n"
425                + "<a href=\"testpkgmdltags/TestClassInModuleTags.html\" title=\"class in testpkgmdltags\"><code>"
426                + "TestClassInModuleTags</code></a></dd>",
427                "<dt><span class=\"simpleTagLabel\">Regular Tag:</span></dt>\n"
428                + "<dd>Just a regular simple tag.</dd>",
429                "<dt><span class=\"simpleTagLabel\">Module Tag:</span></dt>\n"
430                + "<dd>Just a simple module tag.</dd>",
431                "<dt><span class=\"simpleTagLabel\">Version:</span></dt>\n"
432                + "<dd>1.0</dd>",
433                "<dt><span class=\"simpleTagLabel\">Author:</span></dt>\n"
434                + "<dd>Bhavesh Patel</dd>");
435        checkOutput("testpkgmdltags/TestClassInModuleTags.html", false,
436                "<dt><span class=\"simpleTagLabel\">Module Tag:</span></dt>\n"
437                + "<dd>Just a simple module tag.</dd>");
438    }
439
440    void checkOverviewSummaryModules() {
441        checkOutput("overview-summary.html", true,
442                "<table class=\"overviewSummary\" summary=\"Module Summary table, listing modules, and an explanation\">\n"
443                + "<caption><span>Modules</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
444                + "<tr>\n"
445                + "<th class=\"colFirst\" scope=\"col\">Module</th>\n"
446                + "<th class=\"colLast\" scope=\"col\">Description</th>\n"
447                + "</tr>");
448        checkOutput("overview-summary.html", false,
449                "<table class=\"overviewSummary\" summary=\"Packages table, listing packages, and an explanation\">\n"
450                + "<caption><span>Packages</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
451                + "<tr>\n"
452                + "<th class=\"colFirst\" scope=\"col\">Package</th>\n"
453                + "<th class=\"colLast\" scope=\"col\">Description</th>\n"
454                + "</tr>");
455    }
456
457    void checkOverviewSummaryPackages() {
458        checkOutput("overview-summary.html", false,
459                "<table class=\"overviewSummary\" summary=\"Module Summary table, listing modules, and an explanation\">\n"
460                + "<caption><span>Modules</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
461                + "<tr>\n"
462                + "<th class=\"colFirst\" scope=\"col\">Module</th>\n"
463                + "<th class=\"colLast\" scope=\"col\">Description</th>\n"
464                + "</tr>",
465                "</table>\n"
466                + "</div>\n"
467                + "<div class=\"contentContainer\">\n"
468                + "<div class=\"block\">The overview summary page header.</div>\n"
469                + "</div>\n"
470                + "<div class=\"contentContainer\">\n"
471                + "<table class=\"overviewSummary\" summary=\"Packages table, listing packages, and an explanation\">\n"
472                + "<caption><span>Packages</span><span class=\"tabEnd\">&nbsp;</span></caption>");
473        checkOutput("overview-summary.html", true,
474                "<table class=\"overviewSummary\" summary=\"Packages table, listing packages, and an explanation\">\n"
475                + "<caption><span>Packages</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
476                + "<tr>\n"
477                + "<th class=\"colFirst\" scope=\"col\">Package</th>\n"
478                + "<th class=\"colLast\" scope=\"col\">Description</th>\n"
479                + "</tr>",
480                "</script>\n"
481                + "<div class=\"contentContainer\">\n"
482                + "<div class=\"block\">The overview summary page header.</div>\n"
483                + "</div>\n"
484                + "<div class=\"contentContainer\">\n"
485                + "<table class=\"overviewSummary\" summary=\"Packages table, listing packages, and an explanation\">\n"
486                + "<caption><span>Packages</span><span class=\"tabEnd\">&nbsp;</span></caption>");
487    }
488
489    void checkHtml5OverviewSummaryModules() {
490        checkOutput("overview-summary.html", true,
491                "<table class=\"overviewSummary\">\n"
492                + "<caption><span>Modules</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
493                + "<tr>\n"
494                + "<th class=\"colFirst\" scope=\"col\">Module</th>\n"
495                + "<th class=\"colLast\" scope=\"col\">Description</th>\n"
496                + "</tr>");
497        checkOutput("overview-summary.html", false,
498                "<table class=\"overviewSummary\">\n"
499                + "<caption><span>Packages</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
500                + "<tr>\n"
501                + "<th class=\"colFirst\" scope=\"col\">Package</th>\n"
502                + "<th class=\"colLast\" scope=\"col\">Description</th>\n"
503                + "</tr>");
504    }
505
506    void checkHtml5OverviewSummaryPackages() {
507        checkOutput("overview-summary.html", false,
508                "<table class=\"overviewSummary\">\n"
509                + "<caption><span>Modules</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
510                + "<tr>\n"
511                + "<th class=\"colFirst\" scope=\"col\">Module</th>\n"
512                + "<th class=\"colLast\" scope=\"col\">Description</th>\n"
513                + "</tr>",
514                "</table>\n"
515                + "</div>\n"
516                + "</main>\n"
517                + "<main role=\"main\">\n"
518                + "<div class=\"contentContainer\">\n"
519                + "<div class=\"block\">The overview summary page header.</div>\n"
520                + "</div>\n"
521                + "<div class=\"contentContainer\">\n"
522                + "<table class=\"overviewSummary\">\n"
523                + "<caption><span>Packages</span><span class=\"tabEnd\">&nbsp;</span></caption>");
524        checkOutput("overview-summary.html", true,
525                "<table class=\"overviewSummary\">\n"
526                + "<caption><span>Packages</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
527                + "<tr>\n"
528                + "<th class=\"colFirst\" scope=\"col\">Package</th>\n"
529                + "<th class=\"colLast\" scope=\"col\">Description</th>\n"
530                + "</tr>",
531                "</script>\n"
532                + "</nav>\n"
533                + "</header>\n"
534                + "<main role=\"main\">\n"
535                + "<div class=\"contentContainer\">\n"
536                + "<div class=\"block\">The overview summary page header.</div>\n"
537                + "</div>\n"
538                + "<div class=\"contentContainer\">\n"
539                + "<table class=\"overviewSummary\">\n"
540                + "<caption><span>Packages</span><span class=\"tabEnd\">&nbsp;</span></caption>");
541    }
542
543    void checkModuleSummary() {
544        checkOutput("moduleA-summary.html", true,
545                "<ul class=\"subNavList\">\n"
546                + "<li>Module:&nbsp;</li>\n"
547                + "<li><a href=\"#module.description\">Description</a>&nbsp;|&nbsp;<a "
548                + "href=\"#modules.summary\">Modules</a>&nbsp;|&nbsp;<a href=\"#packages.summary\">"
549                + "Packages</a>&nbsp;|&nbsp;Services</li>\n"
550                + "</ul>",
551                "<!-- ============ MODULES SUMMARY =========== -->\n"
552                + "<a name=\"modules.summary\">\n"
553                + "<!--   -->\n"
554                + "</a>",
555                "<tr class=\"altColor\" id=\"i0\">\n"
556                + "<th class=\"colFirst\" scope=\"row\"><a href=\"testpkgmdlA/package-summary.html\">testpkgmdlA</a></th>\n"
557                + "<td class=\"colLast\">&nbsp;</td>\n"
558                + "</tr>",
559                "<!-- ============ PACKAGES SUMMARY =========== -->\n"
560                + "<a name=\"packages.summary\">\n"
561                + "<!--   -->\n"
562                + "</a>",
563                "<tr class=\"altColor\">\n"
564                + "<td class=\"colFirst\">transitive</td>\n"
565                + "<th class=\"colSecond\" scope=\"row\"><a href=\"moduleB-summary.html\">moduleB</a></th>\n"
566                + "<td class=\"colLast\">\n"
567                + "<div class=\"block\">This is a test description for the moduleB module.</div>\n"
568                + "</td>\n"
569                + "</tr>");
570        checkOutput("moduleB-summary.html", true,
571                "<li><a href=\"#module.description\">Description</a>&nbsp;|&nbsp;Modules&nbsp;|&nbsp;"
572                + "<a href=\"#packages.summary\">Packages</a>&nbsp;|&nbsp;<a href=\"#services.summary\">"
573                + "Services</a></li>",
574                "<!-- ============ PACKAGES SUMMARY =========== -->\n"
575                + "<a name=\"packages.summary\">\n"
576                + "<!--   -->\n"
577                + "</a>",
578                "<tr class=\"altColor\" id=\"i0\">\n"
579                + "<th class=\"colFirst\" scope=\"row\"><a href=\"testpkgmdlB/package-summary.html\">testpkgmdlB</a></th>\n"
580                + "<td class=\"colLast\">&nbsp;</td>\n"
581                + "</tr>",
582                "<!-- ============ PACKAGES SUMMARY =========== -->\n"
583                + "<a name=\"packages.summary\">\n"
584                + "<!--   -->\n"
585                + "</a>",
586                "<!-- ============ SERVICES SUMMARY =========== -->\n"
587                + "<a name=\"services.summary\">\n"
588                + "<!--   -->\n"
589                + "</a>",
590                "<tr class=\"altColor\">\n"
591                + "<th class=\"colFirst\" scope=\"row\"><a href=\"testpkgmdlB/TestClassInModuleB.html\" title=\"class in testpkgmdlB\">TestClassInModuleB</a></th>\n"
592                + "<td class=\"colLast\">With a test description for uses.&nbsp;</td>\n"
593                + "</tr>",
594                "<tr class=\"altColor\">\n"
595                + "<th class=\"colFirst\" scope=\"row\"><a href=\"testpkg2mdlB/TestInterface2InModuleB.html\" title=\"interface in testpkg2mdlB\">TestInterface2InModuleB</a></th>\n"
596                + "<td class=\"colLast\">&nbsp;</td>\n"
597                + "</tr>",
598                "<caption><span>Opens</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
599                + "<tr>\n"
600                + "<th class=\"colFirst\" scope=\"col\">Package</th>\n"
601                + "<th class=\"colLast\" scope=\"col\">Description</th>\n"
602                + "</tr>",
603                "<caption><span>Uses</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
604                + "<tr>\n"
605                + "<th class=\"colFirst\" scope=\"col\">Type</th>\n"
606                + "<th class=\"colLast\" scope=\"col\">Description</th>\n"
607                + "</tr>",
608                "<caption><span>Provides</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
609                + "<tr>\n"
610                + "<th class=\"colFirst\" scope=\"col\">Type</th>\n"
611                + "<th class=\"colLast\" scope=\"col\">Description</th>\n"
612                + "</tr>");
613    }
614
615    void checkAggregatorModuleSummary() {
616        checkOutput("moduleT-summary.html", true,
617                "<div class=\"header\">\n"
618                + "<h1 title=\"Module\" class=\"title\">Module&nbsp;moduleT</h1>\n"
619                + "</div>",
620                "<div class=\"block\">This is a test description for the moduleT module. "
621                + "Search phrase <a id=\"searchphrase\" class=\"searchTagResult\">search phrase</a>. "
622                + "Make sure there are no exported packages.</div>",
623                "<tbody>\n"
624                + "<tr class=\"altColor\">\n"
625                + "<td class=\"colFirst\">transitive</td>\n"
626                + "<th class=\"colSecond\" scope=\"row\"><a href=\"moduleA-summary.html\">moduleA</a></th>\n"
627                + "<td class=\"colLast\">\n"
628                + "<div class=\"block\">This is a test description for the moduleA module.</div>\n"
629                + "</td>\n"
630                + "</tr>\n"
631                + "<tr class=\"rowColor\">\n"
632                + "<td class=\"colFirst\">transitive</td>\n"
633                + "<th class=\"colSecond\" scope=\"row\"><a href=\"moduleB-summary.html\">moduleB</a></th>\n"
634                + "<td class=\"colLast\">\n"
635                + "<div class=\"block\">This is a test description for the moduleB module.</div>\n"
636                + "</td>\n"
637                + "</tr>\n"
638                + "</tbody>");
639    }
640
641    void checkNegatedModuleSummary() {
642        checkOutput("moduleA-summary.html", false,
643                "<!-- ============ SERVICES SUMMARY =========== -->\n"
644                + "<a name=\"services.summary\">\n"
645                + "<!--   -->\n"
646                + "</a>");
647    }
648
649    void checkModuleClickThroughLinks() {
650        checkOutput("module-overview-frame.html", true,
651                "<li><a href=\"moduleA-frame.html\" target=\"packageListFrame\" "
652                + "onclick=\"updateModuleFrame('moduleA-type-frame.html','moduleA-summary.html');"
653                + "\">moduleA</a></li>",
654                "<li><a href=\"moduleB-frame.html\" target=\"packageListFrame\" "
655                + "onclick=\"updateModuleFrame('moduleB-type-frame.html','moduleB-summary.html');"
656                + "\">moduleB</a></li>");
657        checkOutput("script.js", true,
658                "function updateModuleFrame(pFrame, cFrame)\n"
659                + "{\n"
660                + "    top.packageFrame.location = pFrame;\n"
661                + "    top.classFrame.location = cFrame;\n"
662                + "}");
663    }
664
665    void checkModuleClickThrough(boolean found) {
666        checkFiles(found,
667                "moduleA-type-frame.html",
668                "moduleB-type-frame.html");
669    }
670
671    void checkModuleFilesAndLinks(boolean found) {
672        checkFileAndOutput("testpkgmdlA/package-summary.html", found,
673                "<li><a href=\"../moduleA-summary.html\">Module</a></li>",
674                "<div class=\"subTitle\"><span class=\"moduleLabelInPackage\">Module</span>&nbsp;"
675                + "<a href=\"../moduleA-summary.html\">moduleA</a></div>");
676        checkFileAndOutput("testpkgmdlA/TestClassInModuleA.html", found,
677                "<li><a href=\"../moduleA-summary.html\">Module</a></li>",
678                "<div class=\"subTitle\"><span class=\"moduleLabelInType\">Module</span>&nbsp;"
679                + "<a href=\"../moduleA-summary.html\">moduleA</a></div>");
680        checkFileAndOutput("testpkgmdlB/AnnotationType.html", found,
681                "<div class=\"subTitle\"><span class=\"moduleLabelInType\">Module</span>&nbsp;"
682                + "<a href=\"../moduleB-summary.html\">moduleB</a></div>",
683                "<div class=\"subTitle\"><span class=\"packageLabelInType\">"
684                + "Package</span>&nbsp;<a href=\"../testpkgmdlB/package-summary.html\">testpkgmdlB</a></div>");
685        checkFiles(found,
686                "moduleA-frame.html",
687                "moduleA-summary.html",
688                "module-overview-frame.html");
689    }
690
691    void checkModulesInSearch(boolean found) {
692        checkOutput("index-all.html", found,
693                "<dl>\n"
694                + "<dt><a href=\"moduleA-summary.html\">moduleA</a> - module moduleA</dt>\n"
695                + "<dd>\n"
696                + "<div class=\"block\">This is a test description for the moduleA module.</div>\n"
697                + "</dd>\n"
698                + "<dt><a href=\"moduleB-summary.html\">moduleB</a> - module moduleB</dt>\n"
699                + "<dd>\n"
700                + "<div class=\"block\">This is a test description for the moduleB module.</div>\n"
701                + "</dd>\n"
702                + "</dl>",
703                "<dl>\n"
704                + "<dt><span class=\"searchTagLink\"><a href=\"moduleA-summary.html#searchphrase\">"
705                + "search phrase</a></span> - Search tag in moduleA</dt>\n"
706                + "<dd>with description</dd>\n"
707                + "<dt><span class=\"searchTagLink\"><a href=\"moduleB-summary.html#search_word\">"
708                + "search_word</a></span> - Search tag in moduleB</dt>\n"
709                + "<dd>&nbsp;</dd>\n"
710                + "</dl>");
711    }
712
713    void checkModuleModeCommon() {
714        checkOutput("overview-summary.html", true,
715                "<th class=\"colFirst\" scope=\"row\"><a href=\"moduleA-summary.html\">moduleA</a></th>\n"
716                + "<td class=\"colLast\">\n"
717                + "<div class=\"block\">This is a test description for the moduleA module.</div>\n"
718                + "</td>",
719                "<th class=\"colFirst\" scope=\"row\"><a href=\"moduleB-summary.html\">moduleB</a></th>\n"
720                + "<td class=\"colLast\">\n"
721                + "<div class=\"block\">This is a test description for the moduleB module.</div>\n"
722                + "</td>",
723                "<th class=\"colFirst\" scope=\"row\"><a href=\"moduletags-summary.html\">moduletags</a></th>\n"
724                + "<td class=\"colLast\">\n"
725                + "<div class=\"block\">This is a test description for the moduleA module.<br>\n"
726                + " Type Link: <a href=\"testpkgmdltags/TestClassInModuleTags.html\" title=\"class in testpkgmdltags\"><code>TestClassInModuleTags</code></a>.<br>\n"
727                + " Member Link: <a href=\"testpkgmdltags/TestClassInModuleTags.html#testMethod-java.lang.String-\"><code>testMethod(String)</code></a>.<br>\n"
728                + " Package Link: <a href=\"testpkgmdltags/package-summary.html\"><code>testpkgmdltags</code></a>.<br></div>\n"
729                + "</td>");
730        checkOutput("moduleA-summary.html", true,
731                "<li><a href=\"#module.description\">Description</a>&nbsp;|&nbsp;<a href=\"#modules.summary\">"
732                + "Modules</a>&nbsp;|&nbsp;<a href=\"#packages.summary\">Packages</a>&nbsp;|&nbsp;Services</li>",
733                "<table class=\"packagesSummary\" summary=\"Indirect Exports table, listing modules, and packages\">\n"
734                + "<caption><span>Indirect Exports</span><span class=\"tabEnd\">&nbsp;</span></caption>",
735                "<table class=\"packagesSummary\" summary=\"Indirect Opens table, listing modules, and packages\">\n"
736                + "<caption><span>Indirect Opens</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
737                + "<tr>\n"
738                + "<th class=\"colFirst\" scope=\"col\">From</th>\n"
739                + "<th class=\"colLast\" scope=\"col\">Packages</th>\n"
740                + "</tr>\n",
741                "<th class=\"colFirst\" scope=\"row\"><a href=\"moduleB-summary.html\">moduleB</a></th>\n"
742                + "<td class=\"colLast\"><a href=\"testpkgmdlB/package-summary.html\">testpkgmdlB</a></td>\n");
743        checkOutput("moduleB-summary.html", true,
744                "<th class=\"colFirst\" scope=\"row\"><a href=\"testpkgmdlB/TestClassInModuleB.html\" title=\"class in testpkgmdlB\">TestClassInModuleB</a></th>\n"
745                + "<td class=\"colLast\">With a test description for uses.&nbsp;</td>");
746        checkOutput("moduletags-summary.html", true,
747                "<li><a href=\"#module.description\">Description</a>&nbsp;|&nbsp;<a href=\"#modules.summary\">Modules"
748                + "</a>&nbsp;|&nbsp;<a href=\"#packages.summary\">Packages</a>&nbsp;|&nbsp;Services</li>",
749                "<table class=\"requiresSummary\" summary=\"Indirect Requires table, listing modules, and an explanation\">\n"
750                + "<caption><span>Indirect Requires</span><span class=\"tabEnd\">&nbsp;</span></caption>",
751                "<td class=\"colFirst\">transitive</td>\n"
752                + "<th class=\"colSecond\" scope=\"row\"><a href=\"moduleB-summary.html\">moduleB</a></th>\n"
753                + "<td class=\"colLast\">\n"
754                + "<div class=\"block\">This is a test description for the moduleB module.</div>\n"
755                + "</td>",
756                "<table class=\"packagesSummary\" summary=\"Indirect Exports table, listing modules, and packages\">\n"
757                + "<caption><span>Indirect Exports</span><span class=\"tabEnd\">&nbsp;</span></caption>",
758                "<td class=\"colFirst\">transitive static</td>\n"
759                + "<th class=\"colSecond\" scope=\"row\"><a href=\"moduleA-summary.html\">moduleA</a></th>\n"
760                + "<td class=\"colLast\">\n"
761                + "<div class=\"block\">This is a test description for the moduleA module.</div>\n"
762                + "</td>",
763                "<table class=\"requiresSummary\" summary=\"Requires table, listing modules, and an explanation\">\n"
764                + "<caption><span>Requires</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
765                + "<tr>\n"
766                + "<th class=\"colFirst\" scope=\"col\">Modifier</th>\n"
767                + "<th class=\"colSecond\" scope=\"col\">Module</th>\n"
768                + "<th class=\"colLast\" scope=\"col\">Description</th>",
769                "<table class=\"requiresSummary\" summary=\"Indirect Requires table, listing modules, and an explanation\">\n"
770                + "<caption><span>Indirect Requires</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
771                + "<tr>\n"
772                + "<th class=\"colFirst\" scope=\"col\">Modifier</th>\n"
773                + "<th class=\"colSecond\" scope=\"col\">Module</th>\n"
774                + "<th class=\"colLast\" scope=\"col\">Description</th>",
775                "<table class=\"packagesSummary\" summary=\"Indirect Opens table, listing modules, and packages\">\n"
776                + "<caption><span>Indirect Opens</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
777                + "<tr>\n"
778                + "<th class=\"colFirst\" scope=\"col\">From</th>\n"
779                + "<th class=\"colLast\" scope=\"col\">Packages</th>\n"
780                + "</tr>\n",
781                "<th class=\"colFirst\" scope=\"row\"><a href=\"moduleB-summary.html\">moduleB</a></th>\n"
782                + "<td class=\"colLast\"><a href=\"testpkgmdlB/package-summary.html\">testpkgmdlB</a></td>\n");
783    }
784
785    void checkModuleModeApi(boolean found) {
786        checkOutput("moduleA-summary.html", found,
787                "<th class=\"colFirst\" scope=\"row\"><a href=\"testpkgmdlA/package-summary.html\">testpkgmdlA</a></th>\n"
788                + "<td class=\"colLast\">&nbsp;</td>");
789        checkOutput("moduleB-summary.html", found,
790                "<li><a href=\"#module.description\">Description</a>&nbsp;|&nbsp;Modules&nbsp;|&nbsp;"
791                + "<a href=\"#packages.summary\">Packages</a>&nbsp;|&nbsp;<a href=\"#services.summary\">Services</a></li>",
792                "<th class=\"colFirst\" scope=\"row\"><a href=\"testpkgmdlB/package-summary.html\">testpkgmdlB</a></th>\n"
793                + "<td class=\"colLast\">&nbsp;</td>",
794                "<table class=\"packagesSummary\" summary=\"Packages table, listing packages, and an explanation\">\n"
795                + "<caption><span>Opens</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
796                + "<tr>\n"
797                + "<th class=\"colFirst\" scope=\"col\">Package</th>\n"
798                + "<th class=\"colLast\" scope=\"col\">Description</th>\n"
799                + "</tr>\n"
800                + "<tbody>\n"
801                + "<tr class=\"altColor\" id=\"i0\">\n"
802                + "<th class=\"colFirst\" scope=\"row\"><a href=\"testpkgmdlB/package-summary.html\">testpkgmdlB</a></th>\n"
803                + "<td class=\"colLast\">&nbsp;</td>\n"
804                + "</tr>\n"
805                + "</tbody>\n"
806                + "</table>");
807        checkOutput("moduletags-summary.html", found,
808                "<th class=\"colFirst\" scope=\"row\"><a href=\"testpkgmdltags/package-summary.html\">testpkgmdltags</a></th>\n"
809                + "<td class=\"colLast\">&nbsp;</td>");
810    }
811
812    void checkModuleModeAll(boolean found) {
813        checkOutput("moduleA-summary.html", found,
814                "<td class=\"colFirst\"> </td>\n"
815                + "<th class=\"colSecond\" scope=\"row\">java.base</th>\n"
816                + "<td class=\"colLast\">&nbsp;</td>",
817                "<td class=\"colFirst\"> </td>\n"
818                + "<th class=\"colSecond\" scope=\"row\"><a href=\"moduleC-summary.html\">moduleC</a></th>\n"
819                + "<td class=\"colLast\">\n"
820                + "<div class=\"block\">This is a test description for the moduleC module.</div>\n"
821                + "</td>",
822                "<th class=\"colFirst\" scope=\"row\"><a href=\"moduleC-summary.html\">moduleC</a></th>\n"
823                + "<td class=\"colLast\"><a href=\"testpkgmdlC/package-summary.html\">testpkgmdlC</a></td>",
824                "<th class=\"colFirst\" scope=\"row\"><a href=\"testpkgmdlA/package-summary.html\">testpkgmdlA</a></th>\n"
825                + "<td class=\"colSecond\">All Modules</td>\n"
826                + "<td class=\"colLast\">&nbsp;</td>",
827                "<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Packages</span><span class=\"tabEnd\">&nbsp;</span></span>"
828                + "<span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:showPkgs(1);\">Exports</a></span>"
829                + "<span class=\"tabEnd\">&nbsp;</span></span><span id=\"t3\" class=\"tableTab\"><span><a href=\"javascript:showPkgs(4);\">"
830                + "Concealed</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>",
831                "<th class=\"colFirst\" scope=\"row\"><a href=\"concealedpkgmdlA/package-summary.html\">concealedpkgmdlA</a></th>\n"
832                + "<td class=\"colSecond\">None</td>\n"
833                + "<td class=\"colLast\">&nbsp;</td>");
834        checkOutput("moduleB-summary.html", found,
835                "<li><a href=\"#module.description\">Description</a>&nbsp;|&nbsp;<a href=\"#modules.summary\">"
836                + "Modules</a>&nbsp;|&nbsp;<a href=\"#packages.summary\">Packages</a>&nbsp;|&nbsp;<a href=\"#services.summary\">Services</a></li>",
837                "<th class=\"colFirst\" scope=\"row\"><a href=\"testpkgmdlB/package-summary.html\">testpkgmdlB</a></th>\n"
838                + "<td class=\"colSecond\">All Modules</td>\n"
839                + "<td class=\"colLast\">&nbsp;</td>",
840                "<td class=\"colFirst\"> </td>\n"
841                + "<th class=\"colSecond\" scope=\"row\">java.base</th>\n"
842                + "<td class=\"colLast\">&nbsp;</td>",
843                "<th class=\"colFirst\" scope=\"row\"><a href=\"testpkgmdlB/TestClass2InModuleB.html\" title=\"class in testpkgmdlB\">TestClass2InModuleB</a></th>\n"
844                + "<td class=\"colLast\">&nbsp;</td>",
845                "<th class=\"colFirst\" scope=\"row\"><a href=\"testpkg2mdlB/TestInterface2InModuleB.html\" title=\"interface in testpkg2mdlB\">TestInterface2InModuleB</a></th>\n"
846                + "<td class=\"colLast\">&nbsp;<br>(<span class=\"implementationLabel\">Implementation(s):</span>&nbsp;<a href=\"testpkgmdlB/TestClass2InModuleB.html\" "
847                + "title=\"class in testpkgmdlB\">TestClass2InModuleB</a>)</td>",
848                "<th class=\"colFirst\" scope=\"row\"><a href=\"testpkg2mdlB/TestInterfaceInModuleB.html\" title=\"interface in testpkg2mdlB\">TestInterfaceInModuleB</a></th>\n"
849                + "<td class=\"colLast\">&nbsp;<br>(<span class=\"implementationLabel\">Implementation(s):</span>&nbsp;<a href=\"testpkgmdlB/TestClassInModuleB.html\" "
850                + "title=\"class in testpkgmdlB\">TestClassInModuleB</a>)</td>",
851                "<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Packages</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span>"
852                + "<a href=\"javascript:showPkgs(1);\">Exports</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span>"
853                + "<a href=\"javascript:showPkgs(2);\">Opens</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>");
854        checkOutput("moduleC-summary.html", found,
855                "<caption><span>Exports</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
856                + "<tr>\n"
857                + "<th class=\"colFirst\" scope=\"col\">Package</th>\n"
858                + "<th class=\"colSecond\" scope=\"col\">Module</th>\n"
859                + "<th class=\"colLast\" scope=\"col\">Description</th>\n"
860                + "</tr>");
861        checkOutput("moduletags-summary.html", found,
862                "<th class=\"colFirst\" scope=\"row\"><a href=\"testpkgmdltags/package-summary.html\">testpkgmdltags</a></th>\n"
863                + "<td class=\"colSecond\">All Modules</td>\n"
864                + "<td class=\"colLast\">&nbsp;</td>");
865    }
866
867    void checkModuleDeprecation(boolean found) {
868        checkOutput("moduleA-summary.html", found,
869                "<div class=\"deprecatedContent\"><span class=\"deprecatedLabel\">Deprecated, for removal:"
870                + " This API element is subject to removal in a future version.</span>\n"
871                + "<div class=\"block\"><span class=\"deprecationComment\">This module is deprecated.</span></div>\n"
872                + "</div>");
873        checkOutput("deprecated-list.html", found,
874                "<ul>\n"
875                + "<li><a href=\"#forRemoval\">Deprecated For Removal</a></li>\n"
876                + "<li><a href=\"#module\">Deprecated Modules</a></li>\n"
877                + "</ul>",
878                "<tr class=\"altColor\">\n"
879                + "<th class=\"colFirst\" scope=\"row\"><a href=\"moduleA-summary.html\">moduleA</a></th>\n"
880                + "<td class=\"colLast\">\n"
881                + "<div class=\"block\"><span class=\"deprecationComment\">This module is deprecated.</span></div>\n"
882                + "</td>\n"
883                + "</tr>");
884        checkOutput("moduleB-summary.html", !found,
885                "<div class=\"deprecatedContent\"><span class=\"deprecatedLabel\">Deprecated.</span>\n"
886                + "<div class=\"block\"><span class=\"deprecationComment\">This module is deprecated using just the javadoc tag.</span></div>");
887        checkOutput("moduletags-summary.html", found,
888                "<p>@Deprecated\n"
889                + "</p>",
890                "<div class=\"deprecatedContent\"><span class=\"deprecatedLabel\">Deprecated.</span></div>");
891    }
892
893    void checkModuleAnnotation() {
894        checkOutput("moduleB-summary.html", true,
895                "<p><a href=\"testpkgmdlB/AnnotationType.html\" title=\"annotation in testpkgmdlB\">@AnnotationType</a>(<a href=\"testpkgmdlB/AnnotationType.html#optional--\">optional</a>=\"Module Annotation\",\n"
896                + "                <a href=\"testpkgmdlB/AnnotationType.html#required--\">required</a>=2016)\n"
897                + "</p>");
898        checkOutput("moduleB-summary.html", false,
899                "@AnnotationTypeUndocumented");
900    }
901
902    void checkOverviewFrame(boolean found) {
903        checkOutput("index.html", !found,
904                "<iframe src=\"overview-frame.html\" name=\"packageListFrame\" title=\"All Packages\"></iframe>");
905        checkOutput("index.html", found,
906                "<iframe src=\"module-overview-frame.html\" name=\"packageListFrame\" title=\"All Modules\"></iframe>");
907    }
908}
909