1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.checkstyle.suppressionxpathfilter;
21
22 import java.io.File;
23 import java.util.Collections;
24 import java.util.List;
25
26 import org.junit.jupiter.api.Test;
27
28 import com.puppycrawl.tools.checkstyle.DefaultConfiguration;
29 import com.puppycrawl.tools.checkstyle.checks.naming.AbstractNameCheck;
30 import com.puppycrawl.tools.checkstyle.checks.naming.MemberNameCheck;
31
32 public class XpathRegressionMemberNameTest extends AbstractXpathTestSupport {
33
34 private final String checkName = MemberNameCheck.class.getSimpleName();
35
36 @Override
37 protected String getCheckName() {
38 return checkName;
39 }
40
41 @Test
42 public void testDefault() throws Exception {
43 final File fileToProcess =
44 new File(getPath("InputXpathMemberNameDefault.java"));
45
46 final String pattern = "^[a-z][a-zA-Z0-9]*$";
47 final DefaultConfiguration moduleConfig =
48 createModuleConfig(MemberNameCheck.class);
49
50 final String[] expectedViolation = {
51 "5:17: " + getCheckMessage(MemberNameCheck.class,
52 AbstractNameCheck.MSG_INVALID_PATTERN, "NUM2", pattern),
53 };
54
55 final List<String> expectedXpathQueries = Collections.singletonList(
56 "/COMPILATION_UNIT"
57 + "/CLASS_DEF[./IDENT[@text"
58 + "='InputXpathMemberNameDefault']]"
59 + "/OBJBLOCK/VARIABLE_DEF/IDENT[@text='NUM2']"
60 );
61 runVerifications(moduleConfig, fileToProcess, expectedViolation,
62 expectedXpathQueries);
63 }
64
65 @Test
66 public void testIgnoreProtected() throws Exception {
67 final File fileToProcess =
68 new File(getPath("InputXpathMemberNameIgnoreProtected.java"));
69
70 final String pattern = "^m[A-Z][a-zA-Z0-9]*$";
71 final DefaultConfiguration moduleConfig =
72 createModuleConfig(MemberNameCheck.class);
73 moduleConfig.addProperty("format", "^m[A-Z][a-zA-Z0-9]*$");
74 moduleConfig.addProperty("applyToProtected", "false");
75 moduleConfig.addProperty("applyToPackage", "false");
76
77 final String[] expectedViolation = {
78 "6:20: " + getCheckMessage(MemberNameCheck.class,
79 AbstractNameCheck.MSG_INVALID_PATTERN, "NUM1", pattern),
80 };
81
82 final List<String> expectedXpathQueries = Collections.singletonList(
83 "/COMPILATION_UNIT"
84 + "/CLASS_DEF[./IDENT[@text"
85 + "='InputXpathMemberNameIgnoreProtected']]"
86 + "/OBJBLOCK/CLASS_DEF[./IDENT[@text='Inner']]"
87 + "/OBJBLOCK/VARIABLE_DEF/IDENT[@text='NUM1']"
88 );
89 runVerifications(moduleConfig, fileToProcess, expectedViolation,
90 expectedXpathQueries);
91 }
92
93 }