53 private final ToolBox tb;
54
55 public TestModulePackages() {
56 tb = new ToolBox();
57 }
58
59 // @Test: See: https://bugs.openjdk.java.net/browse/JDK-8193107
60 public void empty(Path base) throws Exception {
61 Path src = base.resolve("src");
62 new ModuleBuilder(tb, "m")
63 .comment("empty module")
64 .write(src);
65
66 javadoc("-d", base.resolve("out").toString(),
67 "-quiet",
68 "-noindex",
69 "--module-source-path", src.toString(),
70 "--module", "m");
71
72 checkExit(Exit.OK);
73 checkOutput("m-summary.html", false,
74 "<h3>Packages</h3>\n"
75 + "<table class=\"packagesSummary\" summary=\"Packages table, "
76 + "listing packages, and an explanation\">");
77 }
78
79 @Test
80 public void exportSingle(Path base) throws Exception {
81 Path src = base.resolve("src");
82 new ModuleBuilder(tb, "m")
83 .comment("exports single package to all")
84 .exports("p")
85 .classes("package p; public class C { }")
86 .write(src);
87
88 javadoc("-d", base.resolve("out").toString(),
89 "-quiet",
90 "-noindex",
91 "--module-source-path", src.toString(),
92 "--module", "m");
93
142 "--module-source-path", src.toString(),
143 "--module", "m,other");
144
145 checkExit(Exit.OK);
146 checkCaption("m", TabKind.EXPORTS);
147 checkTableHead("m");
148 checkPackageRow("m", "p", "i0", null, null, " ");
149
150 javadoc("-d", base.resolve("out-all").toString(),
151 "-quiet",
152 "-noindex",
153 "--show-module-contents", "all",
154 "--module-source-path", src.toString(),
155 "--module", "m,other");
156
157 checkExit(Exit.OK);
158 checkCaption("m", TabKind.EXPORTS);
159 checkTableHead("m", ColKind.EXPORTED_TO);
160 checkPackageRow("m", "p", "i0", "All Modules", null, " ");
161 checkPackageRow("m", "q", "i1",
162 "<a href=\"other-summary.html\">other</a>", null, " ");
163 }
164
165 @Test
166 public void exportWithConcealed(Path base) throws Exception {
167 Path src = base.resolve("src");
168 new ModuleBuilder(tb, "m")
169 .comment("exports package, has concealed package")
170 .exports("p")
171 .classes("package p; public class C { }")
172 .classes("package q; public class D { }")
173 .write(src);
174
175 javadoc("-d", base.resolve("out-api").toString(),
176 "-quiet",
177 "-noindex",
178 "--module-source-path", src.toString(),
179 "--module", "m");
180
181 checkExit(Exit.OK);
182 checkCaption("m", TabKind.EXPORTS);
230 checkExit(Exit.OK);
231 checkCaption("m", TabKind.EXPORTS, TabKind.OPENS);
232 checkTableHead("m", ColKind.EXPORTED_TO, ColKind.OPENED_TO);
233 checkPackageRow("m", "e.all", "i0", "All Modules", "None", " ");
234 checkPackageRow("m", "eo", "i1", "All Modules", "All Modules", " ");
235
236 javadoc("-d", base.resolve("out-all").toString(),
237 "-quiet",
238 "-noindex",
239 "--show-module-contents", "all",
240 "--show-packages", "all",
241 "--module-source-path", src.toString(),
242 "--module", "m,other");
243
244 checkExit(Exit.OK);
245 checkCaption("m", TabKind.EXPORTS, TabKind.OPENS, TabKind.CONCEALED);
246 checkTableHead("m", ColKind.EXPORTED_TO, ColKind.OPENED_TO);
247 checkPackageRow("m", "c", "i0", "None", "None", " ");
248 checkPackageRow("m", "e.all", "i1", "All Modules", "None", " ");
249 checkPackageRow("m", "e.other", "i2",
250 "<a href=\"other-summary.html\">other</a>", "None", " ");
251 checkPackageRow("m", "eo", "i3", "All Modules", "All Modules", " ");
252 checkPackageRow("m", "o.all", "i4", "None", "All Modules", " ");
253 checkPackageRow("m", "o.other", "i5", "None",
254 "<a href=\"other-summary.html\">other</a>", " ");
255 }
256
257 @Test
258 public void openModule(Path base) throws Exception {
259 Path src = base.resolve("src");
260 new ModuleBuilder(tb, true, "m")
261 .comment("open module")
262 .classes("/** implicitly open package */ package p;")
263 .classes("package p; public class C { } ")
264 .classes("/** implicitly open package */ package q;")
265 .classes("package q; public class D { }")
266 .write(src);
267
268 javadoc("-d", base.resolve("out").toString(),
269 "-quiet",
270 "-noindex",
271 "--show-packages", "all", // required, to show open packages; see JDK-8193107
272 "--module-source-path", src.toString(),
273 "--module", "m");
274
350 "--module", "m,other");
351
352 checkExit(Exit.OK);
353 checkCaption("m", TabKind.OPENS);
354 checkTableHead("m");
355 checkPackageRow("m", "p", "i0", null, null, " ");
356
357 javadoc("-d", base.resolve("out-all").toString(),
358 "-quiet",
359 "-noindex",
360 "--show-packages", "all", // required, to show open packages; see JDK-8193107
361 "--show-module-contents", "all",
362 "--module-source-path", src.toString(),
363 "--module", "m,other");
364
365 checkExit(Exit.OK);
366 checkCaption("m", TabKind.OPENS);
367 checkTableHead("m", ColKind.OPENED_TO);
368 checkPackageRow("m", "p", "i0", null, "All Modules", " ");
369 checkPackageRow("m", "q", "i1", null,
370 "<a href=\"other-summary.html\">other</a>", " ");
371 }
372
373 @Test
374 public void openWithConcealed(Path base) throws Exception {
375 Path src = base.resolve("src");
376 new ModuleBuilder(tb, "m")
377 .comment("opens package, has concealed package")
378 .opens("p")
379 .classes("package p; public class C { }")
380 .classes("package q; public class D { }")
381 .write(src);
382
383 javadoc("-d", base.resolve("out-api").toString(),
384 "-quiet",
385 "-noindex",
386 "--show-packages", "all", // required, to show open packages; see JDK-8193107
387 "--module-source-path", src.toString(),
388 "--module", "m");
389
390 checkExit(Exit.OK);
399 "--show-packages", "all",
400 "--module-source-path", src.toString(),
401 "--module", "m");
402
403 checkExit(Exit.OK);
404 checkCaption("m", TabKind.OPENS, TabKind.CONCEALED);
405 checkTableHead("m", ColKind.OPENED_TO);
406 checkPackageRow("m", "p", "i0", null, "All Modules", " ");
407 checkPackageRow("m", "q", "i1", null, "None", " ");
408 }
409
410
411 private void checkCaption(String moduleName, TabKind... kinds) {
412 String expect;
413 if (kinds.length > 1) {
414 Set<TabKind> kindSet = Set.of(kinds);
415 StringBuilder sb = new StringBuilder();
416 sb.append("<caption>"
417 + "<span id=\"t0\" class=\"activeTableTab\">"
418 + "<span>All Packages</span>"
419 + "<span class=\"tabEnd\"> </span></span>");
420 if (kindSet.contains(TabKind.EXPORTS)) {
421 sb.append("<span id=\"t1\" class=\"tableTab\">"
422 + "<span><a href=\"javascript:showPkgs(1);\">Exports</a></span>"
423 + "<span class=\"tabEnd\"> </span></span>");
424 }
425 if (kindSet.contains(TabKind.OPENS)) {
426 sb.append("<span id=\"t2\" class=\"tableTab\">"
427 + "<span><a href=\"javascript:showPkgs(2);\">Opens</a></span>"
428 + "<span class=\"tabEnd\"> </span></span>");
429 }
430 if (kindSet.contains(TabKind.CONCEALED)) {
431 sb.append("<span id=\"t3\" class=\"tableTab\"><span>"
432 + "<a href=\"javascript:showPkgs(4);\">Concealed</a></span>"
433 + "<span class=\"tabEnd\"> </span></span>");
434 }
435 sb.append("</caption>");
436 expect = sb.toString();
437 } else {
438 TabKind k = kinds[0];
439 String name = k.toString().charAt(0) + k.toString().substring(1).toLowerCase();
440 expect = "<caption>"
441 + "<span>" + name + "</span>"
442 + "<span class=\"tabEnd\"> </span>"
443 + "</caption>";
444 }
445
446 checkOutput(moduleName + "-summary.html", true, expect);
447 }
448
449
450 private void checkTableHead(String moduleName, ColKind... kinds) {
451 Set<ColKind> kindSet = Set.of(kinds);
452 StringBuilder sb = new StringBuilder();
453 sb.append("<tr>\n"
454 + "<th class=\"colFirst\" scope=\"col\">Package</th>\n");
455 if (kindSet.contains(ColKind.EXPORTED_TO)) {
456 sb.append("<th class=\"colSecond\" scope=\"col\">Exported To Modules</th>\n");
457 }
458 if (kindSet.contains(ColKind.OPENED_TO)) {
459 sb.append("<th class=\"colSecond\" scope=\"col\">Opened To Modules</th>\n");
460 }
461 sb.append("<th class=\"colLast\" scope=\"col\">Description</th>\n"
462 + "</tr>");
463
464 checkOutput(moduleName + "-summary.html", true, sb.toString());
465 }
466
467 private void checkPackageRow(String moduleName, String packageName,
468 String id, String exportedTo, String openedTo, String desc) {
469 StringBuilder sb = new StringBuilder();
470 int idNum = Integer.parseInt(id.substring(1));
471 String color = (idNum % 2 == 1 ? "rowColor" : "altColor");
472 sb.append("<tr class=\"" + color + "\" id=\"" + id + "\">\n"
473 + "<th class=\"colFirst\" scope=\"row\">"
474 + "<a href=\"" + packageName.replace('.', '/') + "/package-summary.html\">"
475 + packageName + "</a></th>\n");
476 if (exportedTo != null) {
477 sb.append("<td class=\"colSecond\">" + exportedTo + "</td>\n");
478 }
479 if (openedTo != null) {
480 sb.append("<td class=\"colSecond\">" + openedTo + "</td>\n");
481 }
482 sb.append("<td class=\"colLast\">" + desc + "</td>");
483
484 checkOutput(moduleName + "-summary.html", true, sb.toString());
485 }
486
487 }
488
|
53 private final ToolBox tb;
54
55 public TestModulePackages() {
56 tb = new ToolBox();
57 }
58
59 // @Test: See: https://bugs.openjdk.java.net/browse/JDK-8193107
60 public void empty(Path base) throws Exception {
61 Path src = base.resolve("src");
62 new ModuleBuilder(tb, "m")
63 .comment("empty module")
64 .write(src);
65
66 javadoc("-d", base.resolve("out").toString(),
67 "-quiet",
68 "-noindex",
69 "--module-source-path", src.toString(),
70 "--module", "m");
71
72 checkExit(Exit.OK);
73 checkOutput("m/module-summary.html", false,
74 "<h3>Packages</h3>\n"
75 + "<table class=\"packagesSummary\" summary=\"Packages table, "
76 + "listing packages, and an explanation\">");
77 }
78
79 @Test
80 public void exportSingle(Path base) throws Exception {
81 Path src = base.resolve("src");
82 new ModuleBuilder(tb, "m")
83 .comment("exports single package to all")
84 .exports("p")
85 .classes("package p; public class C { }")
86 .write(src);
87
88 javadoc("-d", base.resolve("out").toString(),
89 "-quiet",
90 "-noindex",
91 "--module-source-path", src.toString(),
92 "--module", "m");
93
142 "--module-source-path", src.toString(),
143 "--module", "m,other");
144
145 checkExit(Exit.OK);
146 checkCaption("m", TabKind.EXPORTS);
147 checkTableHead("m");
148 checkPackageRow("m", "p", "i0", null, null, " ");
149
150 javadoc("-d", base.resolve("out-all").toString(),
151 "-quiet",
152 "-noindex",
153 "--show-module-contents", "all",
154 "--module-source-path", src.toString(),
155 "--module", "m,other");
156
157 checkExit(Exit.OK);
158 checkCaption("m", TabKind.EXPORTS);
159 checkTableHead("m", ColKind.EXPORTED_TO);
160 checkPackageRow("m", "p", "i0", "All Modules", null, " ");
161 checkPackageRow("m", "q", "i1",
162 "<a href=\"../other/module-summary.html\">other</a>", null, " ");
163 }
164
165 @Test
166 public void exportWithConcealed(Path base) throws Exception {
167 Path src = base.resolve("src");
168 new ModuleBuilder(tb, "m")
169 .comment("exports package, has concealed package")
170 .exports("p")
171 .classes("package p; public class C { }")
172 .classes("package q; public class D { }")
173 .write(src);
174
175 javadoc("-d", base.resolve("out-api").toString(),
176 "-quiet",
177 "-noindex",
178 "--module-source-path", src.toString(),
179 "--module", "m");
180
181 checkExit(Exit.OK);
182 checkCaption("m", TabKind.EXPORTS);
230 checkExit(Exit.OK);
231 checkCaption("m", TabKind.EXPORTS, TabKind.OPENS);
232 checkTableHead("m", ColKind.EXPORTED_TO, ColKind.OPENED_TO);
233 checkPackageRow("m", "e.all", "i0", "All Modules", "None", " ");
234 checkPackageRow("m", "eo", "i1", "All Modules", "All Modules", " ");
235
236 javadoc("-d", base.resolve("out-all").toString(),
237 "-quiet",
238 "-noindex",
239 "--show-module-contents", "all",
240 "--show-packages", "all",
241 "--module-source-path", src.toString(),
242 "--module", "m,other");
243
244 checkExit(Exit.OK);
245 checkCaption("m", TabKind.EXPORTS, TabKind.OPENS, TabKind.CONCEALED);
246 checkTableHead("m", ColKind.EXPORTED_TO, ColKind.OPENED_TO);
247 checkPackageRow("m", "c", "i0", "None", "None", " ");
248 checkPackageRow("m", "e.all", "i1", "All Modules", "None", " ");
249 checkPackageRow("m", "e.other", "i2",
250 "<a href=\"../other/module-summary.html\">other</a>", "None", " ");
251 checkPackageRow("m", "eo", "i3", "All Modules", "All Modules", " ");
252 checkPackageRow("m", "o.all", "i4", "None", "All Modules", " ");
253 checkPackageRow("m", "o.other", "i5", "None",
254 "<a href=\"../other/module-summary.html\">other</a>", " ");
255 }
256
257 @Test
258 public void openModule(Path base) throws Exception {
259 Path src = base.resolve("src");
260 new ModuleBuilder(tb, true, "m")
261 .comment("open module")
262 .classes("/** implicitly open package */ package p;")
263 .classes("package p; public class C { } ")
264 .classes("/** implicitly open package */ package q;")
265 .classes("package q; public class D { }")
266 .write(src);
267
268 javadoc("-d", base.resolve("out").toString(),
269 "-quiet",
270 "-noindex",
271 "--show-packages", "all", // required, to show open packages; see JDK-8193107
272 "--module-source-path", src.toString(),
273 "--module", "m");
274
350 "--module", "m,other");
351
352 checkExit(Exit.OK);
353 checkCaption("m", TabKind.OPENS);
354 checkTableHead("m");
355 checkPackageRow("m", "p", "i0", null, null, " ");
356
357 javadoc("-d", base.resolve("out-all").toString(),
358 "-quiet",
359 "-noindex",
360 "--show-packages", "all", // required, to show open packages; see JDK-8193107
361 "--show-module-contents", "all",
362 "--module-source-path", src.toString(),
363 "--module", "m,other");
364
365 checkExit(Exit.OK);
366 checkCaption("m", TabKind.OPENS);
367 checkTableHead("m", ColKind.OPENED_TO);
368 checkPackageRow("m", "p", "i0", null, "All Modules", " ");
369 checkPackageRow("m", "q", "i1", null,
370 "<a href=\"../other/module-summary.html\">other</a>", " ");
371 }
372
373 @Test
374 public void openWithConcealed(Path base) throws Exception {
375 Path src = base.resolve("src");
376 new ModuleBuilder(tb, "m")
377 .comment("opens package, has concealed package")
378 .opens("p")
379 .classes("package p; public class C { }")
380 .classes("package q; public class D { }")
381 .write(src);
382
383 javadoc("-d", base.resolve("out-api").toString(),
384 "-quiet",
385 "-noindex",
386 "--show-packages", "all", // required, to show open packages; see JDK-8193107
387 "--module-source-path", src.toString(),
388 "--module", "m");
389
390 checkExit(Exit.OK);
399 "--show-packages", "all",
400 "--module-source-path", src.toString(),
401 "--module", "m");
402
403 checkExit(Exit.OK);
404 checkCaption("m", TabKind.OPENS, TabKind.CONCEALED);
405 checkTableHead("m", ColKind.OPENED_TO);
406 checkPackageRow("m", "p", "i0", null, "All Modules", " ");
407 checkPackageRow("m", "q", "i1", null, "None", " ");
408 }
409
410
411 private void checkCaption(String moduleName, TabKind... kinds) {
412 String expect;
413 if (kinds.length > 1) {
414 Set<TabKind> kindSet = Set.of(kinds);
415 StringBuilder sb = new StringBuilder();
416 sb.append("<caption>"
417 + "<span id=\"t0\" class=\"activeTableTab\">"
418 + "<span>All Packages</span>"
419 + "<span class=\"tabEnd\"> </span></span>");
420 if (kindSet.contains(TabKind.EXPORTS)) {
421 sb.append("<span id=\"t1\" class=\"tableTab\">"
422 + "<span><a href=\"javascript:showPkgs(1);\">Exports</a></span>"
423 + "<span class=\"tabEnd\"> </span></span>");
424 }
425 if (kindSet.contains(TabKind.OPENS)) {
426 sb.append("<span id=\"t2\" class=\"tableTab\">"
427 + "<span><a href=\"javascript:showPkgs(2);\">Opens</a></span>"
428 + "<span class=\"tabEnd\"> </span></span>");
429 }
430 if (kindSet.contains(TabKind.CONCEALED)) {
431 sb.append("<span id=\"t3\" class=\"tableTab\"><span>"
432 + "<a href=\"javascript:showPkgs(4);\">Concealed</a></span>"
433 + "<span class=\"tabEnd\"> </span></span>");
434 }
435 sb.append("</caption>");
436 expect = sb.toString();
437 } else {
438 TabKind k = kinds[0];
439 String name = k.toString().charAt(0) + k.toString().substring(1).toLowerCase();
440 expect = "<caption>"
441 + "<span>" + name + "</span>"
442 + "<span class=\"tabEnd\"> </span>"
443 + "</caption>";
444 }
445
446 checkOutput(moduleName + "/module-summary.html", true, expect);
447 }
448
449
450 private void checkTableHead(String moduleName, ColKind... kinds) {
451 Set<ColKind> kindSet = Set.of(kinds);
452 StringBuilder sb = new StringBuilder();
453 sb.append("<tr>\n"
454 + "<th class=\"colFirst\" scope=\"col\">Package</th>\n");
455 if (kindSet.contains(ColKind.EXPORTED_TO)) {
456 sb.append("<th class=\"colSecond\" scope=\"col\">Exported To Modules</th>\n");
457 }
458 if (kindSet.contains(ColKind.OPENED_TO)) {
459 sb.append("<th class=\"colSecond\" scope=\"col\">Opened To Modules</th>\n");
460 }
461 sb.append("<th class=\"colLast\" scope=\"col\">Description</th>\n"
462 + "</tr>");
463
464 checkOutput(moduleName + "/module-summary.html", true, sb.toString());
465 }
466
467 private void checkPackageRow(String moduleName, String packageName,
468 String id, String exportedTo, String openedTo, String desc) {
469 StringBuilder sb = new StringBuilder();
470 int idNum = Integer.parseInt(id.substring(1));
471 String color = (idNum % 2 == 1 ? "rowColor" : "altColor");
472 sb.append("<tr class=\"" + color + "\" id=\"" + id + "\">\n"
473 + "<th class=\"colFirst\" scope=\"row\">"
474 + "<a href=\"" + packageName.replace('.', '/') + "/package-summary.html\">"
475 + packageName + "</a></th>\n");
476 if (exportedTo != null) {
477 sb.append("<td class=\"colSecond\">" + exportedTo + "</td>\n");
478 }
479 if (openedTo != null) {
480 sb.append("<td class=\"colSecond\">" + openedTo + "</td>\n");
481 }
482 sb.append("<td class=\"colLast\">" + desc + "</td>");
483
484 checkOutput(moduleName + "/module-summary.html", true, sb.toString());
485 }
486
487 }
488
|