35 import javadoc.tester.JavadocTester; 36 37 public class TestSearch extends JavadocTester { 38 39 public static void main(String... args) throws Exception { 40 TestSearch tester = new TestSearch(); 41 tester.runTests(); 42 } 43 44 @Test 45 public void test1() { 46 javadoc("-d", "out-1", 47 "-sourcepath", 48 "-use", 49 testSrc("UnnamedPkgClass.java")); 50 checkExit(Exit.OK); 51 checkSearchOutput("UnnamedPkgClass.html", true, true); 52 checkJqueryAndImageFiles(true); 53 checkSearchJS(); 54 checkFiles(false, 55 "tag-search-index.zip", 56 "tag-search-index.js"); 57 checkFiles(true, 58 "package-search-index.zip", 59 "member-search-index.zip", 60 "type-search-index.zip", 61 "package-search-index.js", 62 "member-search-index.js", 63 "type-search-index.js"); 64 } 65 66 @Test 67 public void test2() { 68 javadoc("-d", "out-2", 69 "-Xdoclint:none", 70 "-sourcepath", testSrc, 71 "-use", 72 "pkg", "pkg1", "pkg2", "pkg3"); 73 checkExit(Exit.OK); 74 checkInvalidUsageIndexTag(); 75 checkSearchOutput(true); 76 checkSingleIndex(true, true); 77 checkSingleIndexSearchTagDuplication(); 78 checkJqueryAndImageFiles(true); 79 checkSearchJS(); 80 checkAllPkgsAllClasses(); 81 checkFiles(true, 82 "member-search-index.zip", 83 "package-search-index.zip", 84 "tag-search-index.zip", 85 "type-search-index.zip", 86 "member-search-index.js", 87 "package-search-index.js", 88 "tag-search-index.js", 89 "type-search-index.js"); 90 } 91 92 @Test 93 public void test2a() { 94 javadoc("-d", "out-2a", 95 "-Xdoclint:all", 96 "-sourcepath", testSrc, 97 "-use", 98 "pkg", "pkg1", "pkg2", "pkg3"); 99 checkExit(Exit.ERROR); 100 checkDocLintErrors(); 101 checkSearchOutput(true); 102 checkSingleIndex(true, true); 103 checkSingleIndexSearchTagDuplication(); 104 checkJqueryAndImageFiles(true); 105 checkSearchJS(); 106 checkFiles(true, 107 "member-search-index.zip", 108 "package-search-index.zip", 109 "tag-search-index.zip", 110 "type-search-index.zip", 111 "member-search-index.js", 112 "package-search-index.js", 113 "tag-search-index.js", 114 "type-search-index.js"); 115 } 116 117 @Test 118 public void test3() { 119 javadoc("-d", "out-3", 120 "-noindex", 121 "-Xdoclint:none", 122 "-sourcepath", testSrc, 123 "-use", 124 "pkg", "pkg1", "pkg2", "pkg3"); 125 checkExit(Exit.OK); 126 checkSearchOutput(false); 127 checkJqueryAndImageFiles(false); 128 checkFiles(false, 129 "member-search-index.zip", 130 "package-search-index.zip", 131 "tag-search-index.zip", 132 "type-search-index.zip", 133 "member-search-index.js", 134 "package-search-index.js", 135 "tag-search-index.js", 136 "type-search-index.js", 137 "index-all.html", 138 "allpackages-index.html", 139 "allclasses-index.html"); 140 } 141 142 @Test 143 public void test4() { 144 javadoc("-d", "out-4", 145 "-html5", 146 "-Xdoclint:none", 147 "-sourcepath", testSrc, 148 "-use", 149 "pkg", "pkg1", "pkg2", "pkg3"); 150 checkExit(Exit.OK); 151 checkSearchOutput(true); 152 checkSingleIndex(true, true); 153 checkSingleIndexSearchTagDuplication(); 154 checkJqueryAndImageFiles(true); 155 checkSearchJS(); 156 checkFiles(true, 157 "member-search-index.zip", 158 "package-search-index.zip", 159 "tag-search-index.zip", 160 "type-search-index.zip", 161 "member-search-index.js", 162 "package-search-index.js", 163 "tag-search-index.js", 164 "type-search-index.js"); 165 } 166 167 @Test 168 public void test5() { 169 javadoc("-d", "out-5", 170 "-html5", 171 "-noindex", 172 "-Xdoclint:none", 173 "-sourcepath", testSrc, 174 "-use", 175 "pkg", "pkg1", "pkg2", "pkg3"); 176 checkExit(Exit.OK); 177 checkSearchOutput(false); 178 checkJqueryAndImageFiles(false); 179 checkFiles(false, 180 "member-search-index.zip", 181 "package-search-index.zip", 182 "tag-search-index.zip", 183 "type-search-index.zip", 184 "member-search-index.js", 185 "package-search-index.js", 186 "tag-search-index.js", 187 "type-search-index.js", 188 "index-all.html"); 189 } 190 191 @Test 192 public void test6() { 193 javadoc("-d", "out-6", 194 "-nocomment", 195 "-Xdoclint:none", 196 "-sourcepath", testSrc, 197 "-use", 198 "pkg", "pkg1", "pkg2", "pkg3"); 199 checkExit(Exit.OK); 200 checkSearchOutput(true); 201 checkIndexNoComment(); 202 checkJqueryAndImageFiles(true); 203 checkSearchJS(); 204 checkFiles(true, 205 "member-search-index.zip", 206 "package-search-index.zip", 207 "tag-search-index.zip", 208 "type-search-index.zip", 209 "member-search-index.js", 210 "package-search-index.js", 211 "tag-search-index.js", 212 "type-search-index.js"); 213 } 214 215 @Test 216 public void test7() { 217 javadoc("-d", "out-7", 218 "-nodeprecated", 219 "-Xdoclint:none", 220 "-sourcepath", testSrc, 221 "-use", 222 "pkg", "pkg1", "pkg2", "pkg3"); 223 224 checkExit(Exit.OK); 225 checkSearchOutput(true); 226 checkIndexNoDeprecated(); 227 checkJqueryAndImageFiles(true); 228 checkSearchJS(); 229 checkFiles(true, 230 "member-search-index.zip", 231 "package-search-index.zip", 232 "tag-search-index.zip", 233 "type-search-index.zip", 234 "member-search-index.js", 235 "package-search-index.js", 236 "tag-search-index.js", 237 "type-search-index.js"); 238 } 239 240 @Test 241 public void test8() { 242 javadoc("-d", "out-8", 243 "-splitindex", 244 "-Xdoclint:none", 245 "-sourcepath", testSrc, 246 "-use", 247 "pkg", "pkg1", "pkg2", "pkg3"); 248 checkExit(Exit.OK); 249 checkInvalidUsageIndexTag(); 250 checkSearchOutput(true); 251 checkSplitIndex(); 252 checkSplitIndexSearchTagDuplication(); 253 checkJqueryAndImageFiles(true); 254 checkSearchJS(); 255 checkFiles(true, 256 "member-search-index.zip", 257 "package-search-index.zip", 258 "tag-search-index.zip", 259 "type-search-index.zip", 260 "member-search-index.js", 261 "package-search-index.js", 262 "tag-search-index.js", 263 "type-search-index.js"); 264 } 265 266 @Test 267 public void test9() { 268 javadoc("-d", "out-9", 269 "-sourcepath", testSrc, 270 "-javafx", 271 "--disable-javafx-strict-checks", 272 "-package", 273 "-use", 274 "pkgfx", "pkg3"); 275 checkExit(Exit.OK); 276 checkSearchOutput(true); 277 checkJavaFXOutput(); 278 checkJqueryAndImageFiles(true); 279 checkSearchJS(); 280 checkFiles(false, 281 "tag-search-index.zip", 282 "tag-search-index.js"); 283 checkFiles(true, 284 "member-search-index.zip", 285 "package-search-index.zip", 286 "type-search-index.zip", 287 "member-search-index.js", 288 "package-search-index.js", 289 "type-search-index.js"); 290 } 291 292 @Test 293 public void testURLEncoding() { 294 javadoc("-d", "out-encode-html5", 295 "-Xdoclint:none", 296 "-sourcepath", testSrc, 297 "-use", 298 "pkg", "pkg1", "pkg2", "pkg3"); 299 checkExit(Exit.OK); 300 checkSearchJS(); 301 checkSearchIndex(true); 302 } 303 304 @Test 305 public void testJapaneseLocale() { 306 javadoc("-locale", "ja_JP", 353 checkOutput("member-search-index.js", expectedOutput, 354 "{\"p\":\"pkg\",\"c\":\"AnotherClass\",\"l\":\"AnotherClass()\",\"url\":\"%3Cinit%3E()\"}", 355 "{\"p\":\"pkg1\",\"c\":\"RegClass\",\"l\":\"RegClass()\",\"url\":\"%3Cinit%3E()\"}", 356 "{\"p\":\"pkg2\",\"c\":\"TestError\",\"l\":\"TestError()\",\"url\":\"%3Cinit%3E()\"}", 357 "{\"p\":\"pkg\",\"c\":\"AnotherClass\",\"l\":\"method(byte[], int, String)\",\"url\":\"method(byte[],int,java.lang.String)\"}"); 358 checkOutput("member-search-index.js", !expectedOutput, 359 "{\"p\":\"pkg\",\"c\":\"AnotherClass\",\"l\":\"method(RegClass)\",\"url\":\"method-pkg1.RegClass-\"}", 360 "{\"p\":\"pkg2\",\"c\":\"TestClass\",\"l\":\"TestClass()\",\"url\":\"TestClass--\"}", 361 "{\"p\":\"pkg\",\"c\":\"TestError\",\"l\":\"TestError()\",\"url\":\"TestError--\"}", 362 "{\"p\":\"pkg\",\"c\":\"AnotherClass\",\"l\":\"method(byte[], int, String)\",\"url\":\"method-byte:A-int-java.lang.String-\"}"); 363 } 364 365 void checkSearchOutput(boolean expectedOutput, boolean moduleDirectoriesVar) { 366 checkSearchOutput("index.html", expectedOutput, moduleDirectoriesVar); 367 } 368 369 void checkSearchOutput(String fileName, boolean expectedOutput, boolean moduleDirectoriesVar) { 370 // Test for search related markup 371 checkOutput(fileName, expectedOutput, 372 "<link rel=\"stylesheet\" type=\"text/css\" href=\"script-dir/jquery-ui.css\" title=\"Style\">\n", 373 "<script type=\"text/javascript\" src=\"script-dir/jszip/dist/jszip.min.js\"></script>\n", 374 "<script type=\"text/javascript\" src=\"script-dir/jszip-utils/dist/jszip-utils.min.js\"></script>\n", 375 "<!--[if IE]>\n", 376 "<script type=\"text/javascript\" src=\"script-dir/jszip-utils/dist/jszip-utils-ie.min.js\"></script>\n", 377 "<![endif]-->\n", 378 "<script type=\"text/javascript\" src=\"script-dir/jquery-3.4.1.js\"></script>\n", 379 "<script type=\"text/javascript\" src=\"script-dir/jquery-ui.js\"></script>", 380 "var pathtoroot = \"./\";\n" 381 + "loadScripts(document, 'script');", 382 "<div class=\"navListSearch\">", 383 "<label for=\"search\">SEARCH:</label>\n" 384 + "<input type=\"text\" id=\"search\" value=\"search\" disabled=\"disabled\">\n" 385 + "<input type=\"reset\" id=\"reset\" value=\"reset\" disabled=\"disabled\">\n"); 386 checkOutput(fileName, true, 387 "<div class=\"flexBox\">"); 388 } 389 390 void checkSingleIndex(boolean expectedOutput, boolean html5) { 391 String html_span_see_span = html5 ? "html%3Cspan%3Esee%3C/span%3E" : "html-span-see-/span-"; 392 393 // Test for search tags markup in index file. 394 checkOutput("index-all.html", expectedOutput, 395 "<dt><span class=\"searchTagLink\"><a href=\"pkg/package-summary.html#phrasewithspaces\">" 396 + "phrase with spaces</a></span> - Search tag in package pkg</dt>", 397 "<dt><span class=\"searchTagLink\"><a href=\"pkg/package-summary.html#pkg\">" 398 + "pkg</a></span> - Search tag in package pkg</dt>", 399 "<dt><span class=\"searchTagLink\"><a href=\"pkg/package-summary.html#pkg2.5\">" 400 + "pkg2.5</a></span> - Search tag in package pkg</dt>", 401 "<dt><span class=\"searchTagLink\"><a href=\"pkg/package-summary.html#r\">" 402 + "r</a></span> - Search tag in package pkg</dt>", 403 "<dt><span class=\"searchTagLink\"><a href=\"pkg1/RegClass.html#searchphrase\">" 404 + "search phrase</a></span> - Search tag in class pkg1.RegClass</dt>", 405 "<dt><span class=\"searchTagLink\"><a href=\"pkg1/RegClass.html#SearchWordWithDescription\">" 406 + "SearchWordWithDescription</a></span> - Search tag in pkg1.RegClass.CONSTANT_FIELD_1</dt>", 407 "<dt><span class=\"searchTagLink\"><a href=\"pkg2/TestAnnotationType.html#searchphrasewithdescdeprecated\">" 408 + "search phrase with desc deprecated</a></span> - Search tag in annotation type pkg2.TestAnnotationType</dt>", 409 "<dt><span class=\"searchTagLink\"><a href=\"pkg2/TestClass.html#SearchTagDeprecatedClass\">" 410 + "SearchTagDeprecatedClass</a></span> - Search tag in class pkg2.TestClass</dt>", 411 "<dt><span class=\"searchTagLink\"><a href=\"pkg2/TestEnum.html#searchphrasedeprecated\">" 412 + "search phrase deprecated</a></span> - Search tag in pkg2.TestEnum.ONE</dt>", 413 "<dt><span class=\"searchTagLink\"><a href=\"pkg2/TestEnum.html#searchphrasedeprecated\">" 414 + "search phrase deprecated</a></span> - Search tag in pkg2.TestEnum.ONE</dt>", 415 "<dt><span class=\"searchTagLink\"><a href=\"pkg2/TestError.html#SearchTagDeprecatedMethod\">" 416 + "SearchTagDeprecatedMethod</a></span> - Search tag in pkg2.TestError.TestError()</dt>", 417 "<dt><span class=\"searchTagLink\"><a href=\"pkg2/TestError.html#SearchTagDeprecatedMethod\">" 418 + "SearchTagDeprecatedMethod</a></span> - Search tag in pkg2.TestError.TestError()</dt>", 419 "<dt><span class=\"searchTagLink\"><a href=\"pkg/package-summary.html#SingleWord\">" 420 + "SingleWord</a></span> - Search tag in package pkg</dt>", 421 "<dt><span class=\"searchTagLink\"><a href=\"pkg/AnotherClass.ModalExclusionType.html" 422 + "#nested%7B@indexnested_tag_test%7D\">nested {@index nested_tag_test}</a></span> - " 423 + "Search tag in pkg.AnotherClass.ModalExclusionType.NO_EXCLUDE</dt>", 424 "<dt><span class=\"searchTagLink\"><a href=\"pkg/AnotherClass.ModalExclusionType.html" 425 + "#" + html_span_see_span + "\">html <span> see </span></a></span> - Search " 426 + "tag in pkg.AnotherClass.ModalExclusionType.APPLICATION_EXCLUDE</dt>", 427 "<dt><span class=\"searchTagLink\"><a href=\"pkg/AnotherClass.html#quoted\">quoted</a>" 428 + "</span> - Search tag in pkg.AnotherClass.CONSTANT1</dt>", 429 "<dt><span class=\"memberNameLink\"><a href=\"pkg2/TestEnum.html#ONE\">ONE</a></span> - " 430 + "pkg2.<a href=\"pkg2/TestEnum.html\" title=\"enum in pkg2\">TestEnum</a></dt>", 431 "<dt><span class=\"memberNameLink\"><a href=\"pkg2/TestEnum.html#THREE\">THREE</a></span> - " 432 + "pkg2.<a href=\"pkg2/TestEnum.html\" title=\"enum in pkg2\">TestEnum</a></dt>", 433 "<dt><span class=\"memberNameLink\"><a href=\"pkg2/TestEnum.html#TWO\">TWO</a></span> - " 434 + "pkg2.<a href=\"pkg2/TestEnum.html\" title=\"enum in pkg2\">TestEnum</a></dt>"); 435 checkOutput("index-all.html", true, 436 "<div class=\"deprecationComment\">class_test1 passes. Search tag" 437 + " <span id=\"SearchTagDeprecatedClass\" class=\"searchTagResult\">SearchTagDeprecatedClass</span></div>", 438 "<div class=\"deprecationComment\">error_test3 passes. Search tag for\n" 439 + " method <span id=\"SearchTagDeprecatedMethod\" class=\"searchTagResult\">SearchTagDeprecatedMethod</span></div>"); 440 } 441 442 void checkSplitIndex() { 443 // Test for search tags markup in split index file. 444 checkOutput("index-files/index-13.html", true, 445 "<dt><span class=\"searchTagLink\"><a href=\"../pkg1/RegClass.html#searchphrase\">" 446 + "search phrase</a></span> - Search tag in class pkg1.RegClass</dt>", 447 "<dt><span class=\"searchTagLink\"><a href=\"../pkg1/RegClass.html#SearchWordWithDescription\">" 448 + "SearchWordWithDescription</a></span> - Search tag in pkg1.RegClass.CONSTANT_FIELD_1</dt>", 449 "<dt><span class=\"searchTagLink\"><a href=\"../pkg2/TestAnnotationType.html#searchphrasewithdescdeprecated\">" 450 + "search phrase with desc deprecated</a></span> - Search tag in annotation type pkg2.TestAnnotationType</dt>", 451 "<dt><span class=\"searchTagLink\"><a href=\"../pkg2/TestClass.html#SearchTagDeprecatedClass\">" 452 + "SearchTagDeprecatedClass</a></span> - Search tag in class pkg2.TestClass</dt>", 453 "<dt><span class=\"searchTagLink\"><a href=\"../pkg2/TestEnum.html#searchphrasedeprecated\">" 454 + "search phrase deprecated</a></span> - Search tag in pkg2.TestEnum.ONE</dt>", 455 "<dt><span class=\"searchTagLink\"><a href=\"../pkg2/TestEnum.html#searchphrasedeprecated\">" 456 + "search phrase deprecated</a></span> - Search tag in pkg2.TestEnum.ONE</dt>", 457 "<dt><span class=\"searchTagLink\"><a href=\"../pkg2/TestError.html#SearchTagDeprecatedMethod\">" 458 + "SearchTagDeprecatedMethod</a></span> - Search tag in pkg2.TestError.TestError()</dt>", 459 "<dt><span class=\"searchTagLink\"><a href=\"../pkg2/TestError.html#SearchTagDeprecatedMethod\">" 460 + "SearchTagDeprecatedMethod</a></span> - Search tag in pkg2.TestError.TestError()</dt>", 461 "<dt><span class=\"searchTagLink\"><a href=\"../pkg/package-summary.html#SingleWord\">" 462 + "SingleWord</a></span> - Search tag in package pkg</dt>", 463 "<br><a href=\"../allclasses-index.html\">All Classes</a>" 464 + "<span class=\"verticalSeparator\">|</span>" 465 + "<a href=\"../allpackages-index.html\">All Packages</a>"); 466 checkOutput("index-files/index-10.html", true, 467 "<dt><span class=\"searchTagLink\"><a href=\"../pkg/package-summary.html#phrasewithspaces\">" 468 + "phrase with spaces</a></span> - Search tag in package pkg</dt>", 469 "<dt><span class=\"searchTagLink\"><a href=\"../pkg/package-summary.html#pkg\">" 470 + "pkg</a></span> - Search tag in package pkg</dt>", 471 "<dt><span class=\"searchTagLink\"><a href=\"../pkg/package-summary.html#pkg2.5\">" 472 + "pkg2.5</a></span> - Search tag in package pkg</dt>"); 473 checkOutput("index-files/index-12.html", true, 474 "<dt><span class=\"searchTagLink\"><a href=\"../pkg/package-summary.html#r\">" 475 + "r</a></span> - Search tag in package pkg</dt>"); 476 checkOutput("index-files/index-8.html", true, 477 "<dt><span class=\"searchTagLink\"><a href=\"../pkg/AnotherClass.ModalExclusionType.html" 478 + "#nested%7B@indexnested_tag_test%7D\">nested {@index nested_tag_test}</a></span> - " 479 + "Search tag in pkg.AnotherClass.ModalExclusionType.NO_EXCLUDE</dt>"); 480 checkOutput("index-files/index-5.html", true, 481 "<dt><span class=\"searchTagLink\"><a href=\"../pkg/AnotherClass.ModalExclusionType.html" 482 + "#html%3Cspan%3Esee%3C/span%3E\">html <span> see </span></a></span> - Search " 483 + "tag in pkg.AnotherClass.ModalExclusionType.APPLICATION_EXCLUDE</dt>"); 484 checkOutput("index-files/index-11.html", true, 485 "<dt><span class=\"searchTagLink\"><a href=\"../pkg/AnotherClass.html#quoted\">quoted</a>" 486 + "</span> - Search tag in pkg.AnotherClass.CONSTANT1</dt>"); 487 checkOutput("index-files/index-9.html", true, 488 "<dt><span class=\"memberNameLink\"><a href=\"../pkg2/TestEnum.html#ONE\">ONE</a>" 489 + "</span> - pkg2.<a href=\"../pkg2/TestEnum.html\" title=\"enum in pkg2\">TestEnum</a></dt>"); 490 checkOutput("index-files/index-14.html", true, 491 "<dt><span class=\"memberNameLink\"><a href=\"../pkg2/TestEnum.html#THREE\">THREE</a></span> - " 492 + "pkg2.<a href=\"../pkg2/TestEnum.html\" title=\"enum in pkg2\">TestEnum</a></dt>", 493 "<dt><span class=\"memberNameLink\"><a href=\"../pkg2/TestEnum.html#TWO\">TWO</a></span> - " 494 + "pkg2.<a href=\"../pkg2/TestEnum.html\" title=\"enum in pkg2\">TestEnum</a></dt>"); 495 } 496 497 void checkIndexNoComment() { 498 // Test for search tags markup in index file when javadoc is executed with -nocomment. 499 checkOutput("index-all.html", false, 500 "<dt><span class=\"searchTagLink\"><a href=\"pkg/package-summary.html#phrasewithspaces\">" 501 + "phrase with spaces</a></span> - Search tag in package pkg</dt>", 502 "<dt><span class=\"searchTagLink\"><a href=\"pkg/package-summary.html#pkg\">" 503 + "pkg</a></span> - Search tag in package pkg</dt>", 504 "<dt><span class=\"searchTagLink\"><a href=\"pkg/package-summary.html#pkg2.5\">" 505 + "pkg2.5</a></span> - Search tag in package pkg</dt>", 506 "<dt><span class=\"searchTagLink\"><a href=\"pkg/package-summary.html#r\">" 507 + "r</a></span> - Search tag in package pkg</dt>", 508 "<dt><span class=\"searchTagLink\"><a href=\"pkg1/RegClass.html#searchphrase\">" 509 + "search phrase</a></span> - Search tag in class pkg1.RegClass</dt>", 510 "<dt><span class=\"searchTagLink\"><a href=\"pkg1/RegClass.html#SearchWordWithDescription\">" 511 + "SearchWordWithDescription</a></span> - Search tag in pkg1.RegClass.CONSTANT_FIELD_1</dt>", 512 "<dt><span class=\"searchTagLink\"><a href=\"pkg2/TestAnnotationType.html#searchphrasewithdescdeprecated\">" 513 + "search phrase with desc deprecated</a></span> - Search tag in annotation type pkg2.TestAnnotationType</dt>", 514 "<dt><span class=\"searchTagLink\"><a href=\"pkg2/TestClass.html#SearchTagDeprecatedClass\">" 515 + "SearchTagDeprecatedClass</a></span> - Search tag in class pkg2.TestClass</dt>", 516 "<dt><span class=\"searchTagLink\"><a href=\"pkg/package-summary.html#SingleWord\">" 517 + "SingleWord</a></span> - Search tag in package pkg</dt>", 518 "<div class=\"deprecationComment\">class_test1 passes. Search tag" 519 + " <span id=\"SearchTagDeprecatedClass\">SearchTagDeprecatedClass</span></div>", 520 "<div class=\"deprecationComment\">error_test3 passes. Search tag for\n" 521 + " method <span id=\"SearchTagDeprecatedMethod\">SearchTagDeprecatedMethod</span></div>"); 522 checkOutput("index-all.html", true, 523 "<dt><span class=\"searchTagLink\"><a href=\"pkg2/TestEnum.html#searchphrasedeprecated\">" 524 + "search phrase deprecated</a></span> - Search tag in pkg2.TestEnum.ONE</dt>", 525 "<dt><span class=\"searchTagLink\"><a href=\"pkg2/TestError.html#SearchTagDeprecatedMethod\">" 526 + "SearchTagDeprecatedMethod</a></span> - Search tag in pkg2.TestError.TestError()</dt>"); 527 } 528 529 void checkIndexNoDeprecated() { 530 // Test for search tags markup in index file when javadoc is executed using -nodeprecated. 531 checkOutput("index-all.html", true, 532 "<dt><span class=\"searchTagLink\"><a href=\"pkg/package-summary.html#phrasewithspaces\">" 533 + "phrase with spaces</a></span> - Search tag in package pkg</dt>", 534 "<dt><span class=\"searchTagLink\"><a href=\"pkg1/RegClass.html#searchphrase\">" 535 + "search phrase</a></span> - Search tag in class pkg1.RegClass</dt>", 536 "<dt><span class=\"searchTagLink\"><a href=\"pkg1/RegClass.html#SearchWordWithDescription\">" 537 + "SearchWordWithDescription</a></span> - Search tag in pkg1.RegClass.CONSTANT_FIELD_1</dt>", 538 "<dt><span class=\"searchTagLink\"><a href=\"pkg/package-summary.html#SingleWord\">" 539 + "SingleWord</a></span> - Search tag in package pkg</dt>"); 540 checkOutput("index-all.html", false, 541 "<dt><span class=\"searchTagLink\"><a href=\"pkg2/TestAnnotationType.html#searchphrasewithdescdeprecated\">" 542 + "search phrase with desc deprecated</a></span> - Search tag in annotation type pkg2.TestAnnotationType</dt>", 543 "<dt><span class=\"searchTagLink\"><a href=\"pkg2/TestClass.html#SearchTagDeprecatedClass\">" 544 + "SearchTagDeprecatedClass</a></span> - Search tag in class pkg2.TestClass</dt>", 545 "<dt><span class=\"searchTagLink\"><a href=\"pkg2/TestEnum.html#searchphrasedeprecated\">" 546 + "search phrase deprecated</a></span> - Search tag in pkg2.TestEnum.ONE</dt>", 547 "<dt><span class=\"searchTagLink\"><a href=\"pkg2/TestError.html#SearchTagDeprecatedMethod\">" 548 + "SearchTagDeprecatedMethod</a></span> - Search tag in pkg2.TestError.TestError()</dt>", 549 "<div class=\"deprecationComment\">class_test1 passes. Search tag" 550 + " <span id=\"SearchTagDeprecatedClass\">SearchTagDeprecatedClass</span></div>", 551 "<div class=\"deprecationComment\">error_test3 passes. Search tag for\n" 552 + " method <span id=\"SearchTagDeprecatedMethod\">SearchTagDeprecatedMethod</span></div>"); 553 } 554 555 void checkJavaFXOutput() { 556 checkOutput("index-all.html", false, "test treat as private"); 557 } 558 559 void checkInvalidUsageIndexTag() { 560 checkOutput(Output.OUT, true, 561 "AnotherClass.java:29: warning - invalid usage of tag {@index", 562 "AnotherClass.java:39: warning - invalid usage of tag {@index", 563 "AnotherClass.java:34: warning - invalid usage of tag {@index", 564 "AnotherClass.java:68: warning - invalid usage of tag {@index"); 565 } 566 567 void checkJqueryAndImageFiles(boolean expectedOutput) { 568 checkFiles(expectedOutput, 569 "search.js", 570 "script-dir/jquery-3.4.1.js", 571 "script-dir/jquery-ui.js", 572 "script-dir/jquery-ui.css", 573 "script-dir/jquery-ui.min.js", 574 "script-dir/jquery-ui.min.css", 575 "script-dir/jquery-ui.structure.min.css", 576 "script-dir/jquery-ui.structure.css", 577 "script-dir/external/jquery/jquery.js", 578 "script-dir/jszip/dist/jszip.js", 579 "script-dir/jszip/dist/jszip.min.js", 580 "script-dir/jszip-utils/dist/jszip-utils.js", 581 "script-dir/jszip-utils/dist/jszip-utils.min.js", 582 "script-dir/jszip-utils/dist/jszip-utils-ie.js", 583 "script-dir/jszip-utils/dist/jszip-utils-ie.min.js", 584 "script-dir/images/ui-bg_glass_65_dadada_1x400.png", 585 "script-dir/images/ui-icons_454545_256x240.png", 586 "script-dir/images/ui-bg_glass_95_fef1ec_1x400.png", 587 "script-dir/images/ui-bg_glass_75_dadada_1x400.png", 588 "script-dir/images/ui-bg_highlight-soft_75_cccccc_1x100.png", 589 "script-dir/images/ui-icons_888888_256x240.png", 590 "script-dir/images/ui-icons_2e83ff_256x240.png", 591 "script-dir/images/ui-icons_cd0a0a_256x240.png", 592 "script-dir/images/ui-bg_glass_55_fbf9ee_1x400.png", 593 "script-dir/images/ui-icons_222222_256x240.png", 594 "script-dir/images/ui-bg_glass_75_e6e6e6_1x400.png", 595 "resources/x.png", 596 "resources/glass.png"); 597 } 598 599 void checkSearchJS() { 600 checkOutput("search.js", true, 601 "function concatResults(a1, a2) {", 602 "$(\"#search\").on('click keydown paste', function() {\n" 603 + " if ($(this).val() == watermark) {\n" 612 + " } else if (ui.item.category === catPackages && ui.item.m) {\n" 613 + " return ui.item.m + slash;\n" 614 + " } else if ((ui.item.category === catTypes && ui.item.p) || ui.item.category === catMembers) {\n" 615 + " $.each(packageSearchIndex, function(index, item) {\n" 616 + " if (item.m && ui.item.p == item.l) {\n" 617 + " urlPrefix = item.m + slash;\n" 618 + " }\n" 619 + " });\n" 620 + " return urlPrefix;\n" 621 + " } else {\n" 622 + " return urlPrefix;\n" 623 + " }\n" 624 + " return urlPrefix;\n" 625 + "}", 626 "url += ui.item.l;"); 627 } 628 629 void checkSingleIndexSearchTagDuplication() { 630 // Test for search tags duplication in index file. 631 checkOutput("index-all.html", true, 632 "<dt><span class=\"searchTagLink\"><a href=\"pkg2/TestError.html#SearchTagDeprecatedMethod\">" 633 + "SearchTagDeprecatedMethod</a></span> - Search tag in pkg2.TestError.TestError()</dt>\n" 634 + "<dd>with description</dd>"); 635 checkOutput("index-all.html", false, 636 "<dt><span class=\"searchTagLink\"><a href=\"pkg2/TestError.html#SearchTagDeprecatedMethod\">" 637 + "SearchTagDeprecatedMethod</a></span> - Search tag in pkg2.TestError.TestError()</dt>\n" 638 + "<dd>with description</dd>\n" 639 + "<dt><span class=\"searchTagLink\"><a href=\"pkg2/TestError.html#SearchTagDeprecatedMethod\">" 640 + "SearchTagDeprecatedMethod</a></span> - Search tag in pkg2.TestError.TestError()</dt>\n" 641 + "<dd>with description</dd>"); 642 } 643 644 void checkSplitIndexSearchTagDuplication() { 645 // Test for search tags duplication in index file. 646 checkOutput("index-files/index-13.html", true, 647 "<dt><span class=\"searchTagLink\"><a href=\"../pkg2/TestError.html#SearchTagDeprecatedMethod\">" 648 + "SearchTagDeprecatedMethod</a></span> - Search tag in pkg2.TestError.TestError()</dt>\n" 649 + "<dd>with description</dd>"); 650 checkOutput("index-files/index-13.html", false, 651 "<dt><span class=\"searchTagLink\"><a href=\"../pkg2/TestError.html#SearchTagDeprecatedMethod\">" 652 + "SearchTagDeprecatedMethod</a></span> - Search tag in pkg2.TestError.TestError()</dt>\n" 653 + "<dd>with description</dd>\n" 654 + "<dt><span class=\"searchTagLink\"><a href=\"../pkg2/TestError.html#SearchTagDeprecatedMethod\">" 655 + "SearchTagDeprecatedMethod</a></span> - Search tag in pkg2.TestError.TestError()</dt>\n" 656 + "<dd>with description</dd>"); 657 } 658 659 void checkAllPkgsAllClasses() { 660 checkOutput("allclasses-index.html", true, 661 "<div class=\"typeSummary\">\n" 662 + "<div role=\"tablist\" aria-orientation=\"horizontal\"><button role=\"tab\"" 663 + " aria-selected=\"true\" aria-controls=\"typeSummary_tabpanel\" tabindex=\"0\"" 664 + " onkeydown=\"switchTab(event)\" id=\"t0\" class=\"activeTableTab\">All Classes</button>" 665 + "<button role=\"tab\" aria-selected=\"false\" aria-controls=\"typeSummary_tabpanel\"" 666 + " tabindex=\"-1\" onkeydown=\"switchTab(event)\" id=\"t1\" class=\"tableTab\"" 667 + " onclick=\"show(1);\">Interface Summary</button><button role=\"tab\" aria-selected=\"false\"" 668 + " aria-controls=\"typeSummary_tabpanel\" tabindex=\"-1\" onkeydown=\"switchTab(event)\"" 669 + " id=\"t2\" class=\"tableTab\" onclick=\"show(2);\">Class Summary</button><button role=\"tab\"" 670 + " aria-selected=\"false\" aria-controls=\"typeSummary_tabpanel\" tabindex=\"-1\"" 671 + " onkeydown=\"switchTab(event)\" id=\"t3\" class=\"tableTab\" onclick=\"show(4);\">" 672 + "Enum Summary</button><button role=\"tab\" aria-selected=\"false\"" 673 + " aria-controls=\"typeSummary_tabpanel\" tabindex=\"-1\" onkeydown=\"switchTab(event)\"" 674 + " id=\"t4\" class=\"tableTab\" onclick=\"show(8);\">Exception Summary</button><button role=\"tab\"" 675 + " aria-selected=\"false\" aria-controls=\"typeSummary_tabpanel\" tabindex=\"-1\"" 676 + " onkeydown=\"switchTab(event)\" id=\"t5\" class=\"tableTab\" onclick=\"show(16);\">" 677 + "Error Summary</button><button role=\"tab\" aria-selected=\"false\"" 678 + " aria-controls=\"typeSummary_tabpanel\" tabindex=\"-1\" onkeydown=\"switchTab(event)\"" 679 + " id=\"t6\" class=\"tableTab\" onclick=\"show(32);\">Annotation Types Summary</button></div>\n" 680 + "<div id=\"typeSummary_tabpanel\" role=\"tabpanel\">\n" 681 + "<table aria-labelledby=\"t0\">\n" 682 + "<thead>\n" 683 + "<tr>\n" 684 + "<th class=\"colFirst\" scope=\"col\">Class</th>\n" 685 + "<th class=\"colLast\" scope=\"col\">Description</th>\n" 686 + "</tr>", 687 "var data = {\"i0\":32,\"i1\":2,\"i2\":4,\"i3\":2,\"i4\":2,\"i5\":1,\"i6\":2,\"i7\":32," 688 + "\"i8\":2,\"i9\":4,\"i10\":16,\"i11\":16,\"i12\":8,\"i13\":8,\"i14\":1,\"i15\":2};"); 689 checkOutput("allpackages-index.html", true, 690 "<div class=\"packagesSummary\">\n<table>\n" 691 + "<caption><span>Package Summary</span><span class=\"tabEnd\"> </span></caption>\n" 692 + "<thead>\n" 693 + "<tr>\n" 694 + "<th class=\"colFirst\" scope=\"col\">Package</th>\n" 695 + "<th class=\"colLast\" scope=\"col\">Description</th>\n" 696 + "</tr>\n"); 697 checkOutput("type-search-index.js", true, 698 "{\"l\":\"All Classes\",\"url\":\"allclasses-index.html\"}"); 699 checkOutput("package-search-index.js", true, 700 "{\"l\":\"All Packages\",\"url\":\"allpackages-index.html\"}"); 701 checkOutput("index-all.html", true, 702 "<br><a href=\"allclasses-index.html\">All Classes</a>" 703 + "<span class=\"verticalSeparator\">|</span>" 704 + "<a href=\"allpackages-index.html\">All Packages</a>"); 705 } 706 } | 35 import javadoc.tester.JavadocTester; 36 37 public class TestSearch extends JavadocTester { 38 39 public static void main(String... args) throws Exception { 40 TestSearch tester = new TestSearch(); 41 tester.runTests(); 42 } 43 44 @Test 45 public void test1() { 46 javadoc("-d", "out-1", 47 "-sourcepath", 48 "-use", 49 testSrc("UnnamedPkgClass.java")); 50 checkExit(Exit.OK); 51 checkSearchOutput("UnnamedPkgClass.html", true, true); 52 checkJqueryAndImageFiles(true); 53 checkSearchJS(); 54 checkFiles(false, 55 "tag-search-index.js"); 56 checkFiles(true, 57 "package-search-index.js", 58 "member-search-index.js", 59 "type-search-index.js"); 60 } 61 62 @Test 63 public void test2() { 64 javadoc("-d", "out-2", 65 "-Xdoclint:none", 66 "-sourcepath", testSrc, 67 "-use", 68 "pkg", "pkg1", "pkg2", "pkg3"); 69 checkExit(Exit.OK); 70 checkInvalidUsageIndexTag(); 71 checkSearchOutput(true); 72 checkSingleIndex(true, true); 73 checkSingleIndexSearchTagDuplication(); 74 checkJqueryAndImageFiles(true); 75 checkSearchJS(); 76 checkAllPkgsAllClasses(); 77 checkFiles(true, 78 "member-search-index.js", 79 "package-search-index.js", 80 "tag-search-index.js", 81 "type-search-index.js"); 82 } 83 84 @Test 85 public void test2a() { 86 javadoc("-d", "out-2a", 87 "-Xdoclint:all", 88 "-sourcepath", testSrc, 89 "-use", 90 "pkg", "pkg1", "pkg2", "pkg3"); 91 checkExit(Exit.ERROR); 92 checkDocLintErrors(); 93 checkSearchOutput(true); 94 checkSingleIndex(true, true); 95 checkSingleIndexSearchTagDuplication(); 96 checkJqueryAndImageFiles(true); 97 checkSearchJS(); 98 checkFiles(true, 99 "member-search-index.js", 100 "package-search-index.js", 101 "tag-search-index.js", 102 "type-search-index.js"); 103 } 104 105 @Test 106 public void test3() { 107 javadoc("-d", "out-3", 108 "-noindex", 109 "-Xdoclint:none", 110 "-sourcepath", testSrc, 111 "-use", 112 "pkg", "pkg1", "pkg2", "pkg3"); 113 checkExit(Exit.OK); 114 checkSearchOutput(false); 115 checkJqueryAndImageFiles(false); 116 checkFiles(false, 117 "member-search-index.js", 118 "package-search-index.js", 119 "tag-search-index.js", 120 "type-search-index.js", 121 "index-all.html", 122 "allpackages-index.html", 123 "allclasses-index.html"); 124 } 125 126 @Test 127 public void test4() { 128 javadoc("-d", "out-4", 129 "-html5", 130 "-Xdoclint:none", 131 "-sourcepath", testSrc, 132 "-use", 133 "pkg", "pkg1", "pkg2", "pkg3"); 134 checkExit(Exit.OK); 135 checkSearchOutput(true); 136 checkSingleIndex(true, true); 137 checkSingleIndexSearchTagDuplication(); 138 checkJqueryAndImageFiles(true); 139 checkSearchJS(); 140 checkFiles(true, 141 "member-search-index.js", 142 "package-search-index.js", 143 "tag-search-index.js", 144 "type-search-index.js"); 145 } 146 147 @Test 148 public void test5() { 149 javadoc("-d", "out-5", 150 "-html5", 151 "-noindex", 152 "-Xdoclint:none", 153 "-sourcepath", testSrc, 154 "-use", 155 "pkg", "pkg1", "pkg2", "pkg3"); 156 checkExit(Exit.OK); 157 checkSearchOutput(false); 158 checkJqueryAndImageFiles(false); 159 checkFiles(false, 160 "member-search-index.js", 161 "package-search-index.js", 162 "tag-search-index.js", 163 "type-search-index.js", 164 "index-all.html"); 165 } 166 167 @Test 168 public void test6() { 169 javadoc("-d", "out-6", 170 "-nocomment", 171 "-Xdoclint:none", 172 "-sourcepath", testSrc, 173 "-use", 174 "pkg", "pkg1", "pkg2", "pkg3"); 175 checkExit(Exit.OK); 176 checkSearchOutput(true); 177 checkIndexNoComment(); 178 checkJqueryAndImageFiles(true); 179 checkSearchJS(); 180 checkFiles(true, 181 "member-search-index.js", 182 "package-search-index.js", 183 "tag-search-index.js", 184 "type-search-index.js"); 185 } 186 187 @Test 188 public void test7() { 189 javadoc("-d", "out-7", 190 "-nodeprecated", 191 "-Xdoclint:none", 192 "-sourcepath", testSrc, 193 "-use", 194 "pkg", "pkg1", "pkg2", "pkg3"); 195 196 checkExit(Exit.OK); 197 checkSearchOutput(true); 198 checkIndexNoDeprecated(); 199 checkJqueryAndImageFiles(true); 200 checkSearchJS(); 201 checkFiles(true, 202 "member-search-index.js", 203 "package-search-index.js", 204 "tag-search-index.js", 205 "type-search-index.js"); 206 } 207 208 @Test 209 public void test8() { 210 javadoc("-d", "out-8", 211 "-splitindex", 212 "-Xdoclint:none", 213 "-sourcepath", testSrc, 214 "-use", 215 "pkg", "pkg1", "pkg2", "pkg3"); 216 checkExit(Exit.OK); 217 checkInvalidUsageIndexTag(); 218 checkSearchOutput(true); 219 checkSplitIndex(); 220 checkSplitIndexSearchTagDuplication(); 221 checkJqueryAndImageFiles(true); 222 checkSearchJS(); 223 checkFiles(true, 224 "member-search-index.js", 225 "package-search-index.js", 226 "tag-search-index.js", 227 "type-search-index.js"); 228 } 229 230 @Test 231 public void test9() { 232 javadoc("-d", "out-9", 233 "-sourcepath", testSrc, 234 "-javafx", 235 "--disable-javafx-strict-checks", 236 "-package", 237 "-use", 238 "pkgfx", "pkg3"); 239 checkExit(Exit.OK); 240 checkSearchOutput(true); 241 checkJavaFXOutput(); 242 checkJqueryAndImageFiles(true); 243 checkSearchJS(); 244 checkFiles(false, 245 "tag-search-index.js"); 246 checkFiles(true, 247 "member-search-index.js", 248 "package-search-index.js", 249 "type-search-index.js"); 250 } 251 252 @Test 253 public void testURLEncoding() { 254 javadoc("-d", "out-encode-html5", 255 "-Xdoclint:none", 256 "-sourcepath", testSrc, 257 "-use", 258 "pkg", "pkg1", "pkg2", "pkg3"); 259 checkExit(Exit.OK); 260 checkSearchJS(); 261 checkSearchIndex(true); 262 } 263 264 @Test 265 public void testJapaneseLocale() { 266 javadoc("-locale", "ja_JP", 313 checkOutput("member-search-index.js", expectedOutput, 314 "{\"p\":\"pkg\",\"c\":\"AnotherClass\",\"l\":\"AnotherClass()\",\"url\":\"%3Cinit%3E()\"}", 315 "{\"p\":\"pkg1\",\"c\":\"RegClass\",\"l\":\"RegClass()\",\"url\":\"%3Cinit%3E()\"}", 316 "{\"p\":\"pkg2\",\"c\":\"TestError\",\"l\":\"TestError()\",\"url\":\"%3Cinit%3E()\"}", 317 "{\"p\":\"pkg\",\"c\":\"AnotherClass\",\"l\":\"method(byte[], int, String)\",\"url\":\"method(byte[],int,java.lang.String)\"}"); 318 checkOutput("member-search-index.js", !expectedOutput, 319 "{\"p\":\"pkg\",\"c\":\"AnotherClass\",\"l\":\"method(RegClass)\",\"url\":\"method-pkg1.RegClass-\"}", 320 "{\"p\":\"pkg2\",\"c\":\"TestClass\",\"l\":\"TestClass()\",\"url\":\"TestClass--\"}", 321 "{\"p\":\"pkg\",\"c\":\"TestError\",\"l\":\"TestError()\",\"url\":\"TestError--\"}", 322 "{\"p\":\"pkg\",\"c\":\"AnotherClass\",\"l\":\"method(byte[], int, String)\",\"url\":\"method-byte:A-int-java.lang.String-\"}"); 323 } 324 325 void checkSearchOutput(boolean expectedOutput, boolean moduleDirectoriesVar) { 326 checkSearchOutput("index.html", expectedOutput, moduleDirectoriesVar); 327 } 328 329 void checkSearchOutput(String fileName, boolean expectedOutput, boolean moduleDirectoriesVar) { 330 // Test for search related markup 331 checkOutput(fileName, expectedOutput, 332 "<link rel=\"stylesheet\" type=\"text/css\" href=\"script-dir/jquery-ui.css\" title=\"Style\">\n", 333 "<script type=\"text/javascript\" src=\"script-dir/jquery-3.4.1.js\"></script>\n", 334 "<script type=\"text/javascript\" src=\"script-dir/jquery-ui.js\"></script>", 335 "var pathtoroot = \"./\";\n" 336 + "loadScripts(document, 'script');", 337 "<div class=\"navListSearch\">", 338 "<label for=\"search\">SEARCH:</label>\n" 339 + "<input type=\"text\" id=\"search\" value=\"search\" disabled=\"disabled\">\n" 340 + "<input type=\"reset\" id=\"reset\" value=\"reset\" disabled=\"disabled\">\n"); 341 checkOutput(fileName, true, 342 "<div class=\"flexBox\">"); 343 } 344 345 void checkSingleIndex(boolean expectedOutput, boolean html5) { 346 String html_span_see_span = html5 ? "html%3Cspan%3Esee%3C/span%3E" : "html-span-see-/span-"; 347 348 // Test for search tags markup in index file. 349 checkOutput("index-all.html", expectedOutput, 350 "<dt><span class=\"searchTagLink\"><a href=\"pkg/package-summary.html#phrasewithspaces\">" 351 + "phrase with spaces</a></span> - Search tag in package pkg</dt>", 352 "<dt><span class=\"searchTagLink\"><a href=\"pkg/package-summary.html#pkg\">" 353 + "pkg</a></span> - Search tag in package pkg</dt>", 354 "<dt><span class=\"searchTagLink\"><a href=\"pkg/package-summary.html#pkg2.5\">" 355 + "pkg2.5</a></span> - Search tag in package pkg</dt>", 356 "<dt><span class=\"searchTagLink\"><a href=\"pkg/package-summary.html#r\">" 357 + "r</a></span> - Search tag in package pkg</dt>", 358 "<dt><span class=\"searchTagLink\"><a href=\"pkg1/RegClass.html#searchphrase\">" 359 + "search phrase</a></span> - Search tag in class pkg1.RegClass</dt>", 360 "<dt><span class=\"searchTagLink\"><a href=\"pkg1/RegClass.html#SearchWordWithDescription\">" 361 + "SearchWordWithDescription</a></span> - Search tag in pkg1.RegClass.CONSTANT_FIELD_1</dt>", 362 "<dt><span class=\"searchTagLink\"><a href=\"pkg2/TestAnnotationType.html#searchphrasewithdescdeprecated\">" 363 + "search phrase with desc deprecated</a></span> - Search tag in annotation type pkg2.TestAnnotationType</dt>", 364 "<dt><span class=\"searchTagLink\"><a href=\"pkg2/TestClass.html#SearchTagDeprecatedClass\">" 365 + "SearchTagDeprecatedClass</a></span> - Search tag in class pkg2.TestClass</dt>", 366 "<dt><span class=\"searchTagLink\"><a href=\"pkg2/TestEnum.html#searchphrasedeprecated\">" 367 + "search phrase deprecated</a></span> - Search tag in pkg2.TestEnum.ONE</dt>", 368 "<dt><span class=\"searchTagLink\"><a href=\"pkg2/TestEnum.html#searchphrasedeprecated\">" 369 + "search phrase deprecated</a></span> - Search tag in pkg2.TestEnum.ONE</dt>", 370 "<dt><span class=\"searchTagLink\"><a href=\"pkg2/TestError.html#SearchTagDeprecatedMethod\">" 371 + "SearchTagDeprecatedMethod</a></span> - Search tag in pkg2.TestError.TestError()</dt>", 372 "<dt><span class=\"searchTagLink\"><a href=\"pkg2/TestError.html#SearchTagDeprecatedMethod\">" 373 + "SearchTagDeprecatedMethod</a></span> - Search tag in pkg2.TestError.TestError()</dt>", 374 "<dt><span class=\"searchTagLink\"><a href=\"pkg/package-summary.html#SingleWord\">" 375 + "SingleWord</a></span> - Search tag in package pkg</dt>", 376 "<dt><span class=\"searchTagLink\"><a href=\"pkg/AnotherClass.ModalExclusionType.html" 377 + "#nested%7B@indexnested_tag_test%7D\">nested {@index nested_tag_test}</a></span> - " 378 + "Search tag in pkg.AnotherClass.ModalExclusionType.NO_EXCLUDE</dt>", 379 "<dt><span class=\"searchTagLink\"><a href=\"pkg/AnotherClass.ModalExclusionType.html" 380 + "#" + html_span_see_span + "\">html <span> see </span></a></span> - Search " 381 + "tag in pkg.AnotherClass.ModalExclusionType.APPLICATION_EXCLUDE</dt>", 382 "<dt><span class=\"searchTagLink\"><a href=\"pkg/AnotherClass.html#quoted\">quoted</a>" 383 + "</span> - Search tag in pkg.AnotherClass.CONSTANT1</dt>", 384 "<dt><span class=\"memberNameLink\"><a href=\"pkg2/TestEnum.html#ONE\">ONE</a></span> - " 385 + "pkg2.<a href=\"pkg2/TestEnum.html\" title=\"enum in pkg2\">TestEnum</a></dt>", 386 "<dt><span class=\"memberNameLink\"><a href=\"pkg2/TestEnum.html#THREE\">THREE</a></span> - " 387 + "pkg2.<a href=\"pkg2/TestEnum.html\" title=\"enum in pkg2\">TestEnum</a></dt>", 388 "<dt><span class=\"memberNameLink\"><a href=\"pkg2/TestEnum.html#TWO\">TWO</a></span> - " 389 + "pkg2.<a href=\"pkg2/TestEnum.html\" title=\"enum in pkg2\">TestEnum</a></dt>"); 390 checkOutput("index-all.html", true, 391 "<div class=\"deprecationComment\">class_test1 passes. Search tag" 392 + " <span id=\"SearchTagDeprecatedClass\" class=\"searchTagResult\">SearchTagDeprecatedClass</span></div>", 393 "<div class=\"deprecationComment\">error_test3 passes. Search tag for\n" 394 + " method <span id=\"SearchTagDeprecatedMethod\" class=\"searchTagResult\">SearchTagDeprecatedMethod</span></div>"); 395 } 396 397 void checkSplitIndex() { 398 // Test for search tags markup in split index file. 399 checkOutput("index-files/index-13.html", true, 400 "<dt><span class=\"searchTagLink\"><a href=\"../pkg1/RegClass.html#searchphrase\">" 401 + "search phrase</a></span> - Search tag in class pkg1.RegClass</dt>", 402 "<dt><span class=\"searchTagLink\"><a href=\"../pkg1/RegClass.html#SearchWordWithDescription\">" 403 + "SearchWordWithDescription</a></span> - Search tag in pkg1.RegClass.CONSTANT_FIELD_1</dt>", 404 "<dt><span class=\"searchTagLink\"><a href=\"../pkg2/TestAnnotationType.html#searchphrasewithdescdeprecated\">" 405 + "search phrase with desc deprecated</a></span> - Search tag in annotation type pkg2.TestAnnotationType</dt>", 406 "<dt><span class=\"searchTagLink\"><a href=\"../pkg2/TestClass.html#SearchTagDeprecatedClass\">" 407 + "SearchTagDeprecatedClass</a></span> - Search tag in class pkg2.TestClass</dt>", 408 "<dt><span class=\"searchTagLink\"><a href=\"../pkg2/TestEnum.html#searchphrasedeprecated\">" 409 + "search phrase deprecated</a></span> - Search tag in pkg2.TestEnum.ONE</dt>", 410 "<dt><span class=\"searchTagLink\"><a href=\"../pkg2/TestEnum.html#searchphrasedeprecated\">" 411 + "search phrase deprecated</a></span> - Search tag in pkg2.TestEnum.ONE</dt>", 412 "<dt><span class=\"searchTagLink\"><a href=\"../pkg2/TestError.html#SearchTagDeprecatedMethod\">" 413 + "SearchTagDeprecatedMethod</a></span> - Search tag in pkg2.TestError.TestError()</dt>", 414 "<dt><span class=\"searchTagLink\"><a href=\"../pkg2/TestError.html#SearchTagDeprecatedMethod\">" 415 + "SearchTagDeprecatedMethod</a></span> - Search tag in pkg2.TestError.TestError()</dt>", 416 "<dt><span class=\"searchTagLink\"><a href=\"../pkg/package-summary.html#SingleWord\">" 417 + "SingleWord</a></span> - Search tag in package pkg</dt>", 418 "<br><a href=\"../allclasses-index.html\">All Classes</a>" 419 + "<span class=\"verticalSeparator\">|</span>" 420 + "<a href=\"../allpackages-index.html\">All Packages</a>"); 421 checkOutput("index-files/index-10.html", true, 422 "<dt><span class=\"searchTagLink\"><a href=\"../pkg/package-summary.html#phrasewithspaces\">" 423 + "phrase with spaces</a></span> - Search tag in package pkg</dt>", 424 "<dt><span class=\"searchTagLink\"><a href=\"../pkg/package-summary.html#pkg\">" 425 + "pkg</a></span> - Search tag in package pkg</dt>", 426 "<dt><span class=\"searchTagLink\"><a href=\"../pkg/package-summary.html#pkg2.5\">" 427 + "pkg2.5</a></span> - Search tag in package pkg</dt>"); 428 checkOutput("index-files/index-12.html", true, 429 "<dt><span class=\"searchTagLink\"><a href=\"../pkg/package-summary.html#r\">" 430 + "r</a></span> - Search tag in package pkg</dt>"); 431 checkOutput("index-files/index-8.html", true, 432 "<dt><span class=\"searchTagLink\"><a href=\"../pkg/AnotherClass.ModalExclusionType.html" 433 + "#nested%7B@indexnested_tag_test%7D\">nested {@index nested_tag_test}</a></span> - " 434 + "Search tag in pkg.AnotherClass.ModalExclusionType.NO_EXCLUDE</dt>"); 435 checkOutput("index-files/index-5.html", true, 436 "<dt><span class=\"searchTagLink\"><a href=\"../pkg/AnotherClass.ModalExclusionType.html" 437 + "#html%3Cspan%3Esee%3C/span%3E\">html <span> see </span></a></span> - Search " 438 + "tag in pkg.AnotherClass.ModalExclusionType.APPLICATION_EXCLUDE</dt>"); 439 checkOutput("index-files/index-11.html", true, 440 "<dt><span class=\"searchTagLink\"><a href=\"../pkg/AnotherClass.html#quoted\">quoted</a>" 441 + "</span> - Search tag in pkg.AnotherClass.CONSTANT1</dt>"); 442 checkOutput("index-files/index-9.html", true, 443 "<dt><span class=\"memberNameLink\"><a href=\"../pkg2/TestEnum.html#ONE\">ONE</a>" 444 + "</span> - pkg2.<a href=\"../pkg2/TestEnum.html\" title=\"enum in pkg2\">TestEnum</a></dt>"); 445 checkOutput("index-files/index-14.html", true, 446 "<dt><span class=\"memberNameLink\"><a href=\"../pkg2/TestEnum.html#THREE\">THREE</a></span> - " 447 + "pkg2.<a href=\"../pkg2/TestEnum.html\" title=\"enum in pkg2\">TestEnum</a></dt>", 448 "<dt><span class=\"memberNameLink\"><a href=\"../pkg2/TestEnum.html#TWO\">TWO</a></span> - " 449 + "pkg2.<a href=\"../pkg2/TestEnum.html\" title=\"enum in pkg2\">TestEnum</a></dt>"); 450 } 451 452 void checkIndexNoComment() { 453 // Test for search tags markup in index file when javadoc is executed with -nocomment. 454 checkOutput("index-all.html", false, 455 "<dt><span class=\"searchTagLink\"><a href=\"pkg/package-summary.html#phrasewithspaces\">" 456 + "phrase with spaces</a></span> - Search tag in package pkg</dt>", 457 "<dt><span class=\"searchTagLink\"><a href=\"pkg/package-summary.html#pkg\">" 458 + "pkg</a></span> - Search tag in package pkg</dt>", 459 "<dt><span class=\"searchTagLink\"><a href=\"pkg/package-summary.html#pkg2.5\">" 460 + "pkg2.5</a></span> - Search tag in package pkg</dt>", 461 "<dt><span class=\"searchTagLink\"><a href=\"pkg/package-summary.html#r\">" 462 + "r</a></span> - Search tag in package pkg</dt>", 463 "<dt><span class=\"searchTagLink\"><a href=\"pkg1/RegClass.html#searchphrase\">" 464 + "search phrase</a></span> - Search tag in class pkg1.RegClass</dt>", 465 "<dt><span class=\"searchTagLink\"><a href=\"pkg1/RegClass.html#SearchWordWithDescription\">" 466 + "SearchWordWithDescription</a></span> - Search tag in pkg1.RegClass.CONSTANT_FIELD_1</dt>", 467 "<dt><span class=\"searchTagLink\"><a href=\"pkg2/TestAnnotationType.html#searchphrasewithdescdeprecated\">" 468 + "search phrase with desc deprecated</a></span> - Search tag in annotation type pkg2.TestAnnotationType</dt>", 469 "<dt><span class=\"searchTagLink\"><a href=\"pkg2/TestClass.html#SearchTagDeprecatedClass\">" 470 + "SearchTagDeprecatedClass</a></span> - Search tag in class pkg2.TestClass</dt>", 471 "<dt><span class=\"searchTagLink\"><a href=\"pkg/package-summary.html#SingleWord\">" 472 + "SingleWord</a></span> - Search tag in package pkg</dt>", 473 "<div class=\"deprecationComment\">class_test1 passes. Search tag" 474 + " <span id=\"SearchTagDeprecatedClass\">SearchTagDeprecatedClass</span></div>", 475 "<div class=\"deprecationComment\">error_test3 passes. Search tag for\n" 476 + " method <span id=\"SearchTagDeprecatedMethod\">SearchTagDeprecatedMethod</span></div>"); 477 checkOutput("index-all.html", true, 478 "<dt><span class=\"searchTagLink\"><a href=\"pkg2/TestEnum.html#searchphrasedeprecated\">" 479 + "search phrase deprecated</a></span> - Search tag in pkg2.TestEnum.ONE</dt>", 480 "<dt><span class=\"searchTagLink\"><a href=\"pkg2/TestError.html#SearchTagDeprecatedMethod\">" 481 + "SearchTagDeprecatedMethod</a></span> - Search tag in pkg2.TestError.TestError()</dt>"); 482 } 483 484 void checkIndexNoDeprecated() { 485 // Test for search tags markup in index file when javadoc is executed using -nodeprecated. 486 checkOutput("index-all.html", true, 487 "<dt><span class=\"searchTagLink\"><a href=\"pkg/package-summary.html#phrasewithspaces\">" 488 + "phrase with spaces</a></span> - Search tag in package pkg</dt>", 489 "<dt><span class=\"searchTagLink\"><a href=\"pkg1/RegClass.html#searchphrase\">" 490 + "search phrase</a></span> - Search tag in class pkg1.RegClass</dt>", 491 "<dt><span class=\"searchTagLink\"><a href=\"pkg1/RegClass.html#SearchWordWithDescription\">" 492 + "SearchWordWithDescription</a></span> - Search tag in pkg1.RegClass.CONSTANT_FIELD_1</dt>", 493 "<dt><span class=\"searchTagLink\"><a href=\"pkg/package-summary.html#SingleWord\">" 494 + "SingleWord</a></span> - Search tag in package pkg</dt>"); 495 checkOutput("index-all.html", false, 496 "<dt><span class=\"searchTagLink\"><a href=\"pkg2/TestAnnotationType.html#searchphrasewithdescdeprecated\">" 497 + "search phrase with desc deprecated</a></span> - Search tag in annotation type pkg2.TestAnnotationType</dt>", 498 "<dt><span class=\"searchTagLink\"><a href=\"pkg2/TestClass.html#SearchTagDeprecatedClass\">" 499 + "SearchTagDeprecatedClass</a></span> - Search tag in class pkg2.TestClass</dt>", 500 "<dt><span class=\"searchTagLink\"><a href=\"pkg2/TestEnum.html#searchphrasedeprecated\">" 501 + "search phrase deprecated</a></span> - Search tag in pkg2.TestEnum.ONE</dt>", 502 "<dt><span class=\"searchTagLink\"><a href=\"pkg2/TestError.html#SearchTagDeprecatedMethod\">" 503 + "SearchTagDeprecatedMethod</a></span> - Search tag in pkg2.TestError.TestError()</dt>", 504 "<div class=\"deprecationComment\">class_test1 passes. Search tag" 505 + " <span id=\"SearchTagDeprecatedClass\">SearchTagDeprecatedClass</span></div>", 506 "<div class=\"deprecationComment\">error_test3 passes. Search tag for\n" 507 + " method <span id=\"SearchTagDeprecatedMethod\">SearchTagDeprecatedMethod</span></div>"); 508 } 509 510 void checkJavaFXOutput() { 511 checkOutput("index-all.html", false, "test treat as private"); 512 } 513 514 void checkInvalidUsageIndexTag() { 515 checkOutput(Output.OUT, true, 516 "AnotherClass.java:29: warning - invalid usage of tag {@index", 517 "AnotherClass.java:39: warning - invalid usage of tag {@index", 518 "AnotherClass.java:34: warning - invalid usage of tag {@index", 519 "AnotherClass.java:68: warning - invalid usage of tag {@index"); 520 } 521 522 void checkJqueryAndImageFiles(boolean expectedOutput) { 523 checkFiles(expectedOutput, 524 "search.js", 525 "script-dir/jquery-3.4.1.js", 526 "script-dir/jquery-ui.js", 527 "script-dir/jquery-ui.css", 528 "script-dir/jquery-ui.min.js", 529 "script-dir/jquery-ui.min.css", 530 "script-dir/jquery-ui.structure.min.css", 531 "script-dir/jquery-ui.structure.css", 532 "script-dir/external/jquery/jquery.js", 533 "script-dir/images/ui-bg_glass_65_dadada_1x400.png", 534 "script-dir/images/ui-icons_454545_256x240.png", 535 "script-dir/images/ui-bg_glass_95_fef1ec_1x400.png", 536 "script-dir/images/ui-bg_glass_75_dadada_1x400.png", 537 "script-dir/images/ui-bg_highlight-soft_75_cccccc_1x100.png", 538 "script-dir/images/ui-icons_888888_256x240.png", 539 "script-dir/images/ui-icons_2e83ff_256x240.png", 540 "script-dir/images/ui-icons_cd0a0a_256x240.png", 541 "script-dir/images/ui-bg_glass_55_fbf9ee_1x400.png", 542 "script-dir/images/ui-icons_222222_256x240.png", 543 "script-dir/images/ui-bg_glass_75_e6e6e6_1x400.png", 544 "resources/x.png", 545 "resources/glass.png"); 546 } 547 548 void checkSearchJS() { 549 checkOutput("search.js", true, 550 "function concatResults(a1, a2) {", 551 "$(\"#search\").on('click keydown paste', function() {\n" 552 + " if ($(this).val() == watermark) {\n" 561 + " } else if (ui.item.category === catPackages && ui.item.m) {\n" 562 + " return ui.item.m + slash;\n" 563 + " } else if ((ui.item.category === catTypes && ui.item.p) || ui.item.category === catMembers) {\n" 564 + " $.each(packageSearchIndex, function(index, item) {\n" 565 + " if (item.m && ui.item.p == item.l) {\n" 566 + " urlPrefix = item.m + slash;\n" 567 + " }\n" 568 + " });\n" 569 + " return urlPrefix;\n" 570 + " } else {\n" 571 + " return urlPrefix;\n" 572 + " }\n" 573 + " return urlPrefix;\n" 574 + "}", 575 "url += ui.item.l;"); 576 } 577 578 void checkSingleIndexSearchTagDuplication() { 579 // Test for search tags duplication in index file. 580 checkOutput("index-all.html", true, 581 "<dt><span class=\"searchTagLink\"><a href=\"pkg2/TestError.html#SearchTagDeprecatedMethod\">" 582 + "SearchTagDeprecatedMethod</a></span> - Search tag in pkg2.TestError.TestError()</dt>\n" 583 + "<dd>with description</dd>"); 584 checkOutput("index-all.html", false, 585 "<dt><span class=\"searchTagLink\"><a href=\"pkg2/TestError.html#SearchTagDeprecatedMethod\">" 586 + "SearchTagDeprecatedMethod</a></span> - Search tag in pkg2.TestError.TestError()</dt>\n" 587 + "<dd>with description</dd>\n" 588 + "<dt><span class=\"searchTagLink\"><a href=\"pkg2/TestError.html#SearchTagDeprecatedMethod\">" 589 + "SearchTagDeprecatedMethod</a></span> - Search tag in pkg2.TestError.TestError()</dt>\n" 590 + "<dd>with description</dd>"); 591 } 592 593 void checkSplitIndexSearchTagDuplication() { 594 // Test for search tags duplication in index file. 595 checkOutput("index-files/index-13.html", true, 596 "<dt><span class=\"searchTagLink\"><a href=\"../pkg2/TestError.html#SearchTagDeprecatedMethod\">" 597 + "SearchTagDeprecatedMethod</a></span> - Search tag in pkg2.TestError.TestError()</dt>\n" 598 + "<dd>with description</dd>"); 599 checkOutput("index-files/index-13.html", false, 600 "<dt><span class=\"searchTagLink\"><a href=\"../pkg2/TestError.html#SearchTagDeprecatedMethod\">" 601 + "SearchTagDeprecatedMethod</a></span> - Search tag in pkg2.TestError.TestError()</dt>\n" 602 + "<dd>with description</dd>\n" 603 + "<dt><span class=\"searchTagLink\"><a href=\"../pkg2/TestError.html#SearchTagDeprecatedMethod\">" 604 + "SearchTagDeprecatedMethod</a></span> - Search tag in pkg2.TestError.TestError()</dt>\n" 605 + "<dd>with description</dd>"); 606 } 607 608 void checkAllPkgsAllClasses() { 609 checkOutput("allclasses-index.html", true, 610 "<div class=\"typeSummary\">\n" 611 + "<div role=\"tablist\" aria-orientation=\"horizontal\"><button role=\"tab\"" 612 + " aria-selected=\"true\" aria-controls=\"typeSummary_tabpanel\" tabindex=\"0\"" 613 + " onkeydown=\"switchTab(event)\" id=\"t0\" class=\"activeTableTab\">All Classes</button>" 614 + "<button role=\"tab\" aria-selected=\"false\" aria-controls=\"typeSummary_tabpanel\"" 615 + " tabindex=\"-1\" onkeydown=\"switchTab(event)\" id=\"t1\" class=\"tableTab\"" 616 + " onclick=\"show(1);\">Interface Summary</button><button role=\"tab\" aria-selected=\"false\"" 617 + " aria-controls=\"typeSummary_tabpanel\" tabindex=\"-1\" onkeydown=\"switchTab(event)\"" 618 + " id=\"t2\" class=\"tableTab\" onclick=\"show(2);\">Class Summary</button><button role=\"tab\"" 619 + " aria-selected=\"false\" aria-controls=\"typeSummary_tabpanel\" tabindex=\"-1\"" 620 + " onkeydown=\"switchTab(event)\" id=\"t3\" class=\"tableTab\" onclick=\"show(4);\">" 621 + "Enum Summary</button><button role=\"tab\" aria-selected=\"false\"" 622 + " aria-controls=\"typeSummary_tabpanel\" tabindex=\"-1\" onkeydown=\"switchTab(event)\"" 623 + " id=\"t4\" class=\"tableTab\" onclick=\"show(8);\">Exception Summary</button><button role=\"tab\"" 624 + " aria-selected=\"false\" aria-controls=\"typeSummary_tabpanel\" tabindex=\"-1\"" 625 + " onkeydown=\"switchTab(event)\" id=\"t5\" class=\"tableTab\" onclick=\"show(16);\">" 626 + "Error Summary</button><button role=\"tab\" aria-selected=\"false\"" 627 + " aria-controls=\"typeSummary_tabpanel\" tabindex=\"-1\" onkeydown=\"switchTab(event)\"" 628 + " id=\"t6\" class=\"tableTab\" onclick=\"show(32);\">Annotation Types Summary</button></div>\n" 629 + "<div id=\"typeSummary_tabpanel\" role=\"tabpanel\">\n" 630 + "<table aria-labelledby=\"t0\">\n" 631 + "<thead>\n" 632 + "<tr>\n" 633 + "<th class=\"colFirst\" scope=\"col\">Class</th>\n" 634 + "<th class=\"colLast\" scope=\"col\">Description</th>\n" 635 + "</tr>", 636 "var data = {\"i0\":32,\"i1\":2,\"i2\":4,\"i3\":2,\"i4\":2,\"i5\":1,\"i6\":2,\"i7\":32," 637 + "\"i8\":2,\"i9\":4,\"i10\":16,\"i11\":16,\"i12\":8,\"i13\":8,\"i14\":1,\"i15\":2};"); 638 checkOutput("allpackages-index.html", true, 639 "<div class=\"packagesSummary\">\n<table>\n" 640 + "<caption><span>Package Summary</span><span class=\"tabEnd\"> </span></caption>\n" 641 + "<thead>\n" 642 + "<tr>\n" 643 + "<th class=\"colFirst\" scope=\"col\">Package</th>\n" 644 + "<th class=\"colLast\" scope=\"col\">Description</th>\n" 645 + "</tr>\n"); 646 checkOutput("type-search-index.js", true, 647 "{\"l\":\"All Classes\",\"url\":\"allclasses-index.html\"}"); 648 checkOutput("package-search-index.js", true, 649 "{\"l\":\"All Packages\",\"url\":\"allpackages-index.html\"}"); 650 checkOutput("index-all.html", true, 651 "<br><a href=\"allclasses-index.html\">All Classes</a>" 652 + "<span class=\"verticalSeparator\">|</span>" 653 + "<a href=\"allpackages-index.html\">All Packages</a>"); 654 } 655 } |