TestHtmlDefinitionListTag.java revision 2100:933ba3f81a87
1/* 2 * Copyright (c) 2009, 2013, 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. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26/* 27 * @test 28 * @bug 6786690 6820360 8025633 29 * @summary This test verifies the nesting of definition list tags. 30 * @author Bhavesh Patel 31 * @library ../lib/ 32 * @build JavadocTester TestHtmlDefinitionListTag 33 * @run main TestHtmlDefinitionListTag 34 */ 35 36public class TestHtmlDefinitionListTag extends JavadocTester { 37 38 private static final String BUG_ID = "6786690-6820360"; 39 40 // Test common to all runs of javadoc. The class signature should print 41 // properly enclosed definition list tags and the Annotation Type 42 // Optional Element should print properly nested definition list tags 43 // for default value. 44 private static final String[][] TEST_ALL = { 45 {BUG_ID + FS + "pkg1" + FS + "C1.html", "<pre>public class " + 46 "<span class=\"strong\">C1</span>" + NL + 47 "extends java.lang.Object" + NL + "implements java.io.Serializable</pre>"}, 48 {BUG_ID + FS + "pkg1" + FS + "C4.html", "<dl>" + NL + 49 "<dt>Default:</dt>" + NL + "<dd>true</dd>" + NL + 50 "</dl>"}}; 51 52 // Test for normal run of javadoc in which various ClassDocs and 53 // serialized form should have properly nested definition list tags 54 // enclosing comments, tags and deprecated information. 55 private static final String[][] TEST_CMNT_DEPR = { 56 {BUG_ID + FS + "pkg1" + FS + "package-summary.html", "<dl>" + NL + 57 "<dt><span class=\"strong\">Since:</span></dt>" + NL + 58 "<dd>JDK1.0</dd>" + NL + "</dl>"}, 59 {BUG_ID + FS + "pkg1" + FS + "C1.html", "<dl>" + NL + "<dt><span class=\"strong\">Since:</span></dt>" + NL + 60 "<dd>JDK1.0</dd>" + NL + "<dt><span class=\"strong\">See Also:</span></dt>" + NL + 61 "<dd><a href=\"../pkg1/C2.html\" title=\"class in pkg1\"><code>" + 62 "C2</code></a>, " + NL + "<a href=\"../serialized-form.html#pkg1.C1\">" + 63 "Serialized Form</a></dd>" + NL + "</dl>"}, 64 {BUG_ID + FS + "pkg1" + FS + "C1.html", "<dl>" + NL + "<dt><span class=\"strong\">Since:</span></dt>" + NL + 65 "<dd>1.4</dd>" + NL + 66 "<dt><span class=\"strong\">See Also:</span></dt>" + NL + "<dd>" + 67 "<a href=\"../pkg1/C1.html#setUndecorated-boolean-\">" + 68 "<code>setUndecorated(boolean)</code></a></dd>" + NL + "</dl>"}, 69 {BUG_ID + FS + "pkg1" + FS + "C1.html", "<dl>"+ NL + "<dt><span class=\"strong\">Parameters:</span></dt>" + NL + "<dd><code>title" + 70 "</code> - the title</dd>" + NL + "<dd><code>test</code> - boolean value" + 71 "</dd>" + NL + "<dt><span class=\"strong\">Throws:</span></dt>" + NL + 72 "<dd><code>java.lang.IllegalArgumentException</code> - if the " + 73 "<code>owner</code>'s" + NL + 74 " <code>GraphicsConfiguration</code> is not from a screen " + 75 "device</dd>" + NL + "<dd><code>HeadlessException</code></dd>" + NL + "</dl>"}, 76 {BUG_ID + FS + "pkg1" + FS + "C1.html", "<dl>" + NL + "<dt><span class=\"strong\">Parameters:</span></dt>" + NL + "<dd><code>undecorated" + 77 "</code> - <code>true</code> if no decorations are" + NL + 78 " to be enabled;" + NL + " <code>false</code> " + 79 "if decorations are to be enabled.</dd>" + NL + "<dt><span class=\"strong\">Since:" + 80 "</span></dt>" + NL + "<dd>1.4</dd>" + NL + 81 "<dt><span class=\"strong\">See Also:</span></dt>" + NL + "<dd>" + 82 "<a href=\"../pkg1/C1.html#readObject--\"><code>readObject()" + 83 "</code></a></dd>" + NL + "</dl>"}, 84 {BUG_ID + FS + "pkg1" + FS + "C1.html", "<dl>" + NL + "<dt><span class=\"strong\">Throws:</span></dt>" + NL + 85 "<dd><code>java.io.IOException</code></dd>" + NL + "<dt><span class=\"strong\">See Also:" + 86 "</span></dt>" + NL + "<dd><a href=\"../pkg1/C1.html#setUndecorated-boolean-\">" + 87 "<code>setUndecorated(boolean)</code></a></dd>" + NL + "</dl>"}, 88 {BUG_ID + FS + "pkg1" + FS + "C2.html", "<dl>" + NL + "<dt><span class=\"strong\">Parameters:" + 89 "</span></dt>" + NL + "<dd><code>set</code> - boolean</dd>" + NL + "<dt><span class=\"strong\">" + 90 "Since:</span></dt>" + NL + "<dd>1.4</dd>" + NL + "</dl>"}, 91 {BUG_ID + FS + "serialized-form.html", "<dl>" + NL + "<dt><span class=\"strong\">Throws:</span>" + 92 "</dt>" + NL + "<dd><code>" + 93 "java.io.IOException</code></dd>" + NL + "<dt><span class=\"strong\">See Also:</span>" + 94 "</dt>" + NL + "<dd><a href=\"pkg1/C1.html#setUndecorated-boolean-\">" + 95 "<code>C1.setUndecorated(boolean)</code></a></dd>" + NL + "</dl>"}, 96 {BUG_ID + FS + "serialized-form.html", "<span class=\"strong\">Deprecated.</span>" + 97 " <span class=\"italic\">As of JDK version 1.5, replaced by" + NL + 98 " <a href=\"pkg1/C1.html#setUndecorated-boolean-\">" + 99 "<code>setUndecorated(boolean)</code></a>.</span></div>" + NL + 100 "<div class=\"block\">This field indicates whether the C1 is " + 101 "undecorated.</div>" + NL + " " + NL + "<dl>" + NL + "<dt><span class=\"strong\">Since:</span></dt>" + NL + 102 "<dd>1.4</dd>" + NL + "<dt><span class=\"strong\">See Also:</span>" + 103 "</dt>" + NL + "<dd><a href=\"pkg1/C1.html#setUndecorated-boolean-\">" + 104 "<code>C1.setUndecorated(boolean)</code></a></dd>" + NL + "</dl>"}, 105 {BUG_ID + FS + "serialized-form.html", "<span class=\"strong\">Deprecated.</span>" + 106 " <span class=\"italic\">As of JDK version 1.5, replaced by" + NL + 107 " <a href=\"pkg1/C1.html#setUndecorated-boolean-\">" + 108 "<code>setUndecorated(boolean)</code></a>.</span></div>" + NL + 109 "<div class=\"block\">Reads the object stream.</div>" + NL + 110 "<dl>" + NL + "<dt><span class=\"strong\">Throws:" + 111 "</span></dt>" + NL + "<dd><code><code>" + 112 "IOException</code></code></dd>" + NL + 113 "<dd><code>java.io.IOException</code></dd>" + NL + "</dl>"}, 114 {BUG_ID + FS + "serialized-form.html", "<span class=\"strong\">Deprecated.</span>" + 115 " </div>" + NL + 116 "<div class=\"block\">The name for this class.</div>"}}; 117 118 // Test with -nodeprecated option. The ClassDocs should have properly nested 119 // definition list tags enclosing comments and tags. The ClassDocs should not 120 // display definition list for deprecated information. The serialized form 121 // should display properly nested definition list tags for comments, tags 122 // and deprecated information. 123 private static final String[][] TEST_NODEPR = { 124 {BUG_ID + FS + "pkg1" + FS + "package-summary.html", "<dl>" + NL + 125 "<dt><span class=\"strong\">Since:</span></dt>" + NL + 126 "<dd>JDK1.0</dd>" + NL + "</dl>"}, 127 {BUG_ID + FS + "pkg1" + FS + "C1.html", "<dl>" + NL + "<dt><span class=\"strong\">Since:</span>" + 128 "</dt>" + NL + "<dd>JDK1.0</dd>" + NL + "<dt><span class=\"strong\">See Also:" + 129 "</span></dt>" + NL + "<dd><a href=\"../pkg1/C2.html\" title=\"class in pkg1\">" + 130 "<code>C2</code></a>, " + NL + "<a href=\"../serialized-form.html#pkg1.C1\">" + 131 "Serialized Form</a></dd>" + NL + "</dl>"}, 132 {BUG_ID + FS + "pkg1" + FS + "C1.html", "<dl>" + NL + "<dt><span class=\"strong\">Parameters:" + 133 "</span></dt>" + NL + "<dd><code>title</code> - the title</dd>" + NL + "<dd><code>" + 134 "test</code> - boolean value</dd>" + NL + "<dt><span class=\"strong\">Throws:" + 135 "</span></dt>" + NL + "<dd><code>java.lang.IllegalArgumentException" + 136 "</code> - if the <code>owner</code>'s" + NL + " <code>GraphicsConfiguration" + 137 "</code> is not from a screen device</dd>" + NL + "<dd><code>" + 138 "HeadlessException</code></dd>" + NL + "</dl>"}, 139 {BUG_ID + FS + "pkg1" + FS + "C1.html", "<dl>" + NL + "<dt><span class=\"strong\">Parameters:" + 140 "</span></dt>" + NL + "<dd><code>undecorated</code> - <code>true</code>" + 141 " if no decorations are" + NL + " to be enabled;" + NL + 142 " <code>false</code> if decorations are to be enabled." + 143 "</dd>" + NL + "<dt><span class=\"strong\">Since:</span></dt>" + NL + "<dd>1.4</dd>" + NL + 144 "<dt><span class=\"strong\">See Also:</span></dt>" + NL + "<dd><a href=\"../pkg1/C1.html#readObject--\">" + 145 "<code>readObject()</code></a></dd>" + NL + "</dl>"}, 146 {BUG_ID + FS + "pkg1" + FS + "C1.html", "<dl>" + NL + "<dt><span class=\"strong\">Throws:</span>" + 147 "</dt>" + NL + "<dd><code>java.io.IOException</code></dd>" + NL + "<dt>" + 148 "<span class=\"strong\">See Also:</span></dt>" + NL + "<dd><a href=\"../pkg1/C1.html#setUndecorated-boolean-\">" + 149 "<code>setUndecorated(boolean)</code></a></dd>" + NL + "</dl>"}, 150 {BUG_ID + FS + "serialized-form.html", "<dl>" + NL + "<dt><span class=\"strong\">Throws:</span>" + 151 "</dt>" + NL + "<dd><code>" + 152 "java.io.IOException</code></dd>" + NL + "<dt><span class=\"strong\">See Also:</span>" + 153 "</dt>" + NL + "<dd><a href=\"pkg1/C1.html#setUndecorated-boolean-\">" + 154 "<code>C1.setUndecorated(boolean)</code></a></dd>" + NL + "</dl>"}, 155 {BUG_ID + FS + "serialized-form.html", "<span class=\"strong\">Deprecated.</span>" + 156 " <span class=\"italic\">As of JDK version 1.5, replaced by" + NL + 157 " <a href=\"pkg1/C1.html#setUndecorated-boolean-\">" + 158 "<code>setUndecorated(boolean)</code></a>.</span></div>" + NL + 159 "<div class=\"block\">This field indicates whether the C1 is " + 160 "undecorated.</div>" + NL + " " + NL + "<dl>" + NL + "<dt><span class=\"strong\">Since:</span></dt>" + NL + 161 "<dd>1.4</dd>" + NL + "<dt><span class=\"strong\">See Also:</span>" + 162 "</dt>" + NL + "<dd><a href=\"pkg1/C1.html#setUndecorated-boolean-\">" + 163 "<code>C1.setUndecorated(boolean)</code></a></dd>" + NL + "</dl>"}, 164 {BUG_ID + FS + "serialized-form.html", "<span class=\"strong\">Deprecated.</span>" + 165 " <span class=\"italic\">As of JDK version 1.5, replaced by" + NL + 166 " <a href=\"pkg1/C1.html#setUndecorated-boolean-\">" + 167 "<code>setUndecorated(boolean)</code></a>.</span></div>" + NL + 168 "<div class=\"block\">Reads the object stream.</div>" + NL + 169 "<dl>" + NL + "<dt><span class=\"strong\">Throws:" + 170 "</span></dt>" + NL + "<dd><code><code>" + 171 "IOException</code></code></dd>" + NL + 172 "<dd><code>java.io.IOException</code></dd>" + NL + "</dl>"}, 173 {BUG_ID + FS + "serialized-form.html", "<span class=\"strong\">Deprecated.</span>" + 174 " </div>" + NL + "<div class=\"block\">" + 175 "The name for this class.</div>"}}; 176 177 // Test with -nocomment and -nodeprecated options. The ClassDocs whould 178 // not display definition lists for any member details. 179 private static final String[][] TEST_NOCMNT_NODEPR = { 180 {BUG_ID + FS + "pkg1" + FS + "C1.html", "<pre>public void readObject()" + NL + 181 " throws java.io.IOException</pre>" + NL + "</li>"}, 182 {BUG_ID + FS + "pkg1" + FS + "C2.html", "<pre>public C2()</pre>" + NL + 183 "</li>"}, 184 {BUG_ID + FS + "pkg1" + FS + "C1.ModalExclusionType.html", "<pre>public " + 185 "static final <a href=\"../pkg1/C1.ModalExclusionType.html\" " + 186 "title=\"enum in pkg1\">C1.ModalExclusionType</a> " + 187 "APPLICATION_EXCLUDE</pre>" + NL + "</li>"}, 188 {BUG_ID + FS + "serialized-form.html", "<pre>boolean " + 189 "undecorated</pre>" + NL + "<div class=\"block\"><span class=\"strong\">" + 190 "Deprecated.</span> <span class=\"italic\">As of JDK version 1.5, replaced by" + NL + 191 " <a href=\"pkg1/C1.html#setUndecorated-boolean-\"><code>" + 192 "setUndecorated(boolean)</code></a>.</span></div>" + NL + "</li>"}, 193 {BUG_ID + FS + "serialized-form.html", "<span class=\"strong\">" + 194 "Deprecated.</span> <span class=\"italic\">As of JDK version" + 195 " 1.5, replaced by" + NL + 196 " <a href=\"pkg1/C1.html#setUndecorated-boolean-\">" + 197 "<code>setUndecorated(boolean)</code></a>.</span></div>" + NL + "</li>"}}; 198 199 // Test for valid HTML generation which should not comprise of empty 200 // definition list tags. 201 private static final String[][] NEGATED_TEST = { 202 {BUG_ID + FS + "pkg1" + FS + "package-summary.html", "<dl></dl>"}, 203 {BUG_ID + FS + "pkg1" + FS + "package-summary.html", "<dl>" + NL + "</dl>"}, 204 {BUG_ID + FS + "pkg1" + FS + "C1.html", "<dl></dl>"}, 205 {BUG_ID + FS + "pkg1" + FS + "C1.html", "<dl>" + NL + "</dl>"}, 206 {BUG_ID + FS + "pkg1" + FS + "C1.ModalExclusionType.html", "<dl></dl>"}, 207 {BUG_ID + FS + "pkg1" + FS + "C1.ModalExclusionType.html", "<dl>" + NL + "</dl>"}, 208 {BUG_ID + FS + "pkg1" + FS + "C2.html", "<dl></dl>"}, 209 {BUG_ID + FS + "pkg1" + FS + "C2.html", "<dl>" + NL + "</dl>"}, 210 {BUG_ID + FS + "pkg1" + FS + "C2.ModalType.html", "<dl></dl>"}, 211 {BUG_ID + FS + "pkg1" + FS + "C2.ModalType.html", "<dl>" + NL + "</dl>"}, 212 {BUG_ID + FS + "pkg1" + FS + "C3.html", "<dl></dl>"}, 213 {BUG_ID + FS + "pkg1" + FS + "C3.html", "<dl>" + NL + "</dl>"}, 214 {BUG_ID + FS + "pkg1" + FS + "C4.html", "<dl></dl>"}, 215 {BUG_ID + FS + "pkg1" + FS + "C4.html", "<dl>" + NL + "</dl>"}, 216 {BUG_ID + FS + "pkg1" + FS + "C5.html", "<dl></dl>"}, 217 {BUG_ID + FS + "pkg1" + FS + "C5.html", "<dl>" + NL + "</dl>"}, 218 {BUG_ID + FS + "overview-tree.html", "<dl></dl>"}, 219 {BUG_ID + FS + "overview-tree.html", "<dl>" + NL + "</dl>"}, 220 {BUG_ID + FS + "serialized-form.html", "<dl></dl>"}, 221 {BUG_ID + FS + "serialized-form.html", "<dl>" + NL + "</dl>"}}; 222 223 private static final String[] ARGS1 = 224 new String[] { 225 "-Xdoclint:none", "-d", BUG_ID, "-sourcepath", SRC_DIR, "pkg1"}; 226 227 private static final String[] ARGS2 = 228 new String[] { 229 "-Xdoclint:none", "-d", BUG_ID, "-nocomment", "-sourcepath", SRC_DIR, "pkg1"}; 230 231 private static final String[] ARGS3 = 232 new String[] { 233 "-Xdoclint:none", "-d", BUG_ID, "-nodeprecated", "-sourcepath", SRC_DIR, "pkg1"}; 234 235 private static final String[] ARGS4 = 236 new String[] { 237 "-Xdoclint:none", "-d", BUG_ID, "-nocomment", "-nodeprecated", "-sourcepath", SRC_DIR, "pkg1"}; 238 239 /** 240 * The entry point of the test. 241 * @param args the array of command line arguments. 242 */ 243 public static void main(String[] args) { 244 TestHtmlDefinitionListTag tester = new TestHtmlDefinitionListTag(); 245 tester.exactNewlineMatch = false; 246 run(tester, ARGS1, TEST_ALL, NEGATED_TEST); 247 run(tester, ARGS1, TEST_CMNT_DEPR, NEGATED_TEST); 248 run(tester, ARGS2, TEST_ALL, NEGATED_TEST); 249 run(tester, ARGS2, NO_TEST, TEST_CMNT_DEPR); 250 run(tester, ARGS3, TEST_ALL, NEGATED_TEST); 251 run(tester, ARGS3, TEST_NODEPR, TEST_NOCMNT_NODEPR); 252 run(tester, ARGS4, TEST_ALL, NEGATED_TEST); 253 run(tester, ARGS4, TEST_NOCMNT_NODEPR, TEST_CMNT_DEPR); 254 tester.printSummary(); 255 } 256 257 /** 258 * {@inheritDoc} 259 */ 260 public String getBugId() { 261 return BUG_ID; 262 } 263 264 /** 265 * {@inheritDoc} 266 */ 267 public String getBugName() { 268 return getClass().getName(); 269 } 270} 271