1 /*
   2  * Copyright (c) 2015, 2019, 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 8072945 8081854 8141492 8148985 8150188 4649116 8173707 8151743 8169819 8183037 8182765 8196202
  27  *      8202624 8210047 8184205 8221871 8223733 8223378
  28  * @summary Test the version of HTML generated by the javadoc tool.
  29  * @library ../../lib
  30  * @modules jdk.javadoc/jdk.javadoc.internal.tool
  31  * @build javadoc.tester.*
  32  * @run main TestHtmlVersion
  33  */
  34 
  35 import javadoc.tester.JavadocTester;
  36 
  37 public class TestHtmlVersion extends JavadocTester {
  38 
  39     public static void main(String... args) throws Exception {
  40         TestHtmlVersion tester = new TestHtmlVersion();
  41         tester.runTests();
  42     }
  43 
  44     @Test
  45     public void test1() {
  46         javadoc("-d", "out-1",
  47                 "-private",
  48                 "-linksource",
  49                 "-sourcepath", testSrc,
  50                 "-use",
  51                 "pkg", "pkg1", "pkg2", "pkg3");
  52         checkExit(Exit.OK);
  53 
  54         html5Output();
  55         html5NegatedOutput();
  56     }
  57 
  58     @Test
  59     public void test4() {
  60         javadoc("-d", "out-4",
  61                 "-private",
  62                 "-linksource",
  63                 "-sourcepath", testSrc,
  64                 "-use",
  65                 "pkg3");
  66         checkExit(Exit.OK);
  67     }
  68 
  69     void html5Output() {
  70         // Test for overview-summary page
  71         checkOutput("index.html", true,
  72                 "<!DOCTYPE HTML>",
  73                 "<meta name=\"dc.created\"",
  74                 "<ul id=\"navbar.top.firstrow\" class=\"navList\" title=\"Navigation\">\n",
  75                 "<div class=\"overviewSummary\">\n"
  76                 + "<table>\n"
  77                 + "<caption>",
  78                 "<header role=\"banner\" class=\"flexHeader\">\n"
  79                 + "<nav role=\"navigation\">\n"
  80                 + "<!-- ========= START OF TOP NAVBAR ======= -->",
  81                 "<footer role=\"contentinfo\">\n"
  82                 + "<nav role=\"navigation\">\n"
  83                 + "<!-- ======= START OF BOTTOM NAVBAR ====== -->");
  84 
  85         // Test for package-summary page
  86         checkOutput("pkg/package-summary.html", true,
  87                 "<!DOCTYPE HTML>",
  88                 "<meta name=\"dc.created\"",
  89                 "<ul id=\"navbar.top.firstrow\" class=\"navList\" title=\"Navigation\">\n",
  90                 "<div class=\"typeSummary\">\n<table>",
  91                 "<header role=\"banner\" class=\"flexHeader\">\n"
  92                 + "<nav role=\"navigation\">\n"
  93                 + "<!-- ========= START OF TOP NAVBAR ======= -->",
  94                 "<main role=\"main\">\n"
  95                 + "<div class=\"header\">",
  96                 "<section class=\"packageDescription\" id=\"package.description\">\n"
  97                 + "<div class=\"block\">Test package.</div>",
  98                 "<footer role=\"contentinfo\">\n"
  99                 + "<nav role=\"navigation\">\n"
 100                 + "<!-- ======= START OF BOTTOM NAVBAR ====== -->");
 101         // No package description
 102         checkOutput("pkg1/package-summary.html", true,
 103                 "<div class=\"contentContainer\">\n"
 104                 + "<section class=\"summary\">\n"
 105                 + "<ul class=\"blockList\">\n"
 106                 + "<li class=\"blockList\">\n"
 107                 + "<div class=\"typeSummary\">\n<table>\n"
 108                 + "<caption><span>Class Summary</span><span class=\"tabEnd\">&nbsp;</span></caption>");
 109 
 110         // Test for package-tree page
 111         checkOutput("pkg/package-tree.html", true,
 112                 "<!DOCTYPE HTML>",
 113                 "<meta name=\"dc.created\"",
 114                 "<ul id=\"navbar.top.firstrow\" class=\"navList\" title=\"Navigation\">\n",
 115                 "<li class=\"circle\">",
 116                 "<header role=\"banner\" class=\"flexHeader\">\n"
 117                 + "<nav role=\"navigation\">\n"
 118                 + "<!-- ========= START OF TOP NAVBAR ======= -->",
 119                 "<main role=\"main\">\n"
 120                 + "<div class=\"header\">",
 121                 "<section class=\"hierarchy\">\n"
 122                 + "<h2 title=\"Class Hierarchy\">Class Hierarchy</h2>",
 123                 "<section class=\"hierarchy\">\n"
 124                 + "<h2 title=\"Interface Hierarchy\">Interface Hierarchy</h2>",
 125                 "<section class=\"hierarchy\">\n"
 126                 + "<h2 title=\"Annotation Type Hierarchy\">Annotation Type Hierarchy</h2>",
 127                 "<section class=\"hierarchy\">\n"
 128                 + "<h2 title=\"Enum Hierarchy\">Enum Hierarchy</h2>",
 129                 "<footer role=\"contentinfo\">\n"
 130                 + "<nav role=\"navigation\">\n"
 131                 + "<!-- ======= START OF BOTTOM NAVBAR ====== -->");
 132 
 133         // Test for package-use page
 134         checkOutput("pkg1/package-use.html", true,
 135                 "<!DOCTYPE HTML>",
 136                 "<meta name=\"dc.created\"",
 137                 "<ul id=\"navbar.top.firstrow\" class=\"navList\" title=\"Navigation\">\n",
 138                 "<div class=\"useSummary\">\n<table>",
 139                 "<header role=\"banner\" class=\"flexHeader\">\n"
 140                 + "<nav role=\"navigation\">\n"
 141                 + "<!-- ========= START OF TOP NAVBAR ======= -->",
 142                 "<main role=\"main\">\n"
 143                 + "<div class=\"header\">",
 144                 "<footer role=\"contentinfo\">\n"
 145                 + "<nav role=\"navigation\">\n"
 146                 + "<!-- ======= START OF BOTTOM NAVBAR ====== -->");
 147 
 148         // Test for constant-values page
 149         checkOutput("constant-values.html", true,
 150                 "<!DOCTYPE HTML>",
 151                 "<meta name=\"dc.created\"",
 152                 "<ul id=\"navbar.top.firstrow\" class=\"navList\" title=\"Navigation\">\n",
 153                 "<div class=\"constantsSummary\">\n<table>",
 154                 "<header role=\"banner\" class=\"flexHeader\">\n"
 155                 + "<nav role=\"navigation\">\n"
 156                 + "<!-- ========= START OF TOP NAVBAR ======= -->",
 157                 "<main role=\"main\">\n"
 158                 + "<div class=\"header\">",
 159                 "<section class=\"packages\">\n"
 160                 + "<h2 title=\"Contents\">Contents</h2>\n",
 161                 "<section class=\"constantsSummary\" id=\"pkg\">\n"
 162                 + "<h2 title=\"pkg\">pkg.*</h2>\n",
 163                 "<footer role=\"contentinfo\">\n"
 164                 + "<nav role=\"navigation\">\n"
 165                 + "<!-- ======= START OF BOTTOM NAVBAR ====== -->");
 166 
 167         // Test for deprecated-list page
 168         checkOutput("deprecated-list.html", true,
 169                 "<!DOCTYPE HTML>",
 170                 "<meta name=\"dc.created\"",
 171                 "<ul id=\"navbar.top.firstrow\" class=\"navList\" title=\"Navigation\">\n",
 172                 "<div class=\"deprecatedSummary\" id=\"class\">\n<table>",
 173                 "<header role=\"banner\" class=\"flexHeader\">\n"
 174                 + "<nav role=\"navigation\">\n"
 175                 + "<!-- ========= START OF TOP NAVBAR ======= -->",
 176                 "<main role=\"main\">\n"
 177                 + "<div class=\"header\">",
 178                 "<footer role=\"contentinfo\">\n"
 179                 + "<nav role=\"navigation\">\n"
 180                 + "<!-- ======= START OF BOTTOM NAVBAR ====== -->");
 181 
 182         // Test for serialized-form page
 183         checkOutput("serialized-form.html", true,
 184                 "<!DOCTYPE HTML>",
 185                 "<meta name=\"dc.created\"",
 186                 "<ul id=\"navbar.top.firstrow\" class=\"navList\" title=\"Navigation\">\n",
 187                 "<header role=\"banner\" class=\"flexHeader\">\n"
 188                 + "<nav role=\"navigation\">\n"
 189                 + "<!-- ========= START OF TOP NAVBAR ======= -->",
 190                 "<main role=\"main\">\n"
 191                 + "<div class=\"header\">",
 192                 "<section class=\"serializedPackageContainer\">\n"
 193                 + "<h2 title=\"Package\">Package&nbsp;pkg</h2>\n",
 194                 "<footer role=\"contentinfo\">\n"
 195                 + "<nav role=\"navigation\">\n"
 196                 + "<!-- ======= START OF BOTTOM NAVBAR ====== -->");
 197 
 198         // Test for overview-tree page
 199         checkOutput("overview-tree.html", true,
 200                 "<!DOCTYPE HTML>",
 201                 "<meta name=\"dc.created\"",
 202                 "<ul id=\"navbar.top.firstrow\" class=\"navList\" title=\"Navigation\">\n",
 203                 "<li class=\"circle\">",
 204                 "<header role=\"banner\" class=\"flexHeader\">\n"
 205                 + "<nav role=\"navigation\">\n"
 206                 + "<!-- ========= START OF TOP NAVBAR ======= -->",
 207                 "<main role=\"main\">\n"
 208                 + "<div class=\"header\">",
 209                 "<section class=\"hierarchy\">\n"
 210                 + "<h2 title=\"Class Hierarchy\">Class Hierarchy</h2>\n",
 211                 "<section class=\"hierarchy\">\n"
 212                 + "<h2 title=\"Interface Hierarchy\">Interface Hierarchy</h2>\n",
 213                 "<section class=\"hierarchy\">\n"
 214                 + "<h2 title=\"Annotation Type Hierarchy\">Annotation Type Hierarchy</h2>\n",
 215                 "<section class=\"hierarchy\">\n"
 216                 + "<h2 title=\"Enum Hierarchy\">Enum Hierarchy</h2>\n",
 217                 "<footer role=\"contentinfo\">\n"
 218                 + "<nav role=\"navigation\">\n"
 219                 + "<!-- ======= START OF BOTTOM NAVBAR ====== -->");
 220 
 221         // Test for index-all page
 222         checkOutput("index-all.html", true,
 223                 "<!DOCTYPE HTML>",
 224                 "<meta name=\"dc.created\"",
 225                 "<ul id=\"navbar.top.firstrow\" class=\"navList\" title=\"Navigation\">\n",
 226                 "<header role=\"banner\" class=\"flexHeader\">\n"
 227                 + "<nav role=\"navigation\">\n"
 228                 + "<!-- ========= START OF TOP NAVBAR ======= -->",
 229                 "</header>\n"
 230                 + "<div class=\"flexContent\">\n"
 231                 + "<main role=\"main\">",
 232                 "<footer role=\"contentinfo\">\n"
 233                 + "<nav role=\"navigation\">\n"
 234                 + "<!-- ======= START OF BOTTOM NAVBAR ====== -->");
 235 
 236         // Test for src-html page
 237         checkOutput("src-html/pkg/AnotherClass.html", true,
 238                 "<!DOCTYPE HTML>",
 239                 "<main role=\"main\">\n"
 240                 + "<div class=\"sourceContainer\">");
 241 
 242         // Test for help-doc page
 243         checkOutput("help-doc.html", true,
 244                 "<!DOCTYPE HTML>",
 245                 "<meta name=\"dc.created\"",
 246                 "<ul id=\"navbar.top.firstrow\" class=\"navList\" title=\"Navigation\">\n",
 247                 "<header role=\"banner\" class=\"flexHeader\">\n"
 248                 + "<nav role=\"navigation\">\n"
 249                 + "<!-- ========= START OF TOP NAVBAR ======= -->",
 250                 "<main role=\"main\">\n"
 251                 + "<div class=\"header\">",
 252                 "<section class=\"helpSection\">\n"
 253                 + "<h2>Overview</h2>\n",
 254                 "<section class=\"helpSection\">\n"
 255                 + "<h2>Package</h2>\n",
 256                 "<section class=\"helpSection\">\n"
 257                 + "<h2>Class or Interface</h2>\n",
 258                 "<footer role=\"contentinfo\">\n"
 259                 + "<nav role=\"navigation\">\n"
 260                 + "<!-- ======= START OF BOTTOM NAVBAR ====== -->");
 261 
 262         // Test for a regular class page and members (nested class, field, constructore and method)
 263         checkOutput("pkg/AnotherClass.html", true,
 264                 "<!DOCTYPE HTML>",
 265                 "<meta name=\"dc.created\"",
 266                 "<ul id=\"navbar.top.firstrow\" class=\"navList\" title=\"Navigation\">\n",
 267                 "<header role=\"banner\" class=\"flexHeader\">\n"
 268                 + "<nav role=\"navigation\">\n"
 269                 + "<!-- ========= START OF TOP NAVBAR ======= -->",
 270                 "<main role=\"main\">\n"
 271                 + "<!-- ======== START OF CLASS DATA ======== -->\n"
 272                 + "<div class=\"header\">",
 273                 "<section class=\"nestedClassSummary\" id=\"nested.class.summary\">\n"
 274                 + "<h2>Nested Class Summary</h2>\n"
 275                 + "<div class=\"memberSummary\">\n<table>",
 276                 "<section class=\"fieldSummary\" id=\"field.summary\">\n"
 277                 + "<h2>Field Summary</h2>\n"
 278                 + "<div class=\"memberSummary\">\n<table>",
 279                 "<section class=\"constructorSummary\" id=\"constructor.summary\">\n"
 280                 + "<h2>Constructor Summary</h2>\n"
 281                 + "<div class=\"memberSummary\">\n<table>",
 282                 "<section class=\"methodSummary\" id=\"method.summary\">\n"
 283                 + "<h2>Method Summary</h2>",
 284                 "<section class=\"fieldDetails\" id=\"field.detail\">\n"
 285                 + "<h2>Field Details</h2>\n",
 286                 "<section class=\"constructorDetails\" id=\"constructor.detail\">\n"
 287                 + "<h2>Constructor Details</h2>\n",
 288                 "<section class=\"methodDetails\" id=\"method.detail\">\n"
 289                 + "<h2>Method Details</h2>\n",
 290                 "<footer role=\"contentinfo\">\n"
 291                 + "<nav role=\"navigation\">\n"
 292                 + "<!-- ======= START OF BOTTOM NAVBAR ====== -->");
 293 
 294         // Test for enum page
 295         checkOutput("pkg/AnotherClass.ModalExclusionType.html", true,
 296                 "<!DOCTYPE HTML>",
 297                 "<meta name=\"dc.created\"",
 298                 "<ul id=\"navbar.top.firstrow\" class=\"navList\" title=\"Navigation\">\n",
 299                 "<header role=\"banner\" class=\"flexHeader\">\n"
 300                 + "<nav role=\"navigation\">\n"
 301                 + "<!-- ========= START OF TOP NAVBAR ======= -->",
 302                 "<main role=\"main\">\n"
 303                 + "<!-- ======== START OF CLASS DATA ======== -->\n"
 304                 + "<div class=\"header\">",
 305                 "<section class=\"constantsSummary\" id=\"enum.constant.summary\">\n"
 306                 + "<h2>Enum Constant Summary</h2>\n"
 307                 + "<div class=\"memberSummary\">\n",
 308                 "<table aria-labelledby=\"t0\">\n",
 309                 "<section class=\"methodSummary\" id=\"method.summary\">\n"
 310                 + "<h2>Method Summary</h2>\n"
 311                 + "<div class=\"memberSummary\">\n",
 312                 "<table aria-labelledby=\"t0\">",
 313                 "<section class=\"constantDetails\" id=\"enum.constant.detail\">\n"
 314                 + "<h2>Enum Constant Details</h2>\n",
 315                 "<section class=\"methodDetails\" id=\"method.detail\">\n"
 316                 + "<h2>Method Details</h2>\n",
 317                 "<footer role=\"contentinfo\">\n"
 318                 + "<nav role=\"navigation\">\n"
 319                 + "<!-- ======= START OF BOTTOM NAVBAR ====== -->");
 320 
 321         // Test for interface page
 322         checkOutput("pkg2/Interface.html", true,
 323                 "<!DOCTYPE HTML>",
 324                 "<meta name=\"dc.created\"",
 325                 "<ul id=\"navbar.top.firstrow\" class=\"navList\" title=\"Navigation\">\n",
 326                 "<header role=\"banner\" class=\"flexHeader\">\n"
 327                 + "<nav role=\"navigation\">\n"
 328                 + "<!-- ========= START OF TOP NAVBAR ======= -->",
 329                 "<main role=\"main\">\n"
 330                 + "<!-- ======== START OF CLASS DATA ======== -->\n"
 331                 + "<div class=\"header\">",
 332                 "<section class=\"methodSummary\" id=\"method.summary\">\n"
 333                 + "<h2>Method Summary</h2>\n"
 334                 + "<div class=\"memberSummary\">\n",
 335                 "<table aria-labelledby=\"t0\">\n",
 336                 "<section class=\"methodDetails\" id=\"method.detail\">\n"
 337                 + "<h2>Method Details</h2>\n",
 338                 "<footer role=\"contentinfo\">\n"
 339                 + "<nav role=\"navigation\">\n"
 340                 + "<!-- ======= START OF BOTTOM NAVBAR ====== -->");
 341 
 342         // Test for error page
 343         checkOutput("pkg/TestError.html", true,
 344                 "<!DOCTYPE HTML>",
 345                 "<meta name=\"dc.created\"",
 346                 "<ul id=\"navbar.top.firstrow\" class=\"navList\" title=\"Navigation\">\n",
 347                 "<header role=\"banner\" class=\"flexHeader\">\n"
 348                 + "<nav role=\"navigation\">\n"
 349                 + "<!-- ========= START OF TOP NAVBAR ======= -->",
 350                 "<main role=\"main\">\n"
 351                 + "<!-- ======== START OF CLASS DATA ======== -->\n"
 352                 + "<div class=\"header\">",
 353                 "<section class=\"constructorSummary\" id=\"constructor.summary\">\n"
 354                 + "<h2>Constructor Summary</h2>",
 355                 "<section class=\"constructorDetails\" id=\"constructor.detail\">\n"
 356                 + "<h2>Constructor Details</h2>\n",
 357                 "<footer role=\"contentinfo\">\n"
 358                 + "<nav role=\"navigation\">\n"
 359                 + "<!-- ======= START OF BOTTOM NAVBAR ====== -->");
 360 
 361         // Test for exception page
 362         checkOutput("pkg/TestException.html", true,
 363                 "<!DOCTYPE HTML>",
 364                 "<meta name=\"dc.created\"",
 365                 "<ul id=\"navbar.top.firstrow\" class=\"navList\" title=\"Navigation\">\n",
 366                 "<header role=\"banner\" class=\"flexHeader\">\n"
 367                 + "<nav role=\"navigation\">\n"
 368                 + "<!-- ========= START OF TOP NAVBAR ======= -->",
 369                 "<main role=\"main\">\n"
 370                 + "<!-- ======== START OF CLASS DATA ======== -->\n"
 371                 + "<div class=\"header\">",
 372                 "<section class=\"constructorSummary\" id=\"constructor.summary\">\n"
 373                 + "<h2>Constructor Summary</h2>",
 374                 "<section class=\"constructorDetails\" id=\"constructor.detail\">\n"
 375                 + "<h2>Constructor Details</h2>\n",
 376                 "<footer role=\"contentinfo\">\n"
 377                 + "<nav role=\"navigation\">\n"
 378                 + "<!-- ======= START OF BOTTOM NAVBAR ====== -->");
 379 
 380         // Test for annotation page
 381         checkOutput("pkg2/TestAnnotationType.html", true,
 382                 "<!DOCTYPE HTML>",
 383                 "<meta name=\"dc.created\"",
 384                 "<ul id=\"navbar.top.firstrow\" class=\"navList\" title=\"Navigation\">\n",
 385                 "<header role=\"banner\" class=\"flexHeader\">\n"
 386                 + "<nav role=\"navigation\">\n"
 387                 + "<!-- ========= START OF TOP NAVBAR ======= -->",
 388                 "<main role=\"main\">\n"
 389                 + "<!-- ======== START OF CLASS DATA ======== -->\n"
 390                 + "<div class=\"header\">",
 391                 "<section class=\"memberSummary\" id=\"annotation.type.required.element.summary\">\n"
 392                 + "<h2>Required Element Summary</h2>\n"
 393                 + "<div class=\"memberSummary\">\n<table>",
 394                 "<section class=\"memberSummary\" id=\"annotation.type.optional.element.summary\">\n"
 395                 + "<h2>Optional Element Summary</h2>\n"
 396                 + "<div class=\"memberSummary\">\n<table>",
 397                 "<section class=\"details\" id=\"annotation.type.element.detail\">\n"
 398                 + "<ul class=\"blockList\">\n"
 399                 + "<!-- ============ ANNOTATION TYPE MEMBER DETAIL =========== -->\n"
 400                 + "<li class=\"blockList\">\n"
 401                 + "<section class=\"memberDetails\">\n"
 402                 + "<h2>Element Details</h2>\n",
 403                 "<footer role=\"contentinfo\">\n"
 404                 + "<nav role=\"navigation\">\n"
 405                 + "<!-- ======= START OF BOTTOM NAVBAR ====== -->");
 406 
 407         // Test for class use page
 408         checkOutput("pkg1/class-use/RegClass.html", true,
 409                 "<!DOCTYPE HTML>",
 410                 "<meta name=\"dc.created\"",
 411                 "<ul id=\"navbar.top.firstrow\" class=\"navList\" title=\"Navigation\">\n",
 412                 "<header role=\"banner\" class=\"flexHeader\">\n"
 413                 + "<nav role=\"navigation\">\n"
 414                 + "<!-- ========= START OF TOP NAVBAR ======= -->",
 415                 "<main role=\"main\">\n"
 416                 + "<div class=\"header\">",
 417                 "<div class=\"useSummary\">\n<table>",
 418                 "<section class=\"detail\" id=\"pkg\">\n"
 419                 + "<h2>Uses of <a href=\"../RegClass.html\" title=\"class in pkg1\">RegClass</a> in <a href=\"../../pkg/package-summary.html\">pkg</a></h2>\n"
 420                 + "<div class=\"useSummary\">\n<table>",
 421                 "<footer role=\"contentinfo\">\n"
 422                 + "<nav role=\"navigation\">\n"
 423                 + "<!-- ======= START OF BOTTOM NAVBAR ====== -->");
 424     }
 425 
 426     void html5NegatedOutput() {
 427         // Negated test for overview-summary page
 428         checkOutput("overview-summary.html", false,
 429                 "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">",
 430                 "<meta name=\"date\"",
 431                 "<a name=\"navbar.top.firstrow\">\n"
 432                 + "<!--   -->\n"
 433                 + "</a>",
 434                 "<table summary=\"Package Summary table, listing packages, and an explanation\">\n"
 435                 + "<caption>",
 436                 "</noscript>\n"
 437                 + "<!-- ========= START OF TOP NAVBAR ======= -->");
 438 
 439         // Negated test for package-summary page
 440         checkOutput("pkg/package-summary.html", false,
 441                 "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">",
 442                 "<meta name=\"date\"",
 443                 "<a name=\"navbar.top.firstrow\">\n"
 444                 + "<!--   -->\n"
 445                 + "</a>",
 446                 "<section>\n"
 447                 + "<h2 title=\"PackagAnotherClass.ModalExclusionType.htmle pkg Description\">Package pkg Description</h2>\n",
 448                 "<div class=\"typeSummary\">\n<table summary=\"Interface Summary table, listing interfaces, and an explanation\">",
 449                 "<div class=\"typeSummary\">\n<table summary=\"Class Summary table, listing classes, and an explanation\">",
 450                 "<div class=\"typeSummary\">\n<table summary=\"Enum Summary table, listing enums, and an explanation\">",
 451                 "<div class=\"typeSummary\">\n<table summary=\"Exception Summary table, listing exceptions, and an explanation\">",
 452                 "<div class=\"typeSummary\">\n<table summary=\"Error Summary table, listing errors, and an explanation\">",
 453                 "<div class=\"typeSummary\">\n<table summary=\"Annotation Types Summary table, listing annotation types, and an explanation\">");
 454 
 455         // Negated test for package-tree page
 456         checkOutput("pkg/package-tree.html", false,
 457                 "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">",
 458                 "<meta name=\"date\"",
 459                 "<a name=\"navbar.top.firstrow\">\n"
 460                 + "<!--   -->\n"
 461                 + "</a>");
 462 
 463         // Negated test for package-use page
 464         checkOutput("pkg1/package-use.html", false,
 465                 "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">",
 466                 "<meta name=\"date\"",
 467                 "<a name=\"navbar.top.firstrow\">\n"
 468                 + "<!--   -->\n"
 469                 + "</a>",
 470                 "<div class=\"useSummary\">\n"
 471                 + "<table summary=\"Use table, listing packages, and an explanation\">");
 472 
 473         // Negated test for constant-values page
 474         checkOutput("constant-values.html", false,
 475                 "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">",
 476                 "<meta name=\"date\"",
 477                 "<a name=\"navbar.top.firstrow\">\n"
 478                 + "<!--   -->\n"
 479                 + "</a>",
 480                 "<!-- ========= END OF TOP NAVBAR ========= -->\n"
 481                 + "</div>\n"
 482                 + "<div class=\"header\">",
 483                 "<div class=\"constantsSummary\">\n"
 484                 + "<table summary=\"Constant Field Values table, listing constant fields, and values\">");
 485 
 486         // Negated test for deprecated-list page
 487         checkOutput("deprecated-list.html", false,
 488                 "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">",
 489                 "<meta name=\"date\"",
 490                 "<a name=\"navbar.top.firstrow\">\n"
 491                 + "<!--   -->\n"
 492                 + "</a>",
 493                 "<!-- ========= END OF TOP NAVBAR ========= -->\n"
 494                 + "</div>\n"
 495                 + "<div class=\"header\">\n"
 496                 + "<h1 title=\"Deprecated API\" class=\"title\">Deprecated API</h1>\n"
 497                 + "<h2 title=\"Contents\">Contents</h2>",
 498                 "<div class=\"deprecatedSummary\">\n<table summary=\"Classes table, listing classes, and an explanation\">",
 499                 "<div class=\"deprecatedSummary\">\n<table summary=\"Enums table, listing enums, and an explanation\">",
 500                 "<div class=\"deprecatedSummary\">\n<table summary=\"Exceptions table, listing exceptions, and an explanation\">",
 501                 "<div class=\"deprecatedSummary\">\n<table summary=\"Errors table, listing errors, and an explanation\">",
 502                 "<div class=\"deprecatedSummary\">\n<table summary=\"Annotation Types table, listing annotation types, and an explanation\">",
 503                 "<div class=\"deprecatedSummary\">\n<table summary=\"Fields table, listing fields, and an explanation\">",
 504                 "<div class=\"deprecatedSummary\">\n<table summary=\"Methods table, listing methods, and an explanation\">",
 505                 "<div class=\"deprecatedSummary\">\n<table summary=\"Constructors table, listing constructors, and an explanation\">",
 506                 "<div class=\"deprecatedSummary\">\n<table summary=\"Enum Constants table, listing enum constants, and an explanation\">",
 507                 "<div class=\"deprecatedSummary\">\n<table summary=\"Annotation Type Elements table, listing annotation type elements, and an explanation\">");
 508 
 509         // Negated test for serialized-form page
 510         checkOutput("serialized-form.html", false,
 511                 "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">",
 512                 "<meta name=\"date\"",
 513                 "<a name=\"navbar.top.firstrow\">\n"
 514                 + "<!--   -->\n"
 515                 + "</a>",
 516                 "<!-- ========= END OF TOP NAVBAR ========= -->\n"
 517                 + "</div>\n"
 518                 + "<div class=\"header\">",
 519                 "<li class=\"blockList\">\n"
 520                 + "<h2 title=\"Package\">Package&nbsp;pkg</h2>");
 521 
 522         // Negated test for overview-tree page
 523         checkOutput("overview-tree.html", false,
 524                 "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">",
 525                 "<meta name=\"date\"",
 526                 "<a name=\"navbar.top.firstrow\">\n"
 527                 + "<!--   -->\n"
 528                 + "</a>",
 529                 "<!-- ========= END OF TOP NAVBAR ========= -->\n"
 530                 + "</div>\n"
 531                 + "<div class=\"header\">",
 532                 "<div class=\"contentContainer\">\n"
 533                 + "<h2 title=\"Class Hierarchy\">Class Hierarchy</h2>",
 534                 "</ul>\n"
 535                 + "<h2 title=\"Interface Hierarchy\">Interface Hierarchy</h2>",
 536                 "</ul>\n"
 537                 + "<h2 title=\"Enum Hierarchy\">Enum Hierarchy</h2>");
 538 
 539         // Negated test for index-all page
 540         checkOutput("index-all.html", false,
 541                 "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">",
 542                 "<meta name=\"date\"",
 543                 "<a name=\"navbar.top.firstrow\">\n"
 544                 + "<!--   -->\n"
 545                 + "</a>",
 546                 "<!-- ========= END OF TOP NAVBAR ========= -->\n"
 547                 + "</div>\n"
 548                 + "<div class=\"contentContainer\">");
 549 
 550         // Negated test for src-html page
 551         checkOutput("src-html/pkg/AnotherClass.html", false,
 552                 "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">",
 553                 "<body>\n"
 554                 + "<div class=\"sourceContainer\">");
 555 
 556         // Negated test for help-doc page
 557         checkOutput("help-doc.html", false,
 558                 "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">",
 559                 "<meta name=\"date\"",
 560                 "<a name=\"navbar.top.firstrow\">\n"
 561                 + "<!--   -->\n"
 562                 + "</a>",
 563                 "<!-- ========= END OF TOP NAVBAR ========= -->\n"
 564                 + "</div>\n"
 565                 + "<div class=\"header\">",
 566                 "<ul class=\"blockList\">\n"
 567                 + "<li class=\"blockList\">\n"
 568                 + "<h2>Overview</h2>",
 569                 "<li class=\"blockList\">\n"
 570                 + "<h2>Package</h2>",
 571                 "<li class=\"blockList\">\n"
 572                 + "<h2>Class/Interface</h2>");
 573 
 574         // Negated test for a regular class page and members (nested class, field, constructore and method)
 575         checkOutput("pkg/AnotherClass.html", false,
 576                 "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">",
 577                 "<meta name=\"date\"",
 578                 "<a name=\"navbar.top.firstrow\">\n"
 579                 + "<!--   -->\n"
 580                 + "</a>",
 581                 "<!-- ======== NESTED CLASS SUMMARY ======== -->\n"
 582                 + "<ul class=\"blockList\">\n"
 583                 + "<li class=\"blockList\"><a name=\"nested.class.summary\">\n"
 584                 + "<!--   -->\n"
 585                 + "</a>\n"
 586                 + "<h2>Nested Class Summary</h2>\n"
 587                 + "<div class=\"memberSummary\">\n"
 588                 + "<table summary=\"Nested Class Summary table, listing nested classes, and an explanation\">",
 589                 "<!-- =========== FIELD SUMMARY =========== -->\n"
 590                 + "<ul class=\"blockList\">\n"
 591                 + "<li class=\"blockList\"><a name=\"field.summary\">\n"
 592                 + "<!--   -->\n"
 593                 + "</a>\n"
 594                 + "<h2>Field Summary</h2>\n"
 595                 + "<div class=\"memberSummary\">\n"
 596                 + "<table summary=\"Field Summary table, listing fields, and an explanation\">",
 597                 "<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n"
 598                 + "<ul class=\"blockList\">\n"
 599                 + "<li class=\"blockList\"><a name=\"constructor.summary\">\n"
 600                 + "<!--   -->\n"
 601                 + "</a>\n"
 602                 + "<h2>Constructor Summary</h2>\n"
 603                 + "<div class=\"memberSummary\">\n"
 604                 + "<table summary=\"Constructor Summary table, listing constructors, and an explanation\">",
 605                 "<!-- ========== METHOD SUMMARY =========== -->\n"
 606                 + "<ul class=\"blockList\">\n"
 607                 + "<li class=\"blockList\"><a name=\"method.summary\">\n"
 608                 + "<!--   -->\n"
 609                 + "</a>\n"
 610                 + "<h2>Method Summary</h2>\n"
 611                 + "<div class=\"memberSummary\">\n"
 612                 + "<table summary=\"Method Summary table, listing methods, and an explanation\">",
 613                 "<!-- ============ FIELD DETAIL =========== -->\n"
 614                 + "<ul class=\"blockList\">\n"
 615                 + "<li class=\"blockList\"><a name=\"field.detail\">\n"
 616                 + "<!--   -->\n"
 617                 + "</a>\n"
 618                 + "<h2>Field Details</h2>",
 619                 "<!-- ========= CONSTRUCTOR DETAIL ======== -->\n"
 620                 + "<ul class=\"blockList\">\n"
 621                 + "<li class=\"blockList\"><a name=\"constructor.detail\">\n"
 622                 + "<!--   -->\n"
 623                 + "</a>\n"
 624                 + "<h2>Constructor Details</h2>",
 625                 "<!-- ============ METHOD DETAIL ========== -->\n"
 626                 + "<ul class=\"blockList\">\n"
 627                 + "<li class=\"blockList\"><a name=\"method.detail\">\n"
 628                 + "<!--   -->\n"
 629                 + "</a>\n"
 630                 + "<h2>Method Details</h2>");
 631 
 632         // Negated test for enum page
 633         checkOutput("pkg/AnotherClass.ModalExclusionType.html", false,
 634                 "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">",
 635                 "<meta name=\"date\"",
 636                 "<a name=\"navbar.top.firstrow\">\n"
 637                 + "<!--   -->\n"
 638                 + "</a>",
 639                 "<!-- =========== ENUM CONSTANT SUMMARY =========== -->\n"
 640                 + "<ul class=\"blockList\">\n"
 641                 + "<li class=\"blockList\"><a name=\"enum.constant.summary\">\n"
 642                 + "<!--   -->\n"
 643                 + "</a>\n"
 644                 + "<h2>Enum Constant Summary</h2>\n"
 645                 + "<div class=\"memberSummary\">\n"
 646                 + "<table summary=\"Enum Constant Summary table, listing enum constants, and an explanation\">",
 647                 "<!-- ========== METHOD SUMMARY =========== -->\n"
 648                 + "<ul class=\"blockList\">\n"
 649                 + "<li class=\"blockList\"><a name=\"method.summary\">\n"
 650                 + "<!--   -->\n"
 651                 + "</a>\n"
 652                 + "<h2>Method Summary</h2>\n"
 653                 + "<div class=\"memberSummary\">\n"
 654                 + "<table summary=\"Method Summary table, listing methods, and an explanation\">",
 655                 "<!-- ============ ENUM CONSTANT DETAIL =========== -->\n"
 656                 + "<ul class=\"blockList\">\n"
 657                 + "<li class=\"blockList\"><a name=\"enum.constant.detail\">\n"
 658                 + "<!--   -->\n"
 659                 + "</a>\n"
 660                 + "<h2>Enum Constant Details</h2>",
 661                 "<!-- ============ METHOD DETAIL ========== -->\n"
 662                 + "<ul class=\"blockList\">\n"
 663                 + "<li class=\"blockList\"><a name=\"method.detail\">\n"
 664                 + "<!--   -->\n"
 665                 + "</a>\n"
 666                 + "<h2>Method Details</h2>");
 667 
 668         // Negated test for interface page
 669         checkOutput("pkg2/Interface.html", false,
 670                 "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">",
 671                 "<meta name=\"date\"",
 672                 "<a name=\"navbar.top.firstrow\">\n"
 673                 + "<!--   -->\n"
 674                 + "</a>",
 675                 "<!-- ========== METHOD SUMMARY =========== -->\n"
 676                 + "<ul class=\"blockList\">\n"
 677                 + "<li class=\"blockList\"><a name=\"method.summary\">\n"
 678                 + "<!--   -->\n"
 679                 + "</a>\n"
 680                 + "<h2>Method Summary</h2>\n"
 681                 + "<div class=\"memberSummary\">\n"
 682                 + "<table summary=\"Method Summary table, listing methods, and an explanation\">",
 683                 "<!-- ============ METHOD DETAIL ========== -->\n"
 684                 + "<ul class=\"blockList\">\n"
 685                 + "<li class=\"blockList\"><a name=\"method.detail\">\n"
 686                 + "<!--   -->\n"
 687                 + "</a>\n"
 688                 + "<h2>Method Details</h2>");
 689 
 690         // Negated test for error page
 691         checkOutput("pkg/TestError.html", false,
 692                 "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">",
 693                 "<meta name=\"date\"",
 694                 "<a name=\"navbar.top.firstrow\">\n"
 695                 + "<!--   -->\n"
 696                 + "</a>",
 697                 "<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n"
 698                 + "<ul class=\"blockList\">\n"
 699                 + "<li class=\"blockList\"><a name=\"constructor.summary\">\n"
 700                 + "<!--   -->\n"
 701                 + "</a>\n"
 702                 + "<h2>Constructor Summary</h2>",
 703                 "<!-- ========= CONSTRUCTOR DETAIL ======== -->\n"
 704                 + "<ul class=\"blockList\">\n"
 705                 + "<li class=\"blockList\"><a name=\"constructor.detail\">\n"
 706                 + "<!--   -->\n"
 707                 + "</a>\n"
 708                 + "<h2>Constructor Details</h2>");
 709 
 710         // Negated test for exception page
 711         checkOutput("pkg/TestException.html", false,
 712                 "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">",
 713                 "<meta name=\"date\"",
 714                 "<a name=\"navbar.top.firstrow\">\n"
 715                 + "<!--   -->\n"
 716                 + "</a>",
 717                 "<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n"
 718                 + "<ul class=\"blockList\">\n"
 719                 + "<li class=\"blockList\"><a name=\"constructor.summary\">\n"
 720                 + "<!--   -->\n"
 721                 + "</a>\n"
 722                 + "<h2>Constructor Summary</h2>",
 723                 "<!-- ========= CONSTRUCTOR DETAIL ======== -->\n"
 724                 + "<ul class=\"blockList\">\n"
 725                 + "<li class=\"blockList\"><a name=\"constructor.detail\">\n"
 726                 + "<!--   -->\n"
 727                 + "</a>\n"
 728                 + "<h2>Constructor Details</h2>");
 729 
 730         // Negated test for annotation page
 731         checkOutput("pkg2/TestAnnotationType.html", false,
 732                 "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">",
 733                 "<meta name=\"date\"",
 734                 "<a name=\"navbar.top.firstrow\">\n"
 735                 + "<!--   -->\n"
 736                 + "</a>",
 737                 "<!-- =========== ANNOTATION TYPE REQUIRED MEMBER SUMMARY =========== -->\n"
 738                 + "<ul class=\"blockList\">\n"
 739                 + "<li class=\"blockList\"><a name=\"annotation.type.required.element.summary\">\n"
 740                 + "<!--   -->\n"
 741                 + "</a>\n"
 742                 + "<h2>Required Element Summary</h2>\n"
 743                 + "<div class=\"memberSummary\">\n"
 744                 + "<table summary=\"Required Element Summary table, listing required elements, and an explanation\">",
 745                 "<!-- =========== ANNOTATION TYPE OPTIONAL MEMBER SUMMARY =========== -->\n"
 746                 + "<ul class=\"blockList\">\n"
 747                 + "<li class=\"blockList\"><a name=\"annotation.type.optional.element.summary\">\n"
 748                 + "<!--   -->\n"
 749                 + "</a>\n"
 750                 + "<h2>Optional Element Summary</h2>\n"
 751                 + "<div class=\"memberSummary\">\n"
 752                 + "<table summary=\"Optional Element Summary table, listing optional elements, and an explanation\">",
 753                 "<!-- ============ ANNOTATION TYPE MEMBER DETAIL =========== -->\n"
 754                 + "<ul class=\"blockList\">\n"
 755                 + "<li class=\"blockList\"><a name=\"annotation.type.element.detail\">\n"
 756                 + "<!--   -->\n"
 757                 + "</a>\n"
 758                 + "<h2>Element Details</h2>");
 759 
 760         // Negated test for class use page
 761         checkOutput("pkg1/class-use/RegClass.html", false,
 762                 "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">",
 763                 "<meta name=\"date\"",
 764                 "<a name=\"navbar.top.firstrow\">\n"
 765                 + "<!--   -->\n"
 766                 + "</a>",
 767                 "<!-- ========= END OF TOP NAVBAR ========= -->\n"
 768                 + "</div>\n"
 769                 + "<div class=\"header\">",
 770                 "<div class=\"useSummary\">\n"
 771                 + "<table summary=\"Use table, listing packages, and an explanation\">",
 772                 "<li class=\"blockList\"><a name=\"pkg\">\n"
 773                 + "<!--   -->\n"
 774                 + "</a>\n"
 775                 + "<h2>Uses of <a href=\"../RegClass.html\" title=\"class in pkg1\">RegClass</a> in <a href=\"../../pkg/package-summary.html\">pkg</a></h2>\n"
 776                 + "<div class=\"useSummary\">\n<table summary=\"Use table, listing fields, and an explanation\">");
 777 
 778         // Negated test for main index page
 779         checkOutput("index.html", false,
 780                 "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">",
 781                 "<body>\n"
 782                 + "<script type=\"text/javascript\">\n"
 783                 + "if (targetPage == \"\" || targetPage == \"undefined\")\n"
 784                 + "     window.location.replace('overview-summary.html');\n"
 785                 + "</script>\n"
 786                 + "<noscript>JavaScript is disabled on your browser.</noscript>\n"
 787                 + "<div class=\"mainContainer\">\n");
 788     }
 789 }