1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.checkstyle.suppressionxpathfilter.design;
21
22 import java.io.File;
23 import java.util.Arrays;
24 import java.util.List;
25
26 import org.checkstyle.suppressionxpathfilter.AbstractXpathTestSupport;
27 import org.junit.jupiter.api.Test;
28
29 import com.puppycrawl.tools.checkstyle.DefaultConfiguration;
30 import com.puppycrawl.tools.checkstyle.checks.design.DesignForExtensionCheck;
31
32 public class XpathRegressionDesignForExtensionTest extends AbstractXpathTestSupport {
33
34 private final String checkName = DesignForExtensionCheck.class.getSimpleName();
35
36 @Override
37 protected String getCheckName() {
38 return checkName;
39 }
40
41 @Override
42 protected String getPackageLocation() {
43 return "org/checkstyle/suppressionxpathfilter/design/designforextension";
44 }
45
46 @Test
47 public void test() throws Exception {
48 final File fileToProcess =
49 new File(getPath("InputXpathDesignForExtensionClass.java"));
50
51 final DefaultConfiguration moduleConfig =
52 createModuleConfig(DesignForExtensionCheck.class);
53 moduleConfig.addProperty("ignoredAnnotations", "Override");
54
55 final String[] expected = {
56 "7:5: " + getCheckMessage(DesignForExtensionCheck.class,
57 DesignForExtensionCheck.MSG_KEY,
58 "InputXpathDesignForExtensionClass",
59 "calculateValue"),
60 };
61
62 final List<String> expectedXpathQueries = Arrays.asList(
63 "/COMPILATION_UNIT/CLASS_DEF[./IDENT"
64 + "[@text='InputXpathDesignForExtensionClass']]/OBJBLOCK"
65 + "/METHOD_DEF[./IDENT[@text='calculateValue']]",
66 "/COMPILATION_UNIT/CLASS_DEF[./IDENT"
67 + "[@text='InputXpathDesignForExtensionClass']]/OBJBLOCK"
68 + "/METHOD_DEF[./IDENT[@text='calculateValue']]/MODIFIERS",
69 "/COMPILATION_UNIT/CLASS_DEF[./IDENT"
70 + "[@text='InputXpathDesignForExtensionClass']]/OBJBLOCK"
71 + "/METHOD_DEF[./IDENT[@text='calculateValue']]/MODIFIERS/LITERAL_PUBLIC"
72 );
73
74
75 runVerifications(moduleConfig, fileToProcess, expected, expectedXpathQueries);
76
77 }
78
79 @Test
80 public void test2() throws Exception {
81 final File fileToProcess =
82 new File(getPath("InputXpathDesignForExtensionWithEnum.java"));
83
84 final DefaultConfiguration moduleConfig =
85 createModuleConfig(DesignForExtensionCheck.class);
86 moduleConfig.addProperty("ignoredAnnotations", "Override");
87 moduleConfig.addProperty("requiredJavadocPhrase", "This[\\s\\S]*implementation");
88
89 final String[] expected = {
90 "23:5: " + getCheckMessage(DesignForExtensionCheck.class,
91 DesignForExtensionCheck.MSG_KEY,
92 "InputXpathDesignForExtensionWithEnum",
93 "processData"),
94 };
95
96 final List<String> expectedXpathQueries = Arrays.asList(
97 "/COMPILATION_UNIT/CLASS_DEF[./IDENT"
98 + "[@text='InputXpathDesignForExtensionWithEnum']]/OBJBLOCK"
99 + "/METHOD_DEF[./IDENT[@text='processData']]",
100 "/COMPILATION_UNIT/CLASS_DEF[./IDENT"
101 + "[@text='InputXpathDesignForExtensionWithEnum']]/OBJBLOCK"
102 + "/METHOD_DEF[./IDENT[@text='processData']]/MODIFIERS",
103 "/COMPILATION_UNIT/CLASS_DEF[./IDENT"
104 + "[@text='InputXpathDesignForExtensionWithEnum']]/OBJBLOCK"
105 + "/METHOD_DEF[./IDENT[@text='processData']]/MODIFIERS/LITERAL_PUBLIC"
106 );
107
108
109 runVerifications(moduleConfig, fileToProcess, expected, expectedXpathQueries);
110
111 }
112 }