1/*
2 * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23
24/*
25 * @test
26 * @bug 8141492 8071982 8141636 8147890 8166175 8168965 8176794 8175218
27 * @summary Test the search feature of javadoc.
28 * @author bpatel
29 * @library ../lib
30 * @modules jdk.javadoc/jdk.javadoc.internal.tool
31 * @build JavadocTester
32 * @run main TestSearch
33 */
34public class TestSearch extends JavadocTester {
35
36    public static void main(String... args) throws Exception {
37        TestSearch tester = new TestSearch();
38        tester.runTests();
39    }
40
41    @Test
42    void test1() {
43        javadoc("-d", "out-1", "-sourcepath", "-use", testSrc("UnnamedPkgClass.java"));
44        checkExit(Exit.OK);
45        checkSearchOutput("UnnamedPkgClass.html", true);
46        checkJqueryAndImageFiles(true);
47        checkSearchJS();
48        checkFiles(false,
49                "package-search-index.zip",
50                "tag-search-index.zip",
51                "package-search-index.js",
52                "tag-search-index.js");
53        checkFiles(true,
54                "member-search-index.zip",
55                "type-search-index.zip",
56                "member-search-index.js",
57                "type-search-index.js");
58    }
59
60    @Test
61    void test2() {
62        javadoc("-d", "out-2", "-Xdoclint:none", "-sourcepath", testSrc,
63                "-use", "pkg", "pkg1", "pkg2", "pkg3");
64        checkExit(Exit.OK);
65        checkInvalidUsageIndexTag();
66        checkSearchOutput(true);
67        checkSingleIndex(true);
68        checkJqueryAndImageFiles(true);
69        checkSearchJS();
70        checkFiles(true,
71                "member-search-index.zip",
72                "package-search-index.zip",
73                "tag-search-index.zip",
74                "type-search-index.zip",
75                "member-search-index.js",
76                "package-search-index.js",
77                "tag-search-index.js",
78                "type-search-index.js");
79    }
80
81    @Test
82    void test2a() {
83        javadoc("-d", "out-2a", "-Xdoclint:all", "-sourcepath", testSrc,
84                "-use", "pkg", "pkg1", "pkg2", "pkg3");
85        checkExit(Exit.ERROR);
86        checkDocLintErrors();
87        checkSearchOutput(true);
88        checkSingleIndex(true);
89        checkJqueryAndImageFiles(true);
90        checkSearchJS();
91        checkFiles(true,
92                "member-search-index.zip",
93                "package-search-index.zip",
94                "tag-search-index.zip",
95                "type-search-index.zip",
96                "member-search-index.js",
97                "package-search-index.js",
98                "tag-search-index.js",
99                "type-search-index.js");
100    }
101
102    @Test
103    void test3() {
104        javadoc("-d", "out-3", "-noindex", "-Xdoclint:none",
105                "-sourcepath", testSrc,
106                "-use", "pkg", "pkg1", "pkg2", "pkg3");
107        checkExit(Exit.OK);
108        checkSearchOutput(false);
109        checkJqueryAndImageFiles(false);
110        checkFiles(false,
111                "member-search-index.zip",
112                "package-search-index.zip",
113                "tag-search-index.zip",
114                "type-search-index.zip",
115                "member-search-index.js",
116                "package-search-index.js",
117                "tag-search-index.js",
118                "type-search-index.js",
119                "index-all.html");
120    }
121
122    @Test
123    void test4() {
124        javadoc("-d", "out-4", "-html5", "-Xdoclint:none",
125                "-sourcepath", testSrc,
126                "-use", "pkg", "pkg1", "pkg2", "pkg3");
127        checkExit(Exit.OK);
128        checkSearchOutput(true);
129        checkSingleIndex(true);
130        checkJqueryAndImageFiles(true);
131        checkSearchJS();
132        checkFiles(true,
133                "member-search-index.zip",
134                "package-search-index.zip",
135                "tag-search-index.zip",
136                "type-search-index.zip",
137                "member-search-index.js",
138                "package-search-index.js",
139                "tag-search-index.js",
140                "type-search-index.js");
141    }
142
143    @Test
144    void test5() {
145        javadoc("-d", "out-5", "-noindex", "-html5", "-Xdoclint:none",
146                "-sourcepath", testSrc,
147                "-use", "pkg", "pkg1", "pkg2", "pkg3");
148        checkExit(Exit.OK);
149        checkSearchOutput(false);
150        checkJqueryAndImageFiles(false);
151        checkFiles(false,
152                "member-search-index.zip",
153                "package-search-index.zip",
154                "tag-search-index.zip",
155                "type-search-index.zip",
156                "member-search-index.js",
157                "package-search-index.js",
158                "tag-search-index.js",
159                "type-search-index.js",
160                "index-all.html");
161    }
162
163    @Test
164    void test6() {
165        javadoc("-d", "out-6", "-nocomment", "-Xdoclint:none",
166                "-sourcepath", testSrc,
167                "-use", "pkg", "pkg1", "pkg2", "pkg3");
168        checkExit(Exit.OK);
169        checkSearchOutput(true);
170        checkIndexNoComment();
171        checkJqueryAndImageFiles(true);
172        checkSearchJS();
173        checkFiles(true,
174                "member-search-index.zip",
175                "package-search-index.zip",
176                "tag-search-index.zip",
177                "type-search-index.zip",
178                "member-search-index.js",
179                "package-search-index.js",
180                "tag-search-index.js",
181                "type-search-index.js");
182    }
183
184    @Test
185    void test7() {
186        javadoc("-d", "out-7", "-nodeprecated", "-Xdoclint:none",
187                "-sourcepath", testSrc,
188                "-use", "pkg", "pkg1", "pkg2", "pkg3");
189        checkExit(Exit.OK);
190        checkSearchOutput(true);
191        checkIndexNoDeprecated();
192        checkJqueryAndImageFiles(true);
193        checkSearchJS();
194        checkFiles(true,
195                "member-search-index.zip",
196                "package-search-index.zip",
197                "tag-search-index.zip",
198                "type-search-index.zip",
199                "member-search-index.js",
200                "package-search-index.js",
201                "tag-search-index.js",
202                "type-search-index.js");
203    }
204
205    @Test
206    void test8() {
207        javadoc("-d", "out-8", "-splitindex", "-Xdoclint:none", "-sourcepath", testSrc,
208                "-use", "pkg", "pkg1", "pkg2", "pkg3");
209        checkExit(Exit.OK);
210        checkInvalidUsageIndexTag();
211        checkSearchOutput(true);
212        checkSplitIndex();
213        checkJqueryAndImageFiles(true);
214        checkSearchJS();
215        checkFiles(true,
216                "member-search-index.zip",
217                "package-search-index.zip",
218                "tag-search-index.zip",
219                "type-search-index.zip",
220                "member-search-index.js",
221                "package-search-index.js",
222                "tag-search-index.js",
223                "type-search-index.js");
224    }
225
226    @Test
227    void test9() {
228        javadoc("-d", "out-9", "-sourcepath", testSrc, "-javafx", "-package",
229                "-use", "pkgfx", "pkg3");
230        checkExit(Exit.OK);
231        checkSearchOutput(true);
232        checkJavaFXOutput();
233        checkJqueryAndImageFiles(true);
234        checkSearchJS();
235        checkFiles(false,
236                "tag-search-index.zip",
237                "tag-search-index.js");
238        checkFiles(true,
239                "member-search-index.zip",
240                "package-search-index.zip",
241                "type-search-index.zip",
242                "member-search-index.js",
243                "package-search-index.js",
244                "type-search-index.js");
245    }
246
247    void checkDocLintErrors() {
248        checkOutput(Output.OUT, true,
249                "A sample method. Testing search tag for {@index \"unclosed quote}.",
250                "Another test class. Testing empty {@index }.",
251                "Constant field. Testing no text in index tag {@index}.",
252                "A test field. Testing only white-spaces in index tag text {@index       }.");
253    }
254
255    void checkSearchOutput(boolean expectedOutput) {
256        checkSearchOutput("overview-summary.html", expectedOutput);
257    }
258
259    void checkSearchOutput(String fileName, boolean expectedOutput) {
260        // Test for search related markup
261        checkOutput(fileName, expectedOutput,
262                "<link rel=\"stylesheet\" type=\"text/css\" href=\"jquery/jquery-ui.css\" title=\"Style\">\n",
263                "<script type=\"text/javascript\" src=\"jquery/jszip/dist/jszip.min.js\"></script>\n",
264                "<script type=\"text/javascript\" src=\"jquery/jszip-utils/dist/jszip-utils.min.js\"></script>\n",
265                "<!--[if IE]>\n",
266                "<script type=\"text/javascript\" src=\"jquery/jszip-utils/dist/jszip-utils-ie.min.js\"></script>\n",
267                "<![endif]-->\n",
268                "<script type=\"text/javascript\" src=\"jquery/jquery-1.10.2.js\"></script>\n",
269                "<script type=\"text/javascript\" src=\"jquery/jquery-ui.js\"></script>",
270                "var pathtoroot = \"./\";loadScripts(document, 'script');",
271                "<ul class=\"navListSearch\">\n",
272                "<li><span>SEARCH:&nbsp;</span>\n",
273                "<input type=\"text\" id=\"search\" value=\" \" disabled=\"disabled\">\n",
274                "<input type=\"reset\" id=\"reset\" value=\" \" disabled=\"disabled\">\n");
275        checkOutput(fileName, true,
276                "<div class=\"fixedNav\">");
277    }
278
279    void checkSingleIndex(boolean expectedOutput) {
280        // Test for search tags markup in index file.
281        checkOutput("index-all.html", expectedOutput,
282                "<dt><span class=\"searchTagLink\"><a href=\"pkg/package-summary.html#phrasewithspaces\">"
283                + "phrase with spaces</a></span> - Search tag in pkg</dt>",
284                "<dt><span class=\"searchTagLink\"><a href=\"pkg/package-summary.html#pkg\">"
285                + "pkg</a></span> - Search tag in pkg</dt>",
286                "<dt><span class=\"searchTagLink\"><a href=\"pkg/package-summary.html#pkg2.5\">"
287                + "pkg2.5</a></span> - Search tag in pkg</dt>",
288                "<dt><span class=\"searchTagLink\"><a href=\"pkg/package-summary.html#r\">"
289                + "r</a></span> - Search tag in pkg</dt>",
290                "<dt><span class=\"searchTagLink\"><a href=\"pkg1/RegClass.html#searchphrase\">"
291                + "search phrase</a></span> - Search tag in pkg1.RegClass</dt>",
292                "<dt><span class=\"searchTagLink\"><a href=\"pkg1/RegClass.html#SearchWordWithDescription\">"
293                + "SearchWordWithDescription</a></span> - Search tag in pkg1.RegClass.CONSTANT_FIELD_1</dt>",
294                "<dt><span class=\"searchTagLink\"><a href=\"pkg2/TestAnnotationType.html#searchphrasewithdescdeprecated\">"
295                + "search phrase with desc deprecated</a></span> - Search tag in pkg2.TestAnnotationType</dt>",
296                "<dt><span class=\"searchTagLink\"><a href=\"pkg2/TestClass.html#SearchTagDeprecatedClass\">"
297                + "SearchTagDeprecatedClass</a></span> - Search tag in pkg2.TestClass</dt>",
298                "<dt><span class=\"searchTagLink\"><a href=\"pkg2/TestEnum.html#searchphrasedeprecated\">"
299                + "search phrase deprecated</a></span> - Search tag in pkg2.TestEnum.ONE</dt>",
300                "<dt><span class=\"searchTagLink\"><a href=\"pkg2/TestEnum.html#searchphrasedeprecated\">"
301                + "search phrase deprecated</a></span> - Search tag in pkg2.TestEnum.ONE</dt>",
302                "<dt><span class=\"searchTagLink\"><a href=\"pkg2/TestError.html#SearchTagDeprecatedMethod\">"
303                + "SearchTagDeprecatedMethod</a></span> - Search tag in pkg2.TestError</dt>",
304                "<dt><span class=\"searchTagLink\"><a href=\"pkg2/TestError.html#SearchTagDeprecatedMethod\">"
305                + "SearchTagDeprecatedMethod</a></span> - Search tag in pkg2.TestError</dt>",
306                "<dt><span class=\"searchTagLink\"><a href=\"pkg/package-summary.html#SingleWord\">"
307                + "SingleWord</a></span> - Search tag in pkg</dt>",
308                "<dt><span class=\"searchTagLink\"><a href=\"pkg/AnotherClass.ModalExclusionType.html"
309                + "#nested%7B@indexnested_tag_test%7D\">nested {@index nested_tag_test}</a></span> - "
310                + "Search tag in pkg.AnotherClass.ModalExclusionType.NO_EXCLUDE</dt>",
311                "<dt><span class=\"searchTagLink\"><a href=\"pkg/AnotherClass.ModalExclusionType.html"
312                + "#html-span-see-/span-\">html &lt;span&gt; see &lt;/span&gt;</a></span> - Search "
313                + "tag in pkg.AnotherClass.ModalExclusionType.APPLICATION_EXCLUDE</dt>",
314                "<dt><span class=\"searchTagLink\"><a href=\"pkg/AnotherClass.html#quoted\">quoted</a>"
315                + "</span> - Search tag in pkg.AnotherClass.CONSTANT1</dt>",
316                "<dt><span class=\"memberNameLink\"><a href=\"pkg2/TestEnum.html#ONE\">ONE</a></span> - "
317                + "pkg2.<a href=\"pkg2/TestEnum.html\" title=\"enum in pkg2\">TestEnum</a></dt>",
318                "<dt><span class=\"memberNameLink\"><a href=\"pkg2/TestEnum.html#THREE\">THREE</a></span> - "
319                + "pkg2.<a href=\"pkg2/TestEnum.html\" title=\"enum in pkg2\">TestEnum</a></dt>",
320                "<dt><span class=\"memberNameLink\"><a href=\"pkg2/TestEnum.html#TWO\">TWO</a></span> - "
321                + "pkg2.<a href=\"pkg2/TestEnum.html\" title=\"enum in pkg2\">TestEnum</a></dt>");
322        checkOutput("index-all.html", true,
323                "<div class=\"block\"><span class=\"deprecationComment\">class_test1 passes. Search tag"
324                + " <a id=\"SearchTagDeprecatedClass\" class=\"searchTagResult\">SearchTagDeprecatedClass</a></span></div>",
325                "<div class=\"block\"><span class=\"deprecationComment\">error_test3 passes. Search tag for\n"
326                + " method <a id=\"SearchTagDeprecatedMethod\" class=\"searchTagResult\">SearchTagDeprecatedMethod</a></span></div>");
327    }
328
329    void checkSplitIndex() {
330        // Test for search tags markup in split index file.
331        checkOutput("index-files/index-13.html", true,
332                "<dt><span class=\"searchTagLink\"><a href=\"../pkg1/RegClass.html#searchphrase\">"
333                + "search phrase</a></span> - Search tag in pkg1.RegClass</dt>",
334                "<dt><span class=\"searchTagLink\"><a href=\"../pkg1/RegClass.html#SearchWordWithDescription\">"
335                + "SearchWordWithDescription</a></span> - Search tag in pkg1.RegClass.CONSTANT_FIELD_1</dt>",
336                "<dt><span class=\"searchTagLink\"><a href=\"../pkg2/TestAnnotationType.html#searchphrasewithdescdeprecated\">"
337                + "search phrase with desc deprecated</a></span> - Search tag in pkg2.TestAnnotationType</dt>",
338                "<dt><span class=\"searchTagLink\"><a href=\"../pkg2/TestClass.html#SearchTagDeprecatedClass\">"
339                + "SearchTagDeprecatedClass</a></span> - Search tag in pkg2.TestClass</dt>",
340                "<dt><span class=\"searchTagLink\"><a href=\"../pkg2/TestEnum.html#searchphrasedeprecated\">"
341                + "search phrase deprecated</a></span> - Search tag in pkg2.TestEnum.ONE</dt>",
342                "<dt><span class=\"searchTagLink\"><a href=\"../pkg2/TestEnum.html#searchphrasedeprecated\">"
343                + "search phrase deprecated</a></span> - Search tag in pkg2.TestEnum.ONE</dt>",
344                "<dt><span class=\"searchTagLink\"><a href=\"../pkg2/TestError.html#SearchTagDeprecatedMethod\">"
345                + "SearchTagDeprecatedMethod</a></span> - Search tag in pkg2.TestError</dt>",
346                "<dt><span class=\"searchTagLink\"><a href=\"../pkg2/TestError.html#SearchTagDeprecatedMethod\">"
347                + "SearchTagDeprecatedMethod</a></span> - Search tag in pkg2.TestError</dt>",
348                "<dt><span class=\"searchTagLink\"><a href=\"../pkg/package-summary.html#SingleWord\">"
349                + "SingleWord</a></span> - Search tag in pkg</dt>");
350        checkOutput("index-files/index-10.html", true,
351                "<dt><span class=\"searchTagLink\"><a href=\"../pkg/package-summary.html#phrasewithspaces\">"
352                + "phrase with spaces</a></span> - Search tag in pkg</dt>",
353                "<dt><span class=\"searchTagLink\"><a href=\"../pkg/package-summary.html#pkg\">"
354                + "pkg</a></span> - Search tag in pkg</dt>",
355                "<dt><span class=\"searchTagLink\"><a href=\"../pkg/package-summary.html#pkg2.5\">"
356                + "pkg2.5</a></span> - Search tag in pkg</dt>");
357        checkOutput("index-files/index-12.html", true,
358                "<dt><span class=\"searchTagLink\"><a href=\"../pkg/package-summary.html#r\">"
359                + "r</a></span> - Search tag in pkg</dt>");
360        checkOutput("index-files/index-8.html", true,
361                "<dt><span class=\"searchTagLink\"><a href=\"../pkg/AnotherClass.ModalExclusionType.html"
362                + "#nested%7B@indexnested_tag_test%7D\">nested {@index nested_tag_test}</a></span> - "
363                + "Search tag in pkg.AnotherClass.ModalExclusionType.NO_EXCLUDE</dt>");
364        checkOutput("index-files/index-5.html", true,
365                "<dt><span class=\"searchTagLink\"><a href=\"../pkg/AnotherClass.ModalExclusionType.html"
366                + "#html-span-see-/span-\">html &lt;span&gt; see &lt;/span&gt;</a></span> - Search "
367                + "tag in pkg.AnotherClass.ModalExclusionType.APPLICATION_EXCLUDE</dt>");
368        checkOutput("index-files/index-11.html", true,
369                "<dt><span class=\"searchTagLink\"><a href=\"../pkg/AnotherClass.html#quoted\">quoted</a>"
370                + "</span> - Search tag in pkg.AnotherClass.CONSTANT1</dt>");
371        checkOutput("index-files/index-9.html", true,
372                "<dt><span class=\"memberNameLink\"><a href=\"../pkg2/TestEnum.html#ONE\">ONE</a>"
373                + "</span> - pkg2.<a href=\"../pkg2/TestEnum.html\" title=\"enum in pkg2\">TestEnum</a></dt>");
374        checkOutput("index-files/index-14.html", true,
375                "<dt><span class=\"memberNameLink\"><a href=\"../pkg2/TestEnum.html#THREE\">THREE</a></span> - "
376                + "pkg2.<a href=\"../pkg2/TestEnum.html\" title=\"enum in pkg2\">TestEnum</a></dt>",
377                "<dt><span class=\"memberNameLink\"><a href=\"../pkg2/TestEnum.html#TWO\">TWO</a></span> - "
378                + "pkg2.<a href=\"../pkg2/TestEnum.html\" title=\"enum in pkg2\">TestEnum</a></dt>");
379    }
380
381    void checkIndexNoComment() {
382        // Test for search tags markup in index file when javadoc is executed with -nocomment.
383        checkOutput("index-all.html", false,
384                "<dt><span class=\"searchTagLink\"><a href=\"pkg/package-summary.html#phrasewithspaces\">"
385                + "phrase with spaces</a></span> - Search tag in pkg</dt>",
386                "<dt><span class=\"searchTagLink\"><a href=\"pkg/package-summary.html#pkg\">"
387                + "pkg</a></span> - Search tag in pkg</dt>",
388                "<dt><span class=\"searchTagLink\"><a href=\"pkg/package-summary.html#pkg2.5\">"
389                + "pkg2.5</a></span> - Search tag in pkg</dt>",
390                "<dt><span class=\"searchTagLink\"><a href=\"pkg/package-summary.html#r\">"
391                + "r</a></span> - Search tag in pkg</dt>",
392                "<dt><span class=\"searchTagLink\"><a href=\"pkg1/RegClass.html#searchphrase\">"
393                + "search phrase</a></span> - Search tag in pkg1.RegClass</dt>",
394                "<dt><span class=\"searchTagLink\"><a href=\"pkg1/RegClass.html#SearchWordWithDescription\">"
395                + "SearchWordWithDescription</a></span> - Search tag in pkg1.RegClass.CONSTANT_FIELD_1</dt>",
396                "<dt><span class=\"searchTagLink\"><a href=\"pkg2/TestAnnotationType.html#searchphrasewithdescdeprecated\">"
397                + "search phrase with desc deprecated</a></span> - Search tag in pkg2.TestAnnotationType</dt>",
398                "<dt><span class=\"searchTagLink\"><a href=\"pkg2/TestClass.html#SearchTagDeprecatedClass\">"
399                + "SearchTagDeprecatedClass</a></span> - Search tag in pkg2.TestClass</dt>",
400                "<dt><span class=\"searchTagLink\"><a href=\"pkg/package-summary.html#SingleWord\">"
401                + "SingleWord</a></span> - Search tag in pkg</dt>",
402                "<div class=\"block\"><span class=\"deprecationComment\">class_test1 passes. Search tag"
403                + " <a id=\"SearchTagDeprecatedClass\">SearchTagDeprecatedClass</a></span></div>",
404                "<div class=\"block\"><span class=\"deprecationComment\">error_test3 passes. Search tag for\n"
405                + " method <a id=\"SearchTagDeprecatedMethod\">SearchTagDeprecatedMethod</a></span></div>");
406        checkOutput("index-all.html", true,
407                "<dt><span class=\"searchTagLink\"><a href=\"pkg2/TestEnum.html#searchphrasedeprecated\">"
408                + "search phrase deprecated</a></span> - Search tag in pkg2.TestEnum.ONE</dt>",
409                "<dt><span class=\"searchTagLink\"><a href=\"pkg2/TestError.html#SearchTagDeprecatedMethod\">"
410                + "SearchTagDeprecatedMethod</a></span> - Search tag in pkg2.TestError</dt>");
411    }
412
413    void checkIndexNoDeprecated() {
414        // Test for search tags markup in index file when javadoc is executed using -nodeprecated.
415        checkOutput("index-all.html", true,
416                "<dt><span class=\"searchTagLink\"><a href=\"pkg/package-summary.html#phrasewithspaces\">"
417                + "phrase with spaces</a></span> - Search tag in pkg</dt>",
418                "<dt><span class=\"searchTagLink\"><a href=\"pkg1/RegClass.html#searchphrase\">"
419                + "search phrase</a></span> - Search tag in pkg1.RegClass</dt>",
420                "<dt><span class=\"searchTagLink\"><a href=\"pkg1/RegClass.html#SearchWordWithDescription\">"
421                + "SearchWordWithDescription</a></span> - Search tag in pkg1.RegClass.CONSTANT_FIELD_1</dt>",
422                "<dt><span class=\"searchTagLink\"><a href=\"pkg/package-summary.html#SingleWord\">"
423                + "SingleWord</a></span> - Search tag in pkg</dt>");
424        checkOutput("index-all.html", false,
425                "<dt><span class=\"searchTagLink\"><a href=\"pkg2/TestAnnotationType.html#searchphrasewithdescdeprecated\">"
426                + "search phrase with desc deprecated</a></span> - Search tag in pkg2.TestAnnotationType</dt>",
427                "<dt><span class=\"searchTagLink\"><a href=\"pkg2/TestClass.html#SearchTagDeprecatedClass\">"
428                + "SearchTagDeprecatedClass</a></span> - Search tag in pkg2.TestClass</dt>",
429                "<dt><span class=\"searchTagLink\"><a href=\"pkg2/TestEnum.html#searchphrasedeprecated\">"
430                + "search phrase deprecated</a></span> - Search tag in pkg2.TestEnum.ONE</dt>",
431                "<dt><span class=\"searchTagLink\"><a href=\"pkg2/TestError.html#SearchTagDeprecatedMethod\">"
432                + "SearchTagDeprecatedMethod</a></span> - Search tag in pkg2.TestError</dt>",
433                "<div class=\"block\"><span class=\"deprecationComment\">class_test1 passes. Search tag"
434                + " <a id=\"SearchTagDeprecatedClass\">SearchTagDeprecatedClass</a></span></div>",
435                "<div class=\"block\"><span class=\"deprecationComment\">error_test3 passes. Search tag for\n"
436                + " method <a id=\"SearchTagDeprecatedMethod\">SearchTagDeprecatedMethod</a></span></div>");
437    }
438
439    void checkJavaFXOutput() {
440        checkOutput("index-all.html", false, "test treat as private");
441    }
442
443    void checkInvalidUsageIndexTag() {
444        checkOutput(Output.OUT, true,
445                "AnotherClass.java:29: warning - invalid usage of tag {@index",
446                "AnotherClass.java:41: warning - invalid usage of tag {@index",
447                "AnotherClass.java:36: warning - invalid usage of tag {@index",
448                "AnotherClass.java:70: warning - invalid usage of tag {@index");
449    }
450
451    void checkJqueryAndImageFiles(boolean expectedOutput) {
452        checkFiles(expectedOutput,
453                "search.js",
454                "jquery/jquery-1.10.2.js",
455                "jquery/jquery-ui.js",
456                "jquery/jquery-ui.css",
457                "jquery/jquery-ui.min.js",
458                "jquery/jquery-ui.min.css",
459                "jquery/jquery-ui.structure.min.css",
460                "jquery/jquery-ui.structure.css",
461                "jquery/external/jquery/jquery.js",
462                "jquery/jszip/dist/jszip.js",
463                "jquery/jszip/dist/jszip.min.js",
464                "jquery/jszip-utils/dist/jszip-utils.js",
465                "jquery/jszip-utils/dist/jszip-utils.min.js",
466                "jquery/jszip-utils/dist/jszip-utils-ie.js",
467                "jquery/jszip-utils/dist/jszip-utils-ie.min.js",
468                "jquery/images/ui-bg_flat_0_aaaaaa_40x100.png",
469                "jquery/images/ui-icons_454545_256x240.png",
470                "jquery/images/ui-bg_glass_95_fef1ec_1x400.png",
471                "jquery/images/ui-bg_glass_75_dadada_1x400.png",
472                "jquery/images/ui-bg_highlight-soft_75_cccccc_1x100.png",
473                "jquery/images/ui-icons_888888_256x240.png",
474                "jquery/images/ui-icons_2e83ff_256x240.png",
475                "jquery/images/ui-bg_glass_65_ffffff_1x400.png",
476                "jquery/images/ui-icons_cd0a0a_256x240.png",
477                "jquery/images/ui-bg_glass_55_fbf9ee_1x400.png",
478                "jquery/images/ui-icons_222222_256x240.png",
479                "jquery/images/ui-bg_glass_75_e6e6e6_1x400.png",
480                "jquery/images/ui-bg_flat_75_ffffff_40x100.png",
481                "resources/x.png",
482                "resources/glass.png");
483    }
484
485    void checkSearchJS() {
486        checkOutput("search.js", true,
487                "camelCaseRegexp = ($.ui.autocomplete.escapeRegex(request.term)).split(/(?=[A-Z])/).join(\"([a-z0-9_$]*?)\");",
488                "var camelCaseMatcher = new RegExp(\"^\" + camelCaseRegexp);",
489                "camelCaseMatcher.test(item.l)",
490                "var secondaryresult = new Array();",
491                "function nestedName(e) {",
492                "function sortAndConcatResults(a1, a2) {",
493                "if (exactMatcher.test(item.l)) {\n"
494                + "                        presult.unshift(item);");
495    }
496}
497