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 "112:11: " + getCheckMessage(MSG_FALL_THROUGH_LAST),
256 };
257 verifyWithInlineConfigParser(
258 getPath("InputFallThrough4.java"),
259 expected);
260 }
261
262 @Test
263 public void testIfElse() throws Exception {
264 final String[] expected = {
265 "94:13: " + getCheckMessage(MSG_FALL_THROUGH),
266 };
267 verifyWithInlineConfigParser(
268 getPath("InputFallThrough5.java"),
269 expected);
270 }
271
272 @Test
273 public void testFallThrough() throws Exception {
274 final String[] expected = {
275 "23:13: " + getCheckMessage(MSG_FALL_THROUGH),
276 "27:13: " + getCheckMessage(MSG_FALL_THROUGH),
277 "52:13: " + getCheckMessage(MSG_FALL_THROUGH),
278 "65:13: " + getCheckMessage(MSG_FALL_THROUGH),
279 "80:13: " + getCheckMessage(MSG_FALL_THROUGH),
280 "94:13: " + getCheckMessage(MSG_FALL_THROUGH),
281 "109:13: " + getCheckMessage(MSG_FALL_THROUGH),
282 };
283 verifyWithInlineConfigParser(
284 getPath("InputFallThrough6.java"),
285 expected);
286 }
287
288 @Test
289 public void testFallThroughNonCompilable4() throws Exception {
290 final String[] expected = CommonUtil.EMPTY_STRING_ARRAY;
291 verifyWithInlineConfigParser(
292 getNonCompilablePath("InputFallThrough4.java"),
293 expected);
294 }
295
296 @Test
297 public void testFallThroughComment() throws Exception {
298 final String[] expected = {
299 "20:13: " + getCheckMessage(MSG_FALL_THROUGH),
300 "43:13: " + getCheckMessage(MSG_FALL_THROUGH),
301 };
302 verifyWithInlineConfigParser(
303 getPath("InputFallThroughFallThroughLotsOfComment.java"),
304 expected);
305 }
306
307 @Test
308 public void testFallThroughComment2() throws Exception {
309 final String[] expected = CommonUtil.EMPTY_STRING_ARRAY;
310 verifyWithInlineConfigParser(
311 getPath("InputFallThroughFallThroughLotsOfComment2.java"),
312 expected);
313 }
314
315 @Test
316 public void testFallThrough7() throws Exception {
317 final String[] expected = {
318 "21:13: " + getCheckMessage(MSG_FALL_THROUGH_LAST),
319 "36:13: " + getCheckMessage(MSG_FALL_THROUGH_LAST),
320 "50:13: " + getCheckMessage(MSG_FALL_THROUGH),
321 "50:13: " + getCheckMessage(MSG_FALL_THROUGH_LAST),
322 "64:13: " + getCheckMessage(MSG_FALL_THROUGH),
323 "111:13: " + getCheckMessage(MSG_FALL_THROUGH_LAST),
324 };
325 verifyWithInlineConfigParser(
326 getPath("InputFallThrough7.java"),
327 expected);
328 }
329
330 @Test
331 public void testLastLine() throws Exception {
332 final String[] expected = {
333 "21:13: " + getCheckMessage(MSG_FALL_THROUGH),
334
335 "33:13: " + getCheckMessage(MSG_FALL_THROUGH),
336 "99:39: " + getCheckMessage(MSG_FALL_THROUGH_LAST),
337
338 "107:11: " + getCheckMessage(MSG_FALL_THROUGH_LAST),
339 };
340 verifyWithInlineConfigParser(
341 getPath("InputFallThroughLastLineCommentCheck.java"),
342 expected);
343 }
344
345 @Test
346 public void testLastLine2() throws Exception {
347 final String[] expected = {
348 "19:13: " + getCheckMessage(MSG_FALL_THROUGH_LAST),
349 "22:13: " + getCheckMessage(MSG_FALL_THROUGH_LAST),
350 };
351 verifyWithInlineConfigParser(
352 getNonCompilablePath("InputFallThrough5.java"),
353 expected);
354 }
355
356 @Test
357 public void testReliefCommentBetweenMultipleComment() throws Exception {
358 final String[] expected = {
359
360 "25:17: " + getCheckMessage(MSG_FALL_THROUGH),
361
362 "34:13: " + getCheckMessage(MSG_FALL_THROUGH_LAST),
363 };
364 verifyWithInlineConfigParser(
365 getPath("InputFallThrough8.java"),
366 expected);
367 }
368 }