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 protected 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 "101:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "if"),
104 "105:11: " + getCheckMessage(MSG_KEY_NEED_BRACES, "else"),
105 "118:47: " + getCheckMessage(MSG_KEY_NEED_BRACES, "if"),
106 "125: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 "131:17: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
144 "133: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 "106: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 "98:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "while"),
215 "102:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "for"),
216 "106:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "if"),
217 "117: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:47: " + 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:47: " + 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:47: " + 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 getNonCompilablePath("InputNeedBracesTestSwitchExpressionNoSingleLine.java"),
255 expected);
256 }
257
258 @Test
259 public void testNeedBracesSwitchExpression() throws Exception {
260 final String[] expected = {
261 "16:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
262 "18:47: " + 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 "49:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
271 "50:47: " + getCheckMessage(MSG_KEY_NEED_BRACES, "->"),
272 "53:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
273 "56:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
274 "59:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "default"),
275 "73:47: " + getCheckMessage(MSG_KEY_NEED_BRACES, "->"),
276 };
277 verifyWithInlineConfigParser(
278 getNonCompilablePath("InputNeedBracesTestSwitchExpression.java"),
279 expected);
280 }
281
282 @Test
283 public void testPatternMatchingForSwitch() throws Exception {
284 final String[] expected = {
285 "17:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
286 "21:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
287 "26:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
288 "29:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "default"),
289 "55:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
290 "57:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
291 "61:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
292 "64:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "default"),
293 "77:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
294 "82:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
295 "85:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
296 "88:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "default"),
297 "94:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
298 "96:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
299 "98:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
300 "104:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "default"),
301 };
302 verifyWithInlineConfigParser(
303 getNonCompilablePath("InputNeedBracesPatternMatchingForSwitch.java"),
304 expected);
305 }
306
307 @Test
308 public void testPatternMatchingForSwitchAllowSingleLine() throws Exception {
309 final String[] expected = {
310 "17:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
311 "21:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
312 "26:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
313 "29:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "default"),
314 "56:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
315 "60:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
316 "63:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "default"),
317 "76:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
318 "83:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
319 "86:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "default"),
320 "94:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
321 };
322 verifyWithInlineConfigParser(
323 getNonCompilablePath(
324 "InputNeedBracesPatternMatchingForSwitchAllowSingleLine.java"),
325 expected);
326 }
327
328 @Test
329 public void testNeedBracesSwitchExpressionAndLambda() throws Exception {
330 final String[] expected = {
331 "21:24: " + getCheckMessage(MSG_KEY_NEED_BRACES, "->"),
332 "24:24: " + getCheckMessage(MSG_KEY_NEED_BRACES, "->"),
333 "27:24: " + getCheckMessage(MSG_KEY_NEED_BRACES, "->"),
334 "50:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
335 "51:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "default"),
336 "56:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
337 "59:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "default"),
338 "63:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
339 "65:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
340 "67:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
341 "68:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "default"),
342 };
343 verifyWithInlineConfigParser(
344 getNonCompilablePath("InputNeedBracesSwitchExpressionAndLambda.java"),
345 expected);
346 }
347
348 @Test
349 public void testNeedBracesSwitchExpressionAndLambdaAllowSingleLine() throws Exception {
350 final String[] expected = {
351 "27:24: " + getCheckMessage(MSG_KEY_NEED_BRACES, "->"),
352 "46:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
353 "54:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
354 };
355 verifyWithInlineConfigParser(
356 getNonCompilablePath(
357 "InputNeedBracesSwitchExpressionAndLambdaAllowSingleLine.java"),
358 expected);
359 }
360
361 }