1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.checkstyle.suppressionxpathfilter.metrics;
21
22 import java.io.File;
23 import java.util.Collections;
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.metrics.BooleanExpressionComplexityCheck;
31
32 public class XpathRegressionBooleanExpressionComplexityTest
33 extends AbstractXpathTestSupport {
34
35 @Override
36 protected String getCheckName() {
37 return BooleanExpressionComplexityCheck.class.getSimpleName();
38 }
39
40 @Override
41 protected String getPackageLocation() {
42 return "org/checkstyle/suppressionxpathfilter/metrics/booleanexpressioncomplexity";
43 }
44
45 @Test
46 public void testCatchBlock() throws Exception {
47 final File fileToProcess =
48 new File(getPath("InputXpathBooleanExpressionComplexityCatchBlock.java"));
49
50 final DefaultConfiguration moduleConfig =
51 createModuleConfig(BooleanExpressionComplexityCheck.class);
52
53 final String[] expectedViolationMessages = {
54 "10:23: " + getCheckMessage(BooleanExpressionComplexityCheck.class,
55 BooleanExpressionComplexityCheck.MSG_KEY, 11, 3),
56 };
57
58 final List<String> expectedXpathQueries = Collections.singletonList(
59 "/COMPILATION_UNIT/CLASS_DEF[./IDENT"
60 + "[@text='InputXpathBooleanExpressionComplexityCatchBlock']]"
61 + "/OBJBLOCK/METHOD_DEF[./IDENT[@text='methodOne']]/SLIST"
62 + "/LITERAL_TRY/LITERAL_CATCH/SLIST/VARIABLE_DEF"
63 + "[./IDENT[@text='d']]/ASSIGN"
64 );
65
66 runVerifications(moduleConfig, fileToProcess,
67 expectedViolationMessages, expectedXpathQueries);
68 }
69
70 @Test
71 public void testClassFields() throws Exception {
72 final File fileToProcess =
73 new File(getPath("InputXpathBooleanExpressionComplexityClassFields.java"));
74
75 final DefaultConfiguration moduleConfig =
76 createModuleConfig(BooleanExpressionComplexityCheck.class);
77
78 final String[] expectedViolationMessages = {
79 "9:19: " + getCheckMessage(BooleanExpressionComplexityCheck.class,
80 BooleanExpressionComplexityCheck.MSG_KEY, 11, 3),
81 };
82
83 final List<String> expectedXpathQueries = Collections.singletonList(
84 "/COMPILATION_UNIT/CLASS_DEF[./IDENT["
85 + "@text='InputXpathBooleanExpressionComplexityClassFields']]"
86 + "/OBJBLOCK/METHOD_DEF[./IDENT[@text='methodTwo']]/SLIST/VARIABLE_DEF"
87 + "[./IDENT[@text='d']]/ASSIGN"
88 );
89
90 runVerifications(moduleConfig, fileToProcess,
91 expectedViolationMessages, expectedXpathQueries);
92 }
93
94 @Test
95 public void testConditionals() throws Exception {
96 final File fileToProcess =
97 new File(getPath("InputXpathBooleanExpressionComplexityConditionals.java"));
98
99 final DefaultConfiguration moduleConfig =
100 createModuleConfig(BooleanExpressionComplexityCheck.class);
101
102 final String[] expectedViolationMessages = {
103 "9:9: " + getCheckMessage(BooleanExpressionComplexityCheck.class,
104 BooleanExpressionComplexityCheck.MSG_KEY, 4, 3),
105 };
106
107 final List<String> expectedXpathQueries = Collections.singletonList(
108 "/COMPILATION_UNIT/CLASS_DEF[./IDENT["
109 + "@text='InputXpathBooleanExpressionComplexityConditionals']]"
110 + "/OBJBLOCK/METHOD_DEF[./IDENT[@text='methodThree']]/SLIST/LITERAL_IF"
111 );
112
113 runVerifications(moduleConfig, fileToProcess,
114 expectedViolationMessages, expectedXpathQueries);
115 }
116 }