24 import java.io.IOException;
25 import java.io.PrintWriter;
26 import java.io.StringWriter;
27 import java.nio.file.Path;
28 import java.nio.file.Paths;
29 import java.util.Arrays;
30 import java.util.HashSet;
31 import java.util.List;
32 import java.util.Locale;
33 import java.util.Set;
34 import java.util.TreeSet;
35 import java.util.stream.Collectors;
36
37 import javax.lang.model.SourceVersion;
38 import javax.lang.model.element.Element;
39 import javax.lang.model.element.ElementKind;
40 import javax.lang.model.element.ModuleElement;
41 import javax.lang.model.element.PackageElement;
42 import javax.lang.model.element.TypeElement;
43 import javax.lang.model.util.ElementFilter;
44 import javax.lang.model.util.SimpleElementVisitor9;
45
46 import jdk.javadoc.doclet.Doclet;
47 import jdk.javadoc.doclet.DocletEnvironment;
48 import jdk.javadoc.doclet.Reporter;
49
50 import toolbox.JavadocTask;
51 import toolbox.Task;
52 import toolbox.Task.Expect;
53 import toolbox.TestRunner;
54 import toolbox.ToolBox;
55
56 import static toolbox.Task.OutputKind.*;
57
58 /**
59 * Base class for module tests.
60 */
61 public class ModuleTestBase extends TestRunner {
62
63 // Field Separator
64 private static final String FS = " ";
284
285 public static class ModulesTesterDoclet implements Doclet {
286 StringWriter sw = new StringWriter();
287 PrintWriter ps = new PrintWriter(sw);
288
289 DocletEnvironment docEnv = null;
290
291 boolean hasDocComments = false;
292
293 String hasDocComments(Element e) {
294 String comment = docEnv.getElementUtils().getDocComment(e);
295 return comment != null && !comment.isEmpty()
296 ? "hasDocComments"
297 : "noDocComments";
298 }
299
300 // csv style output, for simple regex verification
301 void printDataSet(String header, Set<? extends Element> set) {
302 for (Element e : set) {
303 ps.print(header);
304 new SimpleElementVisitor9<Void, Void>() {
305 @Override
306 public Void visitModule(ModuleElement e, Void p) {
307 ps.print(FS);
308 ps.print(e.getKind());
309 ps.print(FS);
310 ps.print(e.getQualifiedName());
311 if (hasDocComments) {
312 ps.print(FS);
313 ps.print(hasDocComments(e));
314 }
315 ps.println();
316 return null;
317 }
318
319 @Override
320 public Void visitPackage(PackageElement e, Void p) {
321 ps.print(FS);
322 ps.print(e.getKind());
323 ps.print(FS);
324 ps.print(e.getQualifiedName());
330 return null;
331 }
332
333 @Override
334 public Void visitType(TypeElement e, Void p) {
335 ps.print(FS);
336 ps.print(ElementKind.CLASS);
337 ps.print(FS);
338 ps.print(e.getQualifiedName());
339 if (hasDocComments) {
340 ps.print(FS);
341 ps.print(hasDocComments(e));
342 }
343 ps.println();
344 return null;
345 }
346
347 @Override
348 protected Void defaultAction(Element e, Void p) {
349 Element encl = e.getEnclosingElement();
350 CharSequence fqn = new SimpleElementVisitor9<CharSequence, Void>() {
351 @Override
352 public CharSequence visitModule(ModuleElement e, Void p) {
353 return e.getQualifiedName();
354 }
355
356 @Override
357 public CharSequence visitType(TypeElement e, Void p) {
358 return e.getQualifiedName();
359 }
360
361 @Override
362 public CharSequence visitPackage(PackageElement e, Void p) {
363 return e.getQualifiedName();
364 }
365
366 }.visit(encl);
367
368 ps.print(FS);
369 ps.print(ElementKind.METHOD); // always METHOD
370 ps.print(FS);
|
24 import java.io.IOException;
25 import java.io.PrintWriter;
26 import java.io.StringWriter;
27 import java.nio.file.Path;
28 import java.nio.file.Paths;
29 import java.util.Arrays;
30 import java.util.HashSet;
31 import java.util.List;
32 import java.util.Locale;
33 import java.util.Set;
34 import java.util.TreeSet;
35 import java.util.stream.Collectors;
36
37 import javax.lang.model.SourceVersion;
38 import javax.lang.model.element.Element;
39 import javax.lang.model.element.ElementKind;
40 import javax.lang.model.element.ModuleElement;
41 import javax.lang.model.element.PackageElement;
42 import javax.lang.model.element.TypeElement;
43 import javax.lang.model.util.ElementFilter;
44 import javax.lang.model.util.SimpleElementVisitor14;
45
46 import jdk.javadoc.doclet.Doclet;
47 import jdk.javadoc.doclet.DocletEnvironment;
48 import jdk.javadoc.doclet.Reporter;
49
50 import toolbox.JavadocTask;
51 import toolbox.Task;
52 import toolbox.Task.Expect;
53 import toolbox.TestRunner;
54 import toolbox.ToolBox;
55
56 import static toolbox.Task.OutputKind.*;
57
58 /**
59 * Base class for module tests.
60 */
61 public class ModuleTestBase extends TestRunner {
62
63 // Field Separator
64 private static final String FS = " ";
284
285 public static class ModulesTesterDoclet implements Doclet {
286 StringWriter sw = new StringWriter();
287 PrintWriter ps = new PrintWriter(sw);
288
289 DocletEnvironment docEnv = null;
290
291 boolean hasDocComments = false;
292
293 String hasDocComments(Element e) {
294 String comment = docEnv.getElementUtils().getDocComment(e);
295 return comment != null && !comment.isEmpty()
296 ? "hasDocComments"
297 : "noDocComments";
298 }
299
300 // csv style output, for simple regex verification
301 void printDataSet(String header, Set<? extends Element> set) {
302 for (Element e : set) {
303 ps.print(header);
304 new SimpleElementVisitor14<Void, Void>() {
305 @Override
306 public Void visitModule(ModuleElement e, Void p) {
307 ps.print(FS);
308 ps.print(e.getKind());
309 ps.print(FS);
310 ps.print(e.getQualifiedName());
311 if (hasDocComments) {
312 ps.print(FS);
313 ps.print(hasDocComments(e));
314 }
315 ps.println();
316 return null;
317 }
318
319 @Override
320 public Void visitPackage(PackageElement e, Void p) {
321 ps.print(FS);
322 ps.print(e.getKind());
323 ps.print(FS);
324 ps.print(e.getQualifiedName());
330 return null;
331 }
332
333 @Override
334 public Void visitType(TypeElement e, Void p) {
335 ps.print(FS);
336 ps.print(ElementKind.CLASS);
337 ps.print(FS);
338 ps.print(e.getQualifiedName());
339 if (hasDocComments) {
340 ps.print(FS);
341 ps.print(hasDocComments(e));
342 }
343 ps.println();
344 return null;
345 }
346
347 @Override
348 protected Void defaultAction(Element e, Void p) {
349 Element encl = e.getEnclosingElement();
350 CharSequence fqn = new SimpleElementVisitor14<CharSequence, Void>() {
351 @Override
352 public CharSequence visitModule(ModuleElement e, Void p) {
353 return e.getQualifiedName();
354 }
355
356 @Override
357 public CharSequence visitType(TypeElement e, Void p) {
358 return e.getQualifiedName();
359 }
360
361 @Override
362 public CharSequence visitPackage(PackageElement e, Void p) {
363 return e.getQualifiedName();
364 }
365
366 }.visit(encl);
367
368 ps.print(FS);
369 ps.print(ElementKind.METHOD); // always METHOD
370 ps.print(FS);
|