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.Arrays;
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.sizes.AnonInnerLengthCheck;
30
31 public class XpathRegressionAnonInnerLengthTest extends AbstractXpathTestSupport {
32
33 private final String checkName = AnonInnerLengthCheck.class.getSimpleName();
34
35 @Override
36 protected String getCheckName() {
37 return checkName;
38 }
39
40 @Test
41 public void testDefault() throws Exception {
42 final File fileToProcess =
43 new File(getPath("InputXpathAnonInnerLengthDefault.java"));
44
45 final DefaultConfiguration moduleConfig =
46 createModuleConfig(AnonInnerLengthCheck.class);
47
48 final String[] expectedViolation = {
49 "7:29: " + getCheckMessage(AnonInnerLengthCheck.class,
50 AnonInnerLengthCheck.MSG_KEY, 26, 20),
51 };
52
53 final List<String> expectedXpathQueries = Arrays.asList(
54 "/COMPILATION_UNIT/CLASS_DEF"
55 + "[./IDENT[@text='InputXpathAnonInnerLengthDefault']]"
56 + "/OBJBLOCK/METHOD_DEF[./IDENT[@text='test']]"
57 + "/SLIST/VARIABLE_DEF[./IDENT[@text='runnable']]"
58 + "/ASSIGN/EXPR",
59 "/COMPILATION_UNIT/CLASS_DEF"
60 + "[./IDENT[@text='InputXpathAnonInnerLengthDefault']]"
61 + "/OBJBLOCK/METHOD_DEF[./IDENT[@text='test']]"
62 + "/SLIST/VARIABLE_DEF[./IDENT[@text='runnable']]"
63 + "/ASSIGN/EXPR/LITERAL_NEW[./IDENT[@text='Runnable']]"
64 );
65
66 runVerifications(moduleConfig, fileToProcess, expectedViolation,
67 expectedXpathQueries);
68 }
69
70 @Test
71 public void testMaxLength() throws Exception {
72 final int maxLen = 5;
73 final File fileToProcess =
74 new File(getPath("InputXpathAnonInnerLength.java"));
75
76 final DefaultConfiguration moduleConfig =
77 createModuleConfig(AnonInnerLengthCheck.class);
78 moduleConfig.addProperty("max", String.valueOf(maxLen));
79
80 final String[] expectedViolation = {
81 "7:35: " + getCheckMessage(AnonInnerLengthCheck.class,
82 AnonInnerLengthCheck.MSG_KEY, 6, maxLen),
83 };
84
85 final List<String> expectedXpathQueries = Arrays.asList(
86 "/COMPILATION_UNIT/CLASS_DEF"
87 + "[./IDENT[@text='InputXpathAnonInnerLength']]"
88 + "/OBJBLOCK/METHOD_DEF[./IDENT[@text='compare']]/SLIST"
89 + "/VARIABLE_DEF[./IDENT[@text='comp']]/ASSIGN/EXPR",
90 "/COMPILATION_UNIT/CLASS_DEF"
91 + "[./IDENT[@text='InputXpathAnonInnerLength']]"
92 + "/OBJBLOCK/METHOD_DEF[./IDENT[@text='compare']]/SLIST"
93 + "/VARIABLE_DEF[./IDENT[@text='comp']]/ASSIGN/EXPR"
94 + "/LITERAL_NEW[./IDENT[@text='Comparator']]"
95 );
96
97 runVerifications(moduleConfig, fileToProcess, expectedViolation,
98 expectedXpathQueries);
99 }
100 }