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
24 import org.junit.jupiter.api.BeforeEach;
25 import org.junit.jupiter.api.Test;
26
27 import com.puppycrawl.tools.checkstyle.TreeWalkerTest;
28 import com.puppycrawl.tools.checkstyle.api.AuditEvent;
29 import com.puppycrawl.tools.checkstyle.api.Violation;
30 import nl.jqno.equalsverifier.EqualsVerifier;
31 import nl.jqno.equalsverifier.EqualsVerifierReport;
32 import nl.jqno.equalsverifier.Warning;
33
34 public class SuppressFilterElementTest {
35
36 private SuppressFilterElement filter;
37
38 @BeforeEach
39 public void setUp() {
40 filter = new SuppressFilterElement("Test", "Test", null, null, null, null);
41 }
42
43 @Test
44 public void testDecideDefault() {
45 final AuditEvent ev = new AuditEvent(this, "Test.java");
46 assertWithMessage(ev.getFileName())
47 .that(filter.accept(ev))
48 .isTrue();
49 }
50
51 @Test
52 public void testDecideViolation() {
53 final Violation violation =
54 new Violation(1, 0, "", "", null, null, getClass(), null);
55 final AuditEvent ev = new AuditEvent(this, "ATest.java", violation);
56
57 assertWithMessage("Names match")
58 .that(filter.accept(ev))
59 .isFalse();
60 }
61
62 @Test
63 public void testDecideByMessage() {
64 final Violation violation =
65 new Violation(1, 0, "", "", null, null, getClass(), "Test");
66 final AuditEvent ev = new AuditEvent(this, "ATest.java", violation);
67 final SuppressFilterElement filter1 =
68 new SuppressFilterElement(null, null, "Test", null, null, null);
69 final SuppressFilterElement filter2 =
70 new SuppressFilterElement(null, null, "Bad", null, null, null);
71 assertWithMessage("Message match")
72 .that(filter1.accept(ev))
73 .isFalse();
74 assertWithMessage("Message not match")
75 .that(filter2.accept(ev))
76 .isTrue();
77 }
78
79 @Test
80 public void testDecideByLine() {
81 final Violation violation =
82 new Violation(10, 10, "", "", null, null, getClass(), null);
83 final AuditEvent ev = new AuditEvent(this, "ATest.java", violation);
84 final SuppressFilterElement filter1 =
85 new SuppressFilterElement("Test", "Test", null, null, "1-10", null);
86 final SuppressFilterElement filter2 =
87 new SuppressFilterElement("Test", "Test", null, null, "1-9, 11", null);
88 final SuppressFilterElement filter3 =
89 new SuppressFilterElement("Test", "Test", null, null, null, null);
90
91 assertWithMessage("In range 1-10")
92 .that(filter1.accept(ev))
93 .isFalse();
94 assertWithMessage("Not in 1-9, 11")
95 .that(filter2.accept(ev))
96 .isTrue();
97 assertWithMessage("none")
98 .that(filter3.accept(ev))
99 .isFalse();
100 }
101
102 @Test
103 public void testDecideByColumn() {
104 final Violation violation =
105 new Violation(10, 10, "", "", null, null, getClass(), null);
106 final AuditEvent ev = new AuditEvent(this, "ATest.java", violation);
107 final SuppressFilterElement filter1 =
108 new SuppressFilterElement("Test", "Test", null, null, null, "1-10");
109 final SuppressFilterElement filter2 =
110 new SuppressFilterElement("Test", "Test", null, null, null, "1-9, 11");
111
112
113 assertWithMessage("In range 1-10")
114 .that(filter1.accept(ev))
115 .isFalse();
116 assertWithMessage("Not in 1-9, 1)")
117 .that(filter2.accept(ev))
118 .isTrue();
119 }
120
121 @Test
122 public void testDecideByFileNameAndModuleMatchingFileNameNull() {
123 final Violation message =
124 new Violation(10, 10, "", "", null, null, getClass(), null);
125 final AuditEvent ev = new AuditEvent(this, null, message);
126 assertWithMessage("Filter should accept valid event")
127 .that(filter.accept(ev))
128 .isTrue();
129 }
130
131 @Test
132 public void testDecideByFileNameAndModuleMatchingMessageNull() {
133 final AuditEvent ev = new AuditEvent(this, "ATest.java", null);
134 assertWithMessage("Filter should accept valid event")
135 .that(filter.accept(ev))
136 .isTrue();
137 }
138
139 @Test
140 public void testDecideByFileNameAndModuleMatchingModuleNull() {
141 final Violation violation =
142 new Violation(10, 10, "", "", null, "MyModule", getClass(), null);
143 final AuditEvent ev = new AuditEvent(this, "ATest.java", violation);
144 assertWithMessage("Filter should not accept invalid event")
145 .that(filter.accept(ev))
146 .isFalse();
147 }
148
149 @Test
150 public void testDecideByFileNameAndModuleMatchingModuleEqual() {
151 final Violation violation =
152 new Violation(10, 10, "", "", null, "MyModule", getClass(), null);
153 final AuditEvent ev = new AuditEvent(this, "ATest.java", violation);
154 final SuppressFilterElement myFilter =
155 new SuppressFilterElement("Test", "Test", null, "MyModule", null, null);
156
157 assertWithMessage("Filter should not accept invalid event")
158 .that(myFilter.accept(ev))
159 .isFalse();
160 }
161
162 @Test
163 public void testDecideByFileNameAndModuleMatchingModuleNotEqual() {
164 final Violation message =
165 new Violation(10, 10, "", "", null, "TheirModule", getClass(), null);
166 final AuditEvent ev = new AuditEvent(this, "ATest.java", message);
167 final SuppressFilterElement myFilter =
168 new SuppressFilterElement("Test", "Test", null, "MyModule", null, null);
169
170 assertWithMessage("Filter should accept valid event")
171 .that(myFilter.accept(ev))
172 .isTrue();
173 }
174
175 @Test
176 public void testDecideByFileNameAndModuleMatchingRegExpNotMatch() {
177 final Violation message =
178 new Violation(10, 10, "", "", null, null, getClass(), null);
179 final AuditEvent ev = new AuditEvent(this, "T1est", message);
180 assertWithMessage("Filter should accept valid event")
181 .that(filter.accept(ev))
182 .isTrue();
183 }
184
185 @Test
186 public void testDecideByFileNameAndModuleMatchingRegExpMatch() {
187 final Violation message =
188 new Violation(10, 10, "", "", null, null, getClass(), null);
189 final AuditEvent ev = new AuditEvent(this, "TestSUFFIX", message);
190 final SuppressFilterElement myFilter =
191 new SuppressFilterElement("Test", null, null, null, null, null);
192 assertWithMessage("Filter should not accept invalid event")
193 .that(myFilter.accept(ev))
194 .isFalse();
195 }
196
197 @Test
198 public void testDecideByFileNameAndModuleMatchingCheckRegExpNotMatch() {
199 final Violation message =
200 new Violation(10, 10, "", "", null, null, getClass(), null);
201 final AuditEvent ev = new AuditEvent(this, "ATest.java", message);
202 final SuppressFilterElement myFilter = new SuppressFilterElement("Test",
203 "NON_EXISTENT_CHECK", null, "MyModule", null, null);
204 assertWithMessage("Filter should accept valid event")
205 .that(myFilter.accept(ev))
206 .isTrue();
207 }
208
209 @Test
210 public void testDecideByFileNameAndModuleMatchingCheckRegExpMatch() {
211 final Violation message =
212 new Violation(10, 10, "", "", null, null, getClass(), null);
213 final AuditEvent ev = new AuditEvent(this, "ATest.java", message);
214 final SuppressFilterElement myFilter = new SuppressFilterElement("Test",
215 getClass().getCanonicalName(), null, null, null, null);
216
217 assertWithMessage("Filter should not accept invalid event")
218 .that(myFilter.accept(ev))
219 .isFalse();
220 }
221
222 @Test
223 public void testDecideByFileNameAndSourceNameCheckRegExpNotMatch() {
224 final Violation message =
225 new Violation(10, 10, "", "", null, null, getClass(), null);
226 final AuditEvent ev = new AuditEvent(this, "ATest.java", message);
227 final SuppressFilterElement myFilter =
228 new SuppressFilterElement("Test", TreeWalkerTest.class.getCanonicalName(),
229 null, null, null, null);
230
231 assertWithMessage("Filter should not accept invalid event")
232 .that(myFilter.accept(ev))
233 .isTrue();
234 }
235
236 @Test
237 public void testEquals() {
238
239
240 final SuppressFilterElement filterBased =
241 new SuppressFilterElement("Test", "Test", null, null, null, null);
242
243 final SuppressFilterElement filter2 =
244 new SuppressFilterElement("Test", "Test", null, null, null, null);
245 assertWithMessage("filter, filter2")
246 .that(filter2)
247 .isEqualTo(filterBased);
248 final SuppressFilterElement filter3 =
249 new SuppressFilterElement("Test", "Test3", null, null, null, null);
250 assertWithMessage("filter, filter3")
251 .that(filter3)
252 .isNotEqualTo(filterBased);
253 final SuppressFilterElement filterBased1 =
254 new SuppressFilterElement("Test", "Test", null, null, null, "1-10");
255
256 assertWithMessage("filter, filter2")
257 .that(filter2)
258 .isNotEqualTo(filterBased1);
259 final SuppressFilterElement filter22 =
260 new SuppressFilterElement("Test", "Test", null, null, null, "1-10");
261 assertWithMessage("filter, filter2")
262 .that(filter22)
263 .isEqualTo(filterBased1);
264 assertWithMessage("filter, filter2")
265 .that(filter2)
266 .isNotEqualTo(filterBased1);
267 final SuppressFilterElement filterBased2 =
268 new SuppressFilterElement("Test", "Test", null, null, "3,4", null);
269 assertWithMessage("filter, filter2")
270 .that(filter2)
271 .isNotEqualTo(filterBased2);
272 final SuppressFilterElement filter23 =
273 new SuppressFilterElement("Test", "Test", null, null, "3,4", null);
274 assertWithMessage("filter, filter2")
275 .that(filter23)
276 .isEqualTo(filterBased2);
277 assertWithMessage("filter, filter2")
278 .that(filter2)
279 .isNotEqualTo(filterBased2);
280 assertWithMessage("filter, filter2")
281 .that(filter23)
282 .isEqualTo(filterBased2);
283 }
284
285 @Test
286 public void testEqualsAndHashCode() {
287 final EqualsVerifierReport ev = EqualsVerifier.forClass(SuppressFilterElement.class)
288 .usingGetClass()
289 .withIgnoredFields("columnFilter", "lineFilter")
290 .suppress(Warning.NONFINAL_FIELDS)
291 .report();
292 assertWithMessage("Error: " + ev.getMessage())
293 .that(ev.isSuccessful())
294 .isTrue();
295 }
296
297 }