24 /* |
24 /* |
25 * @test |
25 * @test |
26 * @bug 4665566 4855876 7025314 8012375 8015997 8016328 8024756 |
26 * @bug 4665566 4855876 7025314 8012375 8015997 8016328 8024756 |
27 * @summary Verify that the output has the right javascript. |
27 * @summary Verify that the output has the right javascript. |
28 * @author jamieh |
28 * @author jamieh |
29 * @library ../lib/ |
29 * @library ../lib |
30 * @build JavadocTester |
30 * @build JavadocTester |
31 * @build TestJavascript |
|
32 * @run main TestJavascript |
31 * @run main TestJavascript |
33 */ |
32 */ |
34 |
33 |
35 public class TestJavascript extends JavadocTester { |
34 public class TestJavascript extends JavadocTester { |
36 |
35 |
37 //Javadoc arguments. |
36 public static void main(String... args) throws Exception { |
38 private static final String[] ARGS = new String[] { |
37 TestJavascript tester = new TestJavascript(); |
39 "-d", OUTPUT_DIR, "-sourcepath", SRC_DIR, "pkg", SRC_DIR + |
38 tester.runTests(); |
40 "/TestJavascript.java" |
39 } |
41 }; |
|
42 |
40 |
43 //Input for string search tests. |
41 @Test |
44 private static final String[][] TEST = { |
42 void test() { |
45 { "pkg/C.html", |
43 javadoc("-d", "out", |
46 "<a href=\"../index.html?pkg/C.html\" target=\"_top\">Frames</a>"}, |
44 "-sourcepath", testSrc, |
47 { "TestJavascript.html", |
45 "pkg", testSrc("TestJavascript.java")); |
48 "<a href=\"index.html?TestJavascript.html\" target=\"_top\">Frames</a>"}, |
46 checkExit(Exit.OK); |
49 { "index.html", |
47 |
50 "<script type=\"text/javascript\">\n" + |
48 checkOutput("pkg/C.html", true, |
51 " targetPage = \"\" + window.location.search;\n" + |
49 "<a href=\"../index.html?pkg/C.html\" target=\"_top\">Frames</a>"); |
52 " if (targetPage != \"\" && targetPage != \"undefined\")\n" + |
50 |
53 " targetPage = targetPage.substring(1);\n" + |
51 checkOutput("TestJavascript.html", true, |
54 " if (targetPage.indexOf(\":\") != -1 || (targetPage != \"\" && !validURL(targetPage)))\n" + |
52 "<a href=\"index.html?TestJavascript.html\" target=\"_top\">Frames</a>"); |
55 " targetPage = \"undefined\";\n" + |
53 |
56 " function validURL(url) {\n" + |
54 checkOutput("index.html", true, |
57 " try {\n" + |
55 "<script type=\"text/javascript\">\n" |
58 " url = decodeURIComponent(url);\n" + |
56 + " targetPage = \"\" + window.location.search;\n" |
59 " }\n" + |
57 + " if (targetPage != \"\" && targetPage != \"undefined\")\n" |
60 " catch (error) {\n" + |
58 + " targetPage = targetPage.substring(1);\n" |
61 " return false;\n" + |
59 + " if (targetPage.indexOf(\":\") != -1 || (targetPage != \"\" && !validURL(targetPage)))\n" |
62 " }\n" + |
60 + " targetPage = \"undefined\";\n" |
63 " var pos = url.indexOf(\".html\");\n" + |
61 + " function validURL(url) {\n" |
64 " if (pos == -1 || pos != url.length - 5)\n" + |
62 + " try {\n" |
65 " return false;\n" + |
63 + " url = decodeURIComponent(url);\n" |
66 " var allowNumber = false;\n" + |
64 + " }\n" |
67 " var allowSep = false;\n" + |
65 + " catch (error) {\n" |
68 " var seenDot = false;\n" + |
66 + " return false;\n" |
69 " for (var i = 0; i < url.length - 5; i++) {\n" + |
67 + " }\n" |
70 " var ch = url.charAt(i);\n" + |
68 + " var pos = url.indexOf(\".html\");\n" |
71 " if ('a' <= ch && ch <= 'z' ||\n" + |
69 + " if (pos == -1 || pos != url.length - 5)\n" |
72 " 'A' <= ch && ch <= 'Z' ||\n" + |
70 + " return false;\n" |
73 " ch == '$' ||\n" + |
71 + " var allowNumber = false;\n" |
74 " ch == '_' ||\n" + |
72 + " var allowSep = false;\n" |
75 " ch.charCodeAt(0) > 127) {\n" + |
73 + " var seenDot = false;\n" |
76 " allowNumber = true;\n" + |
74 + " for (var i = 0; i < url.length - 5; i++) {\n" |
77 " allowSep = true;\n" + |
75 + " var ch = url.charAt(i);\n" |
78 " } else if ('0' <= ch && ch <= '9'\n" + |
76 + " if ('a' <= ch && ch <= 'z' ||\n" |
79 " || ch == '-') {\n" + |
77 + " 'A' <= ch && ch <= 'Z' ||\n" |
80 " if (!allowNumber)\n" + |
78 + " ch == '$' ||\n" |
81 " return false;\n" + |
79 + " ch == '_' ||\n" |
82 " } else if (ch == '/' || ch == '.') {\n" + |
80 + " ch.charCodeAt(0) > 127) {\n" |
83 " if (!allowSep)\n" + |
81 + " allowNumber = true;\n" |
84 " return false;\n" + |
82 + " allowSep = true;\n" |
85 " allowNumber = false;\n" + |
83 + " } else if ('0' <= ch && ch <= '9'\n" |
86 " allowSep = false;\n" + |
84 + " || ch == '-') {\n" |
87 " if (ch == '.')\n" + |
85 + " if (!allowNumber)\n" |
88 " seenDot = true;\n" + |
86 + " return false;\n" |
89 " if (ch == '/' && seenDot)\n" + |
87 + " } else if (ch == '/' || ch == '.') {\n" |
90 " return false;\n" + |
88 + " if (!allowSep)\n" |
91 " } else {\n" + |
89 + " return false;\n" |
92 " return false;\n" + |
90 + " allowNumber = false;\n" |
93 " }\n" + |
91 + " allowSep = false;\n" |
94 " }\n" + |
92 + " if (ch == '.')\n" |
95 " return true;\n" + |
93 + " seenDot = true;\n" |
96 " }\n" + |
94 + " if (ch == '/' && seenDot)\n" |
97 " function loadFrames() {\n" + |
95 + " return false;\n" |
98 " if (targetPage != \"\" && targetPage != \"undefined\")\n" + |
96 + " } else {\n" |
99 " top.classFrame.location = top.targetPage;\n" + |
97 + " return false;\n" |
100 " }\n" + |
98 + " }\n" |
101 "</script>"}, |
99 + " }\n" |
|
100 + " return true;\n" |
|
101 + " }\n" |
|
102 + " function loadFrames() {\n" |
|
103 + " if (targetPage != \"\" && targetPage != \"undefined\")\n" |
|
104 + " top.classFrame.location = top.targetPage;\n" |
|
105 + " }\n" |
|
106 + "</script>"); |
102 |
107 |
103 //Make sure title javascript only runs if is-external is not true |
108 //Make sure title javascript only runs if is-external is not true |
104 { "pkg/C.html", |
109 checkOutput("pkg/C.html", true, |
105 " try {\n" + |
110 " try {\n" |
106 " if (location.href.indexOf('is-external=true') == -1) {\n" + |
111 + " if (location.href.indexOf('is-external=true') == -1) {\n" |
107 " parent.document.title=\"C\";\n" + |
112 + " parent.document.title=\"C\";\n" |
108 " }\n" + |
113 + " }\n" |
109 " }\n" + |
114 + " }\n" |
110 " catch(err) {\n" + |
115 + " catch(err) {\n" |
111 " }"}, |
116 + " }"); |
112 }; |
|
113 |
|
114 /** |
|
115 * The entry point of the test. |
|
116 * @param args the array of command line arguments. |
|
117 */ |
|
118 public static void main(String[] args) { |
|
119 TestJavascript tester = new TestJavascript(); |
|
120 tester.run(ARGS, TEST, NO_TEST); |
|
121 tester.printSummary(); |
|
122 } |
117 } |
123 } |
118 } |