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 "38:43: " + getCheckMessage(MSG_KEY_NEED_BRACES, "if"),
98 "47:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "if"),
99 "55:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "while"),
100 "62:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "do"),
101 "65:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "for"),
102 "71:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "for"),
103 "100:9: " + getCheckMessage(MSG_KEY_NEED_BRACES, "if"),
104 "104:11: " + getCheckMessage(MSG_KEY_NEED_BRACES, "else"),
105 "116:47: " + getCheckMessage(MSG_KEY_NEED_BRACES, "if"),
106 "123: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 "24:60: " + getCheckMessage(MSG_KEY_NEED_BRACES, "->"),
118 "25: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 "14:28: " + getCheckMessage(MSG_KEY_NEED_BRACES, "->"),
128 "15:29: " + getCheckMessage(MSG_KEY_NEED_BRACES, "->"),
129 "16:29: " + getCheckMessage(MSG_KEY_NEED_BRACES, "->"),
130 "19:22: " + getCheckMessage(MSG_KEY_NEED_BRACES, "->"),
131 "24:60: " + getCheckMessage(MSG_KEY_NEED_BRACES, "->"),
132 "25: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 "80:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "default"),
249 };
250 verifyWithInlineConfigParser(
251 getNonCompilablePath("InputNeedBracesTestSwitchExpressionNoSingleLine.java"),
252 expected);
253 }
254
255 @Test
256 public void testNeedBracesSwitchExpression() throws Exception {
257 final String[] expected = {
258 "16:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
259 "18:47: " + getCheckMessage(MSG_KEY_NEED_BRACES, "->"),
260 "20:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
261 "23:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
262 "26:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "default"),
263 "33:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
264 "36:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
265 "39:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
266 "42:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "default"),
267 "49:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
268 "50:47: " + getCheckMessage(MSG_KEY_NEED_BRACES, "->"),
269 "53:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
270 "56:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "case"),
271 "59:13: " + getCheckMessage(MSG_KEY_NEED_BRACES, "default"),
272 "73:47: " + getCheckMessage(MSG_KEY_NEED_BRACES, "->"),
273 };
274 verifyWithInlineConfigParser(
275 getNonCompilablePath("InputNeedBracesTestSwitchExpression.java"),
276 expected);
277 }
278
279 }