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.blocks;
21
22 import static com.puppycrawl.tools.checkstyle.checks.blocks.NeedBracesCheck.MSG_KEY_NEED_BRACES;
23
24 import org.junit.jupiter.api.Test;
25
26 import com.puppycrawl.tools.checkstyle.AbstractModuleTestSupport;
27 import com.puppycrawl.tools.checkstyle.utils.CommonUtil;
28
29 public class NeedBracesCheckTest extends AbstractModuleTestSupport {
30
31 @Override
32 public String getPackageLocation() {
33 return "com/puppycrawl/tools/checkstyle/checks/blocks/needbraces";
34 }
35
36 @Test
37 public void testIt() throws Exception {
38 final String[] expected = {
39 "30:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "do"),
40 "42:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "while"),
41 "43:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "while"),
42 "45:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "while"),
43 "46:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "if"),
44 "59:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "for"),
45 "60:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "for"),
46 "62:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "for"),
47 "64:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "if"),
48 "83:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "if"),
49 "84:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "if"),
50 "86:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "if"),
51 "88:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "else"),
52 "90:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "if"),
53 "98:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "else"),
54 "100:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "if"),
55 "101:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "if"),
56 "104:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "if"),
57 "105:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "while"),
58 "106:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "if"),
59 "107:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "do"),
60 "108:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "if"),
61 "109:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "for"),
62 };
63 verifyWithInlineConfigParser(
64 getPath("InputNeedBracesTestIt.java"), expected);
65 }
66
67 @Test
68 public void testItWithAllowsOn() throws Exception {
69 final String[] expected = {
70 "44:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "while"),
71 "47:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "if"),
72 "61:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "for"),
73 "63:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "for"),
74 "65:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "if"),
75 "85:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "if"),
76 "87:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "if"),
77 "89:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "else"),
78 "91:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "if"),
79 "99:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "else"),
80 "101:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "if"),
81 "102:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "if"),
82 "105:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "if"),
83 "106:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "while"),
84 "107:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "if"),
85 "108:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "do"),
86 "109:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "if"),
87 "110:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "for"),
88 };
89 verifyWithInlineConfigParser(
90 getPath("InputNeedBracesTestItWithAllowsOn.java"), expected);
91 }
92
93 @Test
94 public void testSingleLineStatements() throws Exception {
95 final String[] expected = {
96 "32:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "if"),
97 "39:43: " + getCheckMessage(MSG_KEY_NEED_BRACES, "if"),
98 "48:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "if"),
99 "56:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "while"),
100 "63:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "do"),
101 "66:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "for"),
102 "72:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "for"),
103 "84:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "if"),
104 "88:11: " + getCheckMessage(MSG_KEY_NEED_BRACES, "else"),
105 "101:47: " + getCheckMessage(MSG_KEY_NEED_BRACES, "if"),
106 "108:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "for"),
107 };
108 verifyWithInlineConfigParser(
109 getPath("InputNeedBracesSingleLineStatements.java"), expected);
110 }
111
112 @Test
113 public void testSingleLineLambda() throws Exception {
114 final String[] expected = {
115 "16:29: " + getCheckMessage(MSG_KEY_NEED_BRACES, "->"),
116 "19:22: " + getCheckMessage(MSG_KEY_NEED_BRACES, "->"),
117 "25:60: " + getCheckMessage(MSG_KEY_NEED_BRACES, "->"),
118 "26:27: " + getCheckMessage(MSG_KEY_NEED_BRACES, "->"),
119 };
120 verifyWithInlineConfigParser(
121 getPath("InputNeedBracesTestSingleLineLambda.java"), expected);
122 }
123
124 @Test
125 public void testDoNotAllowSingleLineLambda() throws Exception {
126 final String[] expected = {
127 "15:28: " + getCheckMessage(MSG_KEY_NEED_BRACES, "->"),
128 "17:29: " + getCheckMessage(MSG_KEY_NEED_BRACES, "->"),
129 "18:29: " + getCheckMessage(MSG_KEY_NEED_BRACES, "->"),
130 "21:22: " + getCheckMessage(MSG_KEY_NEED_BRACES, "->"),
131 "27:60: " + getCheckMessage(MSG_KEY_NEED_BRACES, "->"),
132 "28:27: " + getCheckMessage(MSG_KEY_NEED_BRACES, "->"),
133 };
134 verifyWithInlineConfigParser(
135 getPath("InputNeedBracesTestNotAllowSingleLineLambda.java"), expected);
136 }
137
138 @Test
139 public void testSingleLineCaseDefault() throws Exception {
140 final String[] expected = {
141 "81:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
142 "84:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
143 "107:17: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
144 "109:17: " + getCheckMessage(MSG_KEY_NEED_BRACES, "default"),
145 };
146 verifyWithInlineConfigParser(
147 getPath("InputNeedBracesTestSingleLineCaseDefault.java"), expected);
148 }
149
150 @Test
151 public void testSingleLineCaseDefault2() throws Exception {
152 final String[] expected = CommonUtil.EMPTY_STRING_ARRAY;
153 verifyWithInlineConfigParser(
154 getPath("InputNeedBracesTestSingleLineCaseDefault2.java"), expected);
155 }
156
157 @Test
158 public void testSingleLineCaseDefaultNoSingleLine() throws Exception {
159 final String[] expected = {
160 "18:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
161 "19:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
162 "22:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "default"),
163 "25:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "default"),
164 "33:17: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
165 "34:17: " + getCheckMessage(MSG_KEY_NEED_BRACES, "default"),
166 };
167 verifyWithInlineConfigParser(
168 getPath("InputNeedBracesTestCaseDefaultNoSingleLine.java"), expected);
169 }
170
171 @Test
172 public void testCycles() throws Exception {
173 final String[] expected = CommonUtil.EMPTY_STRING_ARRAY;
174 verifyWithInlineConfigParser(
175 getPath("InputNeedBracesTestCycles.java"), expected);
176 }
177
178 @Test
179 public void testConditions() throws Exception {
180 final String[] expected = {
181 "50:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
182 "53:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
183 "65:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "default"),
184 };
185 verifyWithInlineConfigParser(
186 getPath("InputNeedBracesTestConditions.java"), expected);
187 }
188
189 @Test
190 public void testAllowEmptyLoopBodyTrue() throws Exception {
191 final String[] expected = {
192 "100:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "if"),
193 };
194 verifyWithInlineConfigParser(
195 getPath("InputNeedBracesLoopBodyTrue.java"), expected);
196 }
197
198 @Test
199 public void testAllowEmptyLoopBodyFalse() throws Exception {
200 final String[] expected = {
201 "19:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "while"),
202 "23:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "while"),
203 "27:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "for"),
204 "28:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "for"),
205 "32:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "while"),
206 "37:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "while"),
207 "42:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "while"),
208 "48:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "while"),
209 "54:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "while"),
210 "59:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "for"),
211 "63:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "for"),
212 "69:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "for"),
213 "76:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "for"),
214 "92:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "while"),
215 "96:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "for"),
216 "100:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "if"),
217 "105:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "while"),
218 };
219 verifyWithInlineConfigParser(
220 getPath("InputNeedBracesLoopBodyFalse.java"), expected);
221 }
222
223 @Test
224 public void testEmptySingleLineDefaultStmt() throws Exception {
225 final String[] expected = CommonUtil.EMPTY_STRING_ARRAY;
226 verifyWithInlineConfigParser(
227 getPath("InputNeedBracesEmptySingleLineDefaultStmt.java"), expected);
228 }
229
230 @Test
231 public void testNeedBracesSwitchExpressionNoSingleLine() throws Exception {
232 final String[] expected = {
233 "16:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
234 "18:49: " + getCheckMessage(MSG_KEY_NEED_BRACES, "->"),
235 "20:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
236 "23:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
237 "26:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "default"),
238 "33:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
239 "36:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
240 "39:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
241 "42:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "default"),
242 "49:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
243 "50:49: " + getCheckMessage(MSG_KEY_NEED_BRACES, "->"),
244 "53:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
245 "56:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
246 "59:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "default"),
247 "73:49: " + getCheckMessage(MSG_KEY_NEED_BRACES, "->"),
248 "81:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "default"),
249 "88:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
250 "89:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
251 "90:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
252 };
253 verifyWithInlineConfigParser(
254 getPath("InputNeedBracesTestSwitchExpressionNoSingleLine.java"),
255 expected);
256 }
257
258 @Test
259 public void testNeedBracesSwitchExpression1() throws Exception {
260 final String[] expected = {
261 "16:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
262 "18:49: " + getCheckMessage(MSG_KEY_NEED_BRACES, "->"),
263 "20:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
264 "23:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
265 "26:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "default"),
266 "33:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
267 "36:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
268 "39:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
269 "42:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "default"),
270 };
271 verifyWithInlineConfigParser(
272 getPath("InputNeedBracesTestSwitchExpression1.java"),
273 expected);
274 }
275
276 @Test
277 public void testNeedBracesSwitchExpression2() throws Exception {
278 final String[] expected = {
279 "16:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
280 "17:49: " + getCheckMessage(MSG_KEY_NEED_BRACES, "->"),
281 "20:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
282 "23:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
283 "26:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "default"),
284 "40:49: " + getCheckMessage(MSG_KEY_NEED_BRACES, "->"),
285 };
286 verifyWithInlineConfigParser(
287 getPath("InputNeedBracesTestSwitchExpression2.java"),
288 expected);
289 }
290
291 @Test
292 public void testPatternMatchingForSwitch() throws Exception {
293 final String[] expected = {
294 "17:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
295 "21:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
296 "26:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
297 "29:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "default"),
298 "55:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
299 "57:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
300 "61:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
301 "64:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "default"),
302 "77:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
303 "82:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
304 "85:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
305 "88:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "default"),
306 "94:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
307 "96:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
308 "98:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
309 "104:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "default"),
310 };
311 verifyWithInlineConfigParser(
312 getPath("InputNeedBracesPatternMatchingForSwitch.java"),
313 expected);
314 }
315
316 @Test
317 public void testPatternMatchingForSwitchAllowSingleLine() throws Exception {
318 final String[] expected = {
319 "17:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
320 "21:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
321 "26:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
322 "29:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "default"),
323 "56:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
324 "60:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
325 "63:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "default"),
326 "76:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
327 "83:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
328 "86:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "default"),
329 "94:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
330 };
331 verifyWithInlineConfigParser(
332 getPath(
333 "InputNeedBracesPatternMatchingForSwitchAllowSingleLine.java"),
334 expected);
335 }
336
337 @Test
338 public void testNeedBracesSwitchExpressionAndLambda() throws Exception {
339 final String[] expected = {
340 "21:24: " + getCheckMessage(MSG_KEY_NEED_BRACES, "->"),
341 "24:24: " + getCheckMessage(MSG_KEY_NEED_BRACES, "->"),
342 "27:24: " + getCheckMessage(MSG_KEY_NEED_BRACES, "->"),
343 "50:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
344 "51:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "default"),
345 "56:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
346 "59:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "default"),
347 "63:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
348 "65:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
349 "67:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
350 "68:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "default"),
351 };
352 verifyWithInlineConfigParser(
353 getPath("InputNeedBracesSwitchExpressionAndLambda.java"),
354 expected);
355 }
356
357 @Test
358 public void testNeedBracesSwitchExpressionAndLambdaAllowSingleLine() throws Exception {
359 final String[] expected = {
360 "27:24: " + getCheckMessage(MSG_KEY_NEED_BRACES, "->"),
361 "46:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
362 "54:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
363 };
364 verifyWithInlineConfigParser(
365 getPath(
366 "InputNeedBracesSwitchExpressionAndLambdaAllowSingleLine.java"),
367 expected);
368 }
369
370 @Test
371 public void testAllowEmptyLoopBodyFalse2() throws Exception {
372 final String[] expected = CommonUtil.EMPTY_STRING_ARRAY;
373 verifyWithInlineConfigParser(
374 getPath("InputNeedBracesLoopBodyFalse2.java"), expected);
375 }
376
377 @Test
378 public void testAllowEmptyLoopBodyTrue2() throws Exception {
379 final String[] expected = CommonUtil.EMPTY_STRING_ARRAY;
380 verifyWithInlineConfigParser(
381 getPath("InputNeedBracesLoopBodyTrue2.java"), expected);
382 }
383
384 @Test
385 public void testSingleLineStatements2() throws Exception {
386 final String[] expected = CommonUtil.EMPTY_STRING_ARRAY;
387 verifyWithInlineConfigParser(
388 getPath("InputNeedBracesSingleLineStatements2.java"), expected);
389 }
390
391 @Test
392 public void testIt2() throws Exception {
393 final String[] expected = CommonUtil.EMPTY_STRING_ARRAY;
394 verifyWithInlineConfigParser(
395 getPath("InputNeedBracesTestIt2.java"), expected);
396 }
397
398 @Test
399 public void testItWithAllowsOn2() throws Exception {
400 final String[] expected = CommonUtil.EMPTY_STRING_ARRAY;
401 verifyWithInlineConfigParser(
402 getPath("InputNeedBracesTestItWithAllowsOn2.java"), expected);
403 }
404
405 @Test
406 public void testSingleLineCaseDefault3() throws Exception {
407 final String[] expected = CommonUtil.EMPTY_STRING_ARRAY;
408 verifyWithInlineConfigParser(
409 getPath("InputNeedBracesTestSingleLineCaseDefault3.java"), expected);
410 }
411
412 }