1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package com.puppycrawl.tools.checkstyle.filters;
21
22 import static com.google.common.truth.Truth.assertWithMessage;
23 import static com.puppycrawl.tools.checkstyle.checks.regexp.RegexpSinglelineCheck.MSG_REGEXP_EXCEEDED;
24 import static com.puppycrawl.tools.checkstyle.internal.utils.TestUtil.getExpectedThrowable;
25
26 import org.junit.jupiter.api.Test;
27
28 import com.puppycrawl.tools.checkstyle.AbstractModuleTestSupport;
29 import com.puppycrawl.tools.checkstyle.checks.regexp.RegexpSinglelineCheck;
30 import nl.jqno.equalsverifier.EqualsVerifier;
31 import nl.jqno.equalsverifier.EqualsVerifierReport;
32
33 public class CsvFilterElementTest extends AbstractModuleTestSupport {
34
35 @Override
36 public String getPackageLocation() {
37 return "com/puppycrawl/tools/checkstyle/filters/csvfilterelement";
38 }
39
40 @Test
41 public void testDecideSingle() {
42 final IntFilterElement filter = new CsvFilterElement("0");
43 assertWithMessage("less than")
44 .that(filter.accept(-1))
45 .isFalse();
46 assertWithMessage("equal")
47 .that(filter.accept(0))
48 .isTrue();
49 assertWithMessage("greater than")
50 .that(filter.accept(1))
51 .isFalse();
52 }
53
54 @Test
55 public void testDecidePair() {
56 final IntFilterElement filter = new CsvFilterElement("0, 2");
57 assertWithMessage("less than")
58 .that(filter.accept(-1))
59 .isFalse();
60 assertWithMessage("equal 0")
61 .that(filter.accept(0))
62 .isTrue();
63 assertWithMessage("greater than")
64 .that(filter.accept(1))
65 .isFalse();
66 assertWithMessage("equal 2")
67 .that(filter.accept(2))
68 .isTrue();
69 }
70
71 @Test
72 public void testDecideRange() {
73 final IntFilterElement filter = new CsvFilterElement("0-2");
74 assertWithMessage("less than")
75 .that(filter.accept(-1))
76 .isFalse();
77 assertWithMessage("equal 0")
78 .that(filter.accept(0))
79 .isTrue();
80 assertWithMessage("equal 1")
81 .that(filter.accept(1))
82 .isTrue();
83 assertWithMessage("equal 2")
84 .that(filter.accept(2))
85 .isTrue();
86 assertWithMessage("greater than")
87 .that(filter.accept(3))
88 .isFalse();
89 }
90
91 @Test
92 public void testDecideEmptyRange() {
93 final IntFilterElement filter = new CsvFilterElement("2-0");
94 assertWithMessage("less than")
95 .that(filter.accept(-1))
96 .isFalse();
97 assertWithMessage("equal 0")
98 .that(filter.accept(0))
99 .isFalse();
100 assertWithMessage("equal 1")
101 .that(filter.accept(1))
102 .isFalse();
103 assertWithMessage("equal 2")
104 .that(filter.accept(2))
105 .isFalse();
106 assertWithMessage("greater than")
107 .that(filter.accept(3))
108 .isFalse();
109 }
110
111 @Test
112 public void testDecideRangePlusValue() {
113 final IntFilterElement filter = new CsvFilterElement("0-2, 10");
114 assertWithMessage("less than")
115 .that(filter.accept(-1))
116 .isFalse();
117 assertWithMessage("equal 0")
118 .that(filter.accept(0))
119 .isTrue();
120 assertWithMessage("equal 1")
121 .that(filter.accept(1))
122 .isTrue();
123 assertWithMessage("equal 2")
124 .that(filter.accept(2))
125 .isTrue();
126 assertWithMessage("greater than")
127 .that(filter.accept(3))
128 .isFalse();
129 assertWithMessage("equal 10")
130 .that(filter.accept(10))
131 .isTrue();
132 }
133
134 @Test
135 public void testEmptyChain() {
136 final CsvFilterElement filter = new CsvFilterElement("");
137 assertWithMessage("0")
138 .that(filter.accept(0))
139 .isFalse();
140 }
141
142 @Test
143 public void testEqualsAndHashCode() {
144 final EqualsVerifierReport ev = EqualsVerifier.forClass(CsvFilterElement.class)
145 .usingGetClass().report();
146 assertWithMessage("Error: %s", ev.getMessage())
147 .that(ev.isSuccessful())
148 .isTrue();
149 }
150
151 @Test
152 public void testEmptyTokens() throws Exception {
153 final String[] expectedUnfiltered = {
154 "26: "
155 + getCheckMessage(RegexpSinglelineCheck.class,
156 MSG_REGEXP_EXCEEDED, "TODO$"),
157 "28: "
158 + getCheckMessage(RegexpSinglelineCheck.class,
159 MSG_REGEXP_EXCEEDED, "TODO$"),
160 "30: "
161 + getCheckMessage(RegexpSinglelineCheck.class,
162 MSG_REGEXP_EXCEEDED, "TODO$"),
163 };
164 final String[] expectedFiltered = {
165 "28: "
166 + getCheckMessage(RegexpSinglelineCheck.class,
167 MSG_REGEXP_EXCEEDED, "TODO$"),
168 };
169
170 verifyFilterWithInlineConfigParser(
171 getPath("InputCsvFilterElementEmptyTokens.java"),
172 expectedUnfiltered,
173 expectedFiltered);
174 }
175
176 @Test
177 public void testBlankToken() {
178 final String[] expectedViolation = {
179 "26: "
180 + getCheckMessage(RegexpSinglelineCheck.class,
181 MSG_REGEXP_EXCEEDED, "TODO$"),
182 "28: "
183 + getCheckMessage(RegexpSinglelineCheck.class,
184 MSG_REGEXP_EXCEEDED, "TODO$"),
185 };
186
187 final NumberFormatException ex = getExpectedThrowable(NumberFormatException.class, () -> {
188 verifyFilterWithInlineConfigParser(
189 getPath("InputCsvFilterElementBlankToken.java"),
190 expectedViolation);
191 });
192 assertWithMessage("Invalid exception message")
193 .that(ex.getMessage())
194 .isEqualTo("For input string: \"\"");
195 }
196
197 }