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.checks.coding;
21
22 import static com.google.common.truth.Truth.assertWithMessage;
23 import static com.puppycrawl.tools.checkstyle.checks.coding.FallThroughCheck.MSG_FALL_THROUGH;
24 import static com.puppycrawl.tools.checkstyle.checks.coding.FallThroughCheck.MSG_FALL_THROUGH_LAST;
25
26 import org.junit.jupiter.api.Test;
27
28 import com.puppycrawl.tools.checkstyle.AbstractModuleTestSupport;
29 import com.puppycrawl.tools.checkstyle.utils.CommonUtil;
30
31 public class FallThroughCheckTest extends AbstractModuleTestSupport {
32
33 @Override
34 protected String getPackageLocation() {
35 return "com/puppycrawl/tools/checkstyle/checks/coding/fallthrough";
36 }
37
38 @Test
39 public void testDefault() throws Exception {
40 final String[] expected = {
41 "22:13: " + getCheckMessage(MSG_FALL_THROUGH),
42 "46:13: " + getCheckMessage(MSG_FALL_THROUGH),
43 "55:13: " + getCheckMessage(MSG_FALL_THROUGH),
44 "61:13: " + getCheckMessage(MSG_FALL_THROUGH),
45 "78:13: " + getCheckMessage(MSG_FALL_THROUGH),
46 "95:13: " + getCheckMessage(MSG_FALL_THROUGH),
47 "131:13: " + getCheckMessage(MSG_FALL_THROUGH),
48 "187:11: " + getCheckMessage(MSG_FALL_THROUGH),
49 "377:11: " + getCheckMessage(MSG_FALL_THROUGH),
50 "380:11: " + getCheckMessage(MSG_FALL_THROUGH),
51 "382:27: " + getCheckMessage(MSG_FALL_THROUGH),
52 "424:13: " + getCheckMessage(MSG_FALL_THROUGH),
53 "432:9: " + getCheckMessage(MSG_FALL_THROUGH),
54 "444:9: " + getCheckMessage(MSG_FALL_THROUGH),
55 "454:9: " + getCheckMessage(MSG_FALL_THROUGH),
56 "490:9: " + getCheckMessage(MSG_FALL_THROUGH),
57 "491:9: " + getCheckMessage(MSG_FALL_THROUGH),
58 "492:9: " + getCheckMessage(MSG_FALL_THROUGH),
59 "529:15: " + getCheckMessage(MSG_FALL_THROUGH),
60 "531:15: " + getCheckMessage(MSG_FALL_THROUGH),
61 "533:15: " + getCheckMessage(MSG_FALL_THROUGH),
62 "535:15: " + getCheckMessage(MSG_FALL_THROUGH),
63 "537:15: " + getCheckMessage(MSG_FALL_THROUGH),
64 };
65 verifyWithInlineConfigParser(
66 getPath("InputFallThroughDefault.java"),
67 expected);
68 }
69
70 @Test
71 public void testTryWithResources() throws Exception {
72 final String[] expected = CommonUtil.EMPTY_STRING_ARRAY;
73 verifyWithInlineConfigParser(
74 getNonCompilablePath("InputFallThrough.java"),
75 expected);
76 }
77
78 @Test
79 public void testTryCatchInSwitch() throws Exception {
80 final String[] expected = {
81 "37:13: " + getCheckMessage(MSG_FALL_THROUGH),
82 };
83 verifyWithInlineConfigParser(getPath("InputFallThroughTryCatchInSwitch.java"), expected);
84 }
85
86 @Test
87 public void testStringSwitch() throws Exception {
88 final String[] expected = {
89 "21:9: " + getCheckMessage(MSG_FALL_THROUGH),
90 };
91 verifyWithInlineConfigParser(getPath("InputFallThroughStringSwitch.java"), expected);
92 }
93
94 @Test
95 public void testCharacterSwitch() throws Exception {
96 final String[] expected = {
97 "19:13: " + getCheckMessage(MSG_FALL_THROUGH),
98 "30:13: " + getCheckMessage(MSG_FALL_THROUGH),
99 "38:13: " + getCheckMessage(MSG_FALL_THROUGH),
100 "44:17: " + getCheckMessage(MSG_FALL_THROUGH),
101 "48:13: " + getCheckMessage(MSG_FALL_THROUGH),
102 "63:13: " + getCheckMessage(MSG_FALL_THROUGH),
103 };
104 verifyWithInlineConfigParser(getPath("InputFallThroughCharacterSwitch.java"), expected);
105 }
106
107 @Test
108 public void testLastCaseGroup() throws Exception {
109 final String[] expected = {
110 "22:13: " + getCheckMessage(MSG_FALL_THROUGH),
111 "46:13: " + getCheckMessage(MSG_FALL_THROUGH),
112 "55:13: " + getCheckMessage(MSG_FALL_THROUGH),
113 "61:13: " + getCheckMessage(MSG_FALL_THROUGH),
114 "78:13: " + getCheckMessage(MSG_FALL_THROUGH),
115 "95:13: " + getCheckMessage(MSG_FALL_THROUGH),
116 "131:13: " + getCheckMessage(MSG_FALL_THROUGH),
117 "131:13: " + getCheckMessage(MSG_FALL_THROUGH_LAST),
118 "187:11: " + getCheckMessage(MSG_FALL_THROUGH),
119 "377:11: " + getCheckMessage(MSG_FALL_THROUGH),
120 "380:11: " + getCheckMessage(MSG_FALL_THROUGH),
121 "382:40: " + getCheckMessage(MSG_FALL_THROUGH),
122 "384:11: " + getCheckMessage(MSG_FALL_THROUGH_LAST),
123 "424:13: " + getCheckMessage(MSG_FALL_THROUGH),
124 "432:9: " + getCheckMessage(MSG_FALL_THROUGH),
125 "444:9: " + getCheckMessage(MSG_FALL_THROUGH),
126 "454:9: " + getCheckMessage(MSG_FALL_THROUGH),
127 "491:9: " + getCheckMessage(MSG_FALL_THROUGH),
128 "492:9: " + getCheckMessage(MSG_FALL_THROUGH),
129 };
130 verifyWithInlineConfigParser(
131 getPath("InputFallThrough.java"),
132 expected);
133 }
134
135 @Test
136 public void testOwnPattern() throws Exception {
137
138 final String[] expected = {
139 "22:13: " + getCheckMessage(MSG_FALL_THROUGH),
140 "46:13: " + getCheckMessage(MSG_FALL_THROUGH),
141 "55:13: " + getCheckMessage(MSG_FALL_THROUGH),
142 "61:13: " + getCheckMessage(MSG_FALL_THROUGH),
143 "78:13: " + getCheckMessage(MSG_FALL_THROUGH),
144 "95:13: " + getCheckMessage(MSG_FALL_THROUGH),
145 "131:13: " + getCheckMessage(MSG_FALL_THROUGH),
146 "153:11: " + getCheckMessage(MSG_FALL_THROUGH),
147 "178:11: " + getCheckMessage(MSG_FALL_THROUGH),
148 "187:11: " + getCheckMessage(MSG_FALL_THROUGH),
149 "194:11: " + getCheckMessage(MSG_FALL_THROUGH),
150 "212:11: " + getCheckMessage(MSG_FALL_THROUGH),
151 "230:11: " + getCheckMessage(MSG_FALL_THROUGH),
152 "260:26: " + getCheckMessage(MSG_FALL_THROUGH),
153 "274:11: " + getCheckMessage(MSG_FALL_THROUGH),
154 "289:11: " + getCheckMessage(MSG_FALL_THROUGH),
155 "292:11: " + getCheckMessage(MSG_FALL_THROUGH),
156 "296:11: " + getCheckMessage(MSG_FALL_THROUGH),
157 "298:25: " + getCheckMessage(MSG_FALL_THROUGH),
158 "314:11: " + getCheckMessage(MSG_FALL_THROUGH),
159 "317:11: " + getCheckMessage(MSG_FALL_THROUGH),
160 "319:25: " + getCheckMessage(MSG_FALL_THROUGH),
161 "335:11: " + getCheckMessage(MSG_FALL_THROUGH),
162 "338:11: " + getCheckMessage(MSG_FALL_THROUGH),
163 "340:23: " + getCheckMessage(MSG_FALL_THROUGH),
164 "356:11: " + getCheckMessage(MSG_FALL_THROUGH),
165 "359:11: " + getCheckMessage(MSG_FALL_THROUGH),
166 "361:30: " + getCheckMessage(MSG_FALL_THROUGH),
167 "424:13: " + getCheckMessage(MSG_FALL_THROUGH),
168 "432:9: " + getCheckMessage(MSG_FALL_THROUGH),
169 "444:9: " + getCheckMessage(MSG_FALL_THROUGH),
170 "454:9: " + getCheckMessage(MSG_FALL_THROUGH),
171 "481:12: " + getCheckMessage(MSG_FALL_THROUGH),
172 "490:9: " + getCheckMessage(MSG_FALL_THROUGH),
173 "491:9: " + getCheckMessage(MSG_FALL_THROUGH),
174 "492:9: " + getCheckMessage(MSG_FALL_THROUGH),
175 };
176 verifyWithInlineConfigParser(
177 getPath("InputFallThrough3.java"),
178 expected);
179 }
180
181 @Test
182 public void testOwnPatternTryWithResources() throws Exception {
183
184 final String[] expected = {
185 "54:9: " + getCheckMessage(MSG_FALL_THROUGH),
186 "58:9: " + getCheckMessage(MSG_FALL_THROUGH),
187 "64:9: " + getCheckMessage(MSG_FALL_THROUGH),
188 "70:9: " + getCheckMessage(MSG_FALL_THROUGH),
189 "77:9: " + getCheckMessage(MSG_FALL_THROUGH),
190 };
191 verifyWithInlineConfigParser(
192 getNonCompilablePath("InputFallThrough2.java"),
193 expected);
194 }
195
196 @Test
197 public void testWithEmoji() throws Exception {
198 final String[] expected = {
199 "22:17: " + getCheckMessage(MSG_FALL_THROUGH),
200 "25:17: " + getCheckMessage(MSG_FALL_THROUGH),
201 "49:17: " + getCheckMessage(MSG_FALL_THROUGH),
202 "52:17: " + getCheckMessage(MSG_FALL_THROUGH),
203 };
204 verifyWithInlineConfigParser(
205 getPath("InputFallThroughWithEmoji.java"), expected);
206 }
207
208 @Test
209 public void testTokensNotNull() {
210 final FallThroughCheck check = new FallThroughCheck();
211 assertWithMessage("Acceptable tokens should not be null")
212 .that(check.getAcceptableTokens())
213 .isNotNull();
214 assertWithMessage("Default tokens should not be null")
215 .that(check.getDefaultTokens())
216 .isNotNull();
217 assertWithMessage("Required tokens should not be null")
218 .that(check.getRequiredTokens())
219 .isNotNull();
220 }
221
222 @Test
223 public void testFallThroughNoElse() throws Exception {
224 final String[] expected = {
225 "28:13: " + getCheckMessage(MSG_FALL_THROUGH),
226 "43:13: " + getCheckMessage(MSG_FALL_THROUGH),
227 "47:13: " + getCheckMessage(MSG_FALL_THROUGH),
228 "54:13: " + getCheckMessage(MSG_FALL_THROUGH),
229 "68:13: " + getCheckMessage(MSG_FALL_THROUGH),
230 "75:13: " + getCheckMessage(MSG_FALL_THROUGH),
231 "88:21: " + getCheckMessage(MSG_FALL_THROUGH),
232 "94:13: " + getCheckMessage(MSG_FALL_THROUGH),
233 "96:13: " + getCheckMessage(MSG_FALL_THROUGH),
234 };
235 verifyWithInlineConfigParser(
236 getPath("InputFallThrough2.java"),
237 expected);
238 }
239
240 @Test
241 public void testYield() throws Exception {
242 final String[] expected = {
243 "19:9: " + getCheckMessage(MSG_FALL_THROUGH),
244 };
245 verifyWithInlineConfigParser(
246 getNonCompilablePath("InputFallThrough3.java"),
247 expected);
248 }
249
250 @Test
251 public void testLastCase() throws Exception {
252 final String[] expected = {
253 "48:11: " + getCheckMessage(MSG_FALL_THROUGH_LAST),
254 "83:11: " + getCheckMessage(MSG_FALL_THROUGH_LAST),
255 };
256 verifyWithInlineConfigParser(
257 getPath("InputFallThrough4.java"),
258 expected);
259 }
260
261 @Test
262 public void testIfElse() throws Exception {
263 final String[] expected = {
264 "94:13: " + getCheckMessage(MSG_FALL_THROUGH),
265 };
266 verifyWithInlineConfigParser(
267 getPath("InputFallThrough5.java"),
268 expected);
269 }
270
271 @Test
272 public void testFallThrough() throws Exception {
273 final String[] expected = {
274 "23:13: " + getCheckMessage(MSG_FALL_THROUGH),
275 "27:13: " + getCheckMessage(MSG_FALL_THROUGH),
276 "52:13: " + getCheckMessage(MSG_FALL_THROUGH),
277 "65:13: " + getCheckMessage(MSG_FALL_THROUGH),
278 "80:13: " + getCheckMessage(MSG_FALL_THROUGH),
279 "94:13: " + getCheckMessage(MSG_FALL_THROUGH),
280 "109:13: " + getCheckMessage(MSG_FALL_THROUGH),
281 };
282 verifyWithInlineConfigParser(
283 getPath("InputFallThrough6.java"),
284 expected);
285 }
286
287 @Test
288 public void testFallThroughNonCompilable4() throws Exception {
289 final String[] expected = CommonUtil.EMPTY_STRING_ARRAY;
290 verifyWithInlineConfigParser(
291 getNonCompilablePath("InputFallThrough4.java"),
292 expected);
293 }
294
295 @Test
296 public void testFallThroughComment() throws Exception {
297 final String[] expected = {
298 "20:13: " + getCheckMessage(MSG_FALL_THROUGH),
299 "43:13: " + getCheckMessage(MSG_FALL_THROUGH),
300 };
301 verifyWithInlineConfigParser(
302 getPath("InputFallThroughFallThroughLotsOfComment.java"),
303 expected);
304 }
305
306 @Test
307 public void testFallThroughComment2() throws Exception {
308 final String[] expected = CommonUtil.EMPTY_STRING_ARRAY;
309 verifyWithInlineConfigParser(
310 getPath("InputFallThroughFallThroughLotsOfComment2.java"),
311 expected);
312 }
313
314 @Test
315 public void testFallThrough7() throws Exception {
316 final String[] expected = {
317 "21:13: " + getCheckMessage(MSG_FALL_THROUGH_LAST),
318 "36:13: " + getCheckMessage(MSG_FALL_THROUGH_LAST),
319 "50:13: " + getCheckMessage(MSG_FALL_THROUGH),
320 "50:13: " + getCheckMessage(MSG_FALL_THROUGH_LAST),
321 "64:13: " + getCheckMessage(MSG_FALL_THROUGH),
322 "111:13: " + getCheckMessage(MSG_FALL_THROUGH_LAST),
323 };
324 verifyWithInlineConfigParser(
325 getPath("InputFallThrough7.java"),
326 expected);
327 }
328
329 @Test
330 public void testLastLine() throws Exception {
331 final String[] expected = {
332 "21:13: " + getCheckMessage(MSG_FALL_THROUGH),
333 "99:39: " + getCheckMessage(MSG_FALL_THROUGH_LAST),
334 };
335 verifyWithInlineConfigParser(
336 getPath("InputFallThroughLastLineCommentCheck.java"),
337 expected);
338 }
339
340 @Test
341 public void testLastLine2() throws Exception {
342 final String[] expected = {
343 "19:13: " + getCheckMessage(MSG_FALL_THROUGH_LAST),
344 "22:13: " + getCheckMessage(MSG_FALL_THROUGH_LAST),
345 };
346 verifyWithInlineConfigParser(
347 getNonCompilablePath("InputFallThrough5.java"),
348 expected);
349 }
350
351 @Test
352 public void testReliefCommentBetweenMultipleComment() throws Exception {
353 final String[] expected = {};
354 verifyWithInlineConfigParser(
355 getPath("InputFallThrough8.java"),
356 expected);
357 }
358
359 @Test
360 public void testLabeledBreak() throws Exception {
361 final String[] expected = {
362 "51:17: " + getCheckMessage(MSG_FALL_THROUGH),
363 "55:17: " + getCheckMessage(MSG_FALL_THROUGH),
364 "69:17: " + getCheckMessage(MSG_FALL_THROUGH),
365 "78:17: " + getCheckMessage(MSG_FALL_THROUGH),
366 "88:17: " + getCheckMessage(MSG_FALL_THROUGH),
367 };
368 verifyWithInlineConfigParser(
369 getPath("InputFallThroughLabeledBreak.java"),
370 expected);
371
372 }
373
374 @Test
375 public void testSwitchLabeledRules() throws Exception {
376 final String[] expected = {};
377
378 verifyWithInlineConfigParser(
379 getNonCompilablePath("InputFallThroughSwitchRules.java"),
380 expected);
381 }
382
383 @Test
384 public void testInlineSingleCase() throws Exception {
385 final String[] expected = {
386 "12:17: " + getCheckMessage(MSG_FALL_THROUGH_LAST),
387 };
388
389 verifyWithInlineConfigParser(
390 getPath("InputFallThroughInlineSingleCase.java"),
391 expected);
392 }
393
394 @Test
395 public void testInlineMultipleComment() throws Exception {
396 final String[] expected = {};
397
398 verifyWithInlineConfigParser(
399 getPath("InputFallThroughMultipleReliefPatterns.java"),
400 expected);
401 }
402
403 @Test
404 public void testFallThroughWithoutReliefPattern() throws Exception {
405 final String[] expected = {
406 "21:9: " + getCheckMessage(MSG_FALL_THROUGH),
407 "45:9: " + getCheckMessage(MSG_FALL_THROUGH),
408 "54:9: " + getCheckMessage(MSG_FALL_THROUGH),
409 "60:9: " + getCheckMessage(MSG_FALL_THROUGH),
410 "77:9: " + getCheckMessage(MSG_FALL_THROUGH),
411 "94:9: " + getCheckMessage(MSG_FALL_THROUGH),
412 };
413 verifyWithInlineConfigParser(
414 getPath("InputFallThroughWithoutReliefPattern.java"),
415 expected);
416 }
417
418 @Test
419 public void testFallThroughWithPatternMatching() throws Exception {
420 final String[] expected = {
421 "19:13: " + getCheckMessage(MSG_FALL_THROUGH),
422 "22:13: " + getCheckMessage(MSG_FALL_THROUGH),
423 "31:13: " + getCheckMessage(MSG_FALL_THROUGH),
424 "35:13: " + getCheckMessage(MSG_FALL_THROUGH),
425 "44:13: " + getCheckMessage(MSG_FALL_THROUGH),
426 };
427
428 verifyWithInlineConfigParser(
429 getNonCompilablePath("InputFallThroughWithPatternMatching.java"),
430 expected);
431 }
432
433 @Test
434 public void testFallThroughWithPatternMatchingCheckLastCase() throws Exception {
435 final String[] expected = {
436 "19:13: " + getCheckMessage(MSG_FALL_THROUGH),
437 "21:13: " + getCheckMessage(MSG_FALL_THROUGH),
438 "21:13: " + getCheckMessage(MSG_FALL_THROUGH_LAST),
439 "33:13: " + getCheckMessage(MSG_FALL_THROUGH),
440 "36:13: " + getCheckMessage(MSG_FALL_THROUGH),
441 "36:13: " + getCheckMessage(MSG_FALL_THROUGH_LAST),
442 "48:13: " + getCheckMessage(MSG_FALL_THROUGH),
443 "61:13: " + getCheckMessage(MSG_FALL_THROUGH_LAST),
444 };
445
446 verifyWithInlineConfigParser(
447 getNonCompilablePath("InputFallThroughWithPatternMatchingCheckLastCase.java"),
448 expected);
449 }
450 }