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