1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.checkstyle.suppressionxpathfilter.coding;
21
22 import java.io.File;
23 import java.util.Arrays;
24 import java.util.Collections;
25 import java.util.List;
26
27 import org.checkstyle.suppressionxpathfilter.AbstractXpathTestSupport;
28 import org.junit.jupiter.api.Test;
29
30 import com.puppycrawl.tools.checkstyle.DefaultConfiguration;
31 import com.puppycrawl.tools.checkstyle.checks.coding.MissingNullCaseInSwitchCheck;
32
33 public class XpathRegressionMissingNullCaseInSwitchTest
34 extends AbstractXpathTestSupport {
35
36 @Override
37 protected String getCheckName() {
38 return MissingNullCaseInSwitchCheck.class.getSimpleName();
39 }
40
41 @Override
42 protected String getPackageLocation() {
43 return "org/checkstyle/suppressionxpathfilter/coding/missingnullcaseinswitch";
44 }
45
46 @Test
47 public void testSimple() throws Exception {
48 final File fileToProcess =
49 new File(getPath(
50 "InputXpathMissingNullCaseInSwitchSimple.java"));
51
52 final DefaultConfiguration moduleConfig =
53 createModuleConfig(MissingNullCaseInSwitchCheck.class);
54 final String[] expectedViolation = {
55 "8:9: " + getCheckMessage(MissingNullCaseInSwitchCheck.class,
56 MissingNullCaseInSwitchCheck.MSG_KEY),
57 };
58
59 final List<String> expectedXpathQueries = Collections.singletonList(
60 "/COMPILATION_UNIT/CLASS_DEF[./IDENT"
61 + "[@text='InputXpathMissingNullCaseInSwitchSimple']]"
62 + "/OBJBLOCK/METHOD_DEF[./IDENT[@text='test']]/SLIST/LITERAL_SWITCH"
63 );
64 runVerifications(moduleConfig, fileToProcess, expectedViolation, expectedXpathQueries);
65 }
66
67 @Test
68 public void testNestedExpression() throws Exception {
69 final File fileToProcess =
70 new File(getPath("InputXpathMissingNullCaseInSwitchNested.java"));
71
72 final DefaultConfiguration moduleConfig =
73 createModuleConfig(MissingNullCaseInSwitchCheck.class);
74 final String[] expectedViolation = {
75 "11:25: " + getCheckMessage(MissingNullCaseInSwitchCheck.class,
76 MissingNullCaseInSwitchCheck.MSG_KEY),
77 };
78
79 final List<String> expectedXpathQueries = Arrays.asList(
80 "/COMPILATION_UNIT/CLASS_DEF[./IDENT"
81 + "[@text='InputXpathMissingNullCaseInSwitchNested']]"
82 + "/OBJBLOCK/METHOD_DEF[./IDENT[@text='test']]/SLIST/VARIABLE_DEF"
83 + "[./IDENT[@text='x']]/ASSIGN/EXPR/LITERAL_SWITCH/SWITCH_RULE/SLIST"
84 + "/VARIABLE_DEF[./IDENT[@text='y']]/ASSIGN/EXPR",
85 "/COMPILATION_UNIT/CLASS_DEF[./IDENT"
86 + "[@text='InputXpathMissingNullCaseInSwitchNested']]"
87 + "/OBJBLOCK/METHOD_DEF[./IDENT[@text='test']]/SLIST/VARIABLE_DEF"
88 + "[./IDENT[@text='x']]/ASSIGN/EXPR/LITERAL_SWITCH"
89 + "/SWITCH_RULE/SLIST/VARIABLE_DEF"
90 + "[./IDENT[@text='y']]/ASSIGN/EXPR/LITERAL_SWITCH"
91 );
92 runVerifications(moduleConfig, fileToProcess, expectedViolation, expectedXpathQueries);
93 }
94 }