View Javadoc
1   ///////////////////////////////////////////////////////////////////////////////////////////////
2   // checkstyle: Checks Java source code and other text files for adherence to a set of rules.
3   // Copyright (C) 2001-2024 the original author or authors.
4   //
5   // This library is free software; you can redistribute it and/or
6   // modify it under the terms of the GNU Lesser General Public
7   // License as published by the Free Software Foundation; either
8   // version 2.1 of the License, or (at your option) any later version.
9   //
10  // This library is distributed in the hope that it will be useful,
11  // but WITHOUT ANY WARRANTY; without even the implied warranty of
12  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  // Lesser General Public License for more details.
14  //
15  // You should have received a copy of the GNU Lesser General Public
16  // License along with this library; if not, write to the Free Software
17  // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18  ///////////////////////////////////////////////////////////////////////////////////////////////
19  
20  package com.puppycrawl.tools.checkstyle.checks.blocks;
21  
22  import static com.google.common.truth.Truth.assertWithMessage;
23  import static com.puppycrawl.tools.checkstyle.checks.blocks.RightCurlyCheck.MSG_KEY_LINE_ALONE;
24  import static com.puppycrawl.tools.checkstyle.checks.blocks.RightCurlyCheck.MSG_KEY_LINE_BREAK_BEFORE;
25  import static com.puppycrawl.tools.checkstyle.checks.blocks.RightCurlyCheck.MSG_KEY_LINE_SAME;
26  
27  import org.junit.jupiter.api.Test;
28  
29  import com.puppycrawl.tools.checkstyle.AbstractModuleTestSupport;
30  import com.puppycrawl.tools.checkstyle.api.CheckstyleException;
31  import com.puppycrawl.tools.checkstyle.utils.CommonUtil;
32  
33  public class RightCurlyCheckTest extends AbstractModuleTestSupport {
34  
35      @Override
36      protected String getPackageLocation() {
37          return "com/puppycrawl/tools/checkstyle/checks/blocks/rightcurly";
38      }
39  
40      /* Additional test for jacoco, since valueOf()
41       * is generated by javac and jacoco reports that
42       * valueOf() is uncovered.
43       */
44      @Test
45      public void testRightCurlyOptionValueOf() {
46          final RightCurlyOption option = RightCurlyOption.valueOf("ALONE");
47          assertWithMessage("Invalid valueOf result")
48              .that(option)
49              .isEqualTo(RightCurlyOption.ALONE);
50      }
51  
52      @Test
53      public void testDefault() throws Exception {
54          final String[] expected = {
55              "25:17: " + getCheckMessage(MSG_KEY_LINE_SAME, "}", 17),
56              "28:17: " + getCheckMessage(MSG_KEY_LINE_SAME, "}", 17),
57              "40:13: " + getCheckMessage(MSG_KEY_LINE_SAME, "}", 13),
58              "44:13: " + getCheckMessage(MSG_KEY_LINE_SAME, "}", 13),
59              "93:27: " + getCheckMessage(MSG_KEY_LINE_BREAK_BEFORE, "}", 27),
60          };
61          verifyWithInlineConfigParser(
62                  getPath("InputRightCurlyLeftTestDefault.java"), expected);
63      }
64  
65      @Test
66      public void testSame() throws Exception {
67          final String[] expected = {
68              "26:17: " + getCheckMessage(MSG_KEY_LINE_SAME, "}", 17),
69              "29:17: " + getCheckMessage(MSG_KEY_LINE_SAME, "}", 17),
70              "41:13: " + getCheckMessage(MSG_KEY_LINE_SAME, "}", 13),
71              "45:13: " + getCheckMessage(MSG_KEY_LINE_SAME, "}", 13),
72              "87:5: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 5),
73              "94:27: " + getCheckMessage(MSG_KEY_LINE_BREAK_BEFORE, "}", 27),
74              "189:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
75              "190:41: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 41),
76          };
77          verifyWithInlineConfigParser(
78                  getPath("InputRightCurlyLeftTestSame.java"), expected);
79      }
80  
81      @Test
82      public void testSameOmitOneLiners() throws Exception {
83          final String[] expected = CommonUtil.EMPTY_STRING_ARRAY;
84          verifyWithInlineConfigParser(
85                  getPath("InputRightCurlyTestSameOmitOneLiners.java"), expected);
86      }
87  
88      @Test
89      public void testSameDoesNotComplainForNonMultilineConstructs() throws Exception {
90          final String[] expected = CommonUtil.EMPTY_STRING_ARRAY;
91          verifyWithInlineConfigParser(
92                  getPath("InputRightCurlyTestSame.java"), expected);
93      }
94  
95      @Test
96      public void testAlone() throws Exception {
97          final String[] expected = {
98              "57:13: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 13),
99              "94:27: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 27),
100             "98:41: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 41),
101             "174:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
102             "176:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
103             "178:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
104             "179:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
105             "184:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
106             "189:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
107             "190:53: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 53),
108         };
109         verifyWithInlineConfigParser(
110                 getPath("InputRightCurlyLeftTestAlone.java"), expected);
111     }
112 
113     @Test
114     public void testNewLine() throws Exception {
115         final String[] expected = {
116             "86:5: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 5),
117             "111:5: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 5),
118             "111:6: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 6),
119             "122:5: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 5),
120             "122:6: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 6),
121             "136:5: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 5),
122             "136:6: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 6),
123             "144:37: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 37),
124             "149:41: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 41),
125             "152:31: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 31),
126             "154:39: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 39),
127             "197:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
128             "202:30: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 30),
129             "205:39: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 39),
130             "211:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
131             "211:10: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 10),
132         };
133         verifyWithInlineConfigParser(
134                 getPath("InputRightCurlyLeftTestNewLine.java"), expected);
135     }
136 
137     @Test
138     public void testShouldStartLine2() throws Exception {
139         final String[] expected = {
140             "86:5: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 5),
141             "111:5: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 5),
142             "111:6: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 6),
143             "122:5: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 5),
144             "122:6: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 6),
145             "136:5: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 5),
146             "136:6: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 6),
147             "197:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
148             "202:30: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 30),
149             "211:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
150             "211:10: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 10),
151         };
152         verifyWithInlineConfigParser(
153                 getPath("InputRightCurlyLeftTestShouldStartLine2.java"), expected);
154     }
155 
156     @Test
157     public void testForceLineBreakBefore() throws Exception {
158         final String[] expected = {
159             "38:43: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 43),
160             "41:17: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 17),
161             "44:71: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 71),
162             "46:38: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 38),
163             "50:25: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 25),
164         };
165         verifyWithInlineConfigParser(
166                 getPath("InputRightCurlyTestForceLineBreakBefore.java"), expected);
167     }
168 
169     @Test
170     public void testForceLineBreakBefore2() throws Exception {
171         final String[] expected = CommonUtil.EMPTY_STRING_ARRAY;
172         verifyWithInlineConfigParser(
173                 getPath("InputRightCurlyTestForceLineBreakBefore2.java"), expected);
174     }
175 
176     @Test
177     public void testNullPointerException() throws Exception {
178         final String[] expected = CommonUtil.EMPTY_STRING_ARRAY;
179         verifyWithInlineConfigParser(
180                 getPath("InputRightCurlyTestNullPointerException.java"), expected);
181     }
182 
183     @Test
184     public void testWithAnnotations() throws Exception {
185         final String[] expected = {
186             "18:77: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 77),
187             "21:65: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 65),
188             "32:46: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 46),
189             "36:31: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 31),
190             "39:35: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 35),
191             "42:36: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 36),
192             "48:73: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 73),
193             "50:37: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 37),
194             "55:66: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 66),
195             "58:96: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 96),
196             "61:30: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 30),
197             "64:30: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 30),
198             "67:29: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 29),
199             "71:38: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 38),
200             "72:31: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 31),
201             "78:62: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 62),
202             "87:28: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 28),
203             "89:21: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 21),
204             "91:20: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 20),
205             "93:14: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 14),
206             "104:26: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 26),
207             "105:20: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 20),
208             "114:29: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 29),
209             "114:38: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 38),
210             "118:29: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 29),
211             "118:38: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 38),
212             "122:40: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 40),
213             "122:88: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 88),
214             "125:18: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 18),
215             "129:23: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 23),
216             "132:37: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 37),
217             "134:30: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 30),
218             "138:77: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 77),
219             "147:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
220             "149:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
221             "149:33: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 33),
222             "161:75: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 75),
223             "162:58: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 58),
224             "162:74: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 74),
225             "163:58: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 58),
226             "165:58: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 58),
227             "165:73: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 73),
228             "171:37: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 37),
229             "178:37: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 37),
230             "193:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
231             "200:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
232             "200:13: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 13),
233             "208:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
234             "208:10: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 10),
235             "212:54: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 54),
236             "212:55: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 55),
237             "215:75: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 75),
238             "215:76: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 76),
239             "215:77: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 77),
240             "219:76: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 76),
241             "227:27: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 27),
242             "231:31: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 31),
243             "234:5: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 5),
244             "236:29: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 29),
245             "239:5: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 5),
246             "242:30: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 30),
247             "245:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
248             "248:39: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 39),
249             "250:56: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 56),
250             "253:24: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 24),
251             "263:29: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 29),
252             "265:40: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 40),
253             "269:5: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 5),
254             "272:5: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 5),
255             "274:61: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 61),
256         };
257         verifyWithInlineConfigParser(
258                 getPath("InputRightCurlyTestWithAnnotations.java"), expected);
259     }
260 
261     @Test
262     public void testAloneOrSingleLine() throws Exception {
263         final String[] expected = {
264             "70:26: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 26),
265             "84:42: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 42),
266             "87:18: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 18),
267             "95:30: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 30),
268             "99:77: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 77),
269             "107:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
270             "109:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
271             "120:75: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 75),
272             "122:77: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 77),
273             "122:93: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 93),
274             "124:77: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 77),
275             "126:64: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 64),
276             "126:80: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 80),
277             "132:37: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 37),
278             "139:37: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 37),
279             "154:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
280             "161:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
281             "161:13: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 13),
282             "170:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
283             "170:10: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 10),
284             "174:54: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 54),
285             "174:55: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 55),
286             "177:75: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 75),
287             "177:76: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 76),
288             "177:77: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 77),
289             "189:27: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 27),
290             "195:24: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 24),
291             "198:24: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 24),
292             "201:24: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 24),
293             "207:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
294             "209:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
295             "211:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
296             "212:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
297             "217:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
298             "222:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
299             "223:39: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 39),
300             "231:24: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 24),
301             "243:30: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 30),
302             "249:29: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 29),
303             "249:38: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 38),
304         };
305         verifyWithInlineConfigParser(
306                 getPath("InputRightCurlyTestAloneOrSingleline.java"), expected);
307     }
308 
309     @Test
310     public void testAloneOrSingleLineTryCatchBlock() throws Exception {
311         final String[] expected = CommonUtil.EMPTY_STRING_ARRAY;
312         verifyWithInlineConfigParser(
313                 getPath("InputRightCurlyTestAloneOrSinglelineTryCatchBlock.java"), expected);
314     }
315 
316     @Test
317     public void testCatchWithoutFinally() throws Exception {
318         final String[] expected = {
319             "19:9: " + getCheckMessage(MSG_KEY_LINE_SAME, "}", 9),
320         };
321         verifyWithInlineConfigParser(
322                 getPath("InputRightCurlyTestWithoutFinally.java"), expected);
323     }
324 
325     @Test
326     public void testSingleLineClass() throws Exception {
327         final String[] expected = {
328             "29:56: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 56),
329         };
330         verifyWithInlineConfigParser(
331                 getPath("InputRightCurlyTestSingleLineClass.java"), expected);
332     }
333 
334     @Test
335     public void testInvalidOption() throws Exception {
336 
337         try {
338             final String[] expected = CommonUtil.EMPTY_STRING_ARRAY;
339 
340             verifyWithInlineConfigParser(
341                     getPath("InputRightCurlyTestInvalidOption.java"), expected);
342             assertWithMessage("exception expected").fail();
343         }
344         catch (CheckstyleException ex) {
345             assertWithMessage("Invalid exception message")
346                 .that(ex.getMessage())
347                 .isEqualTo("cannot initialize module com.puppycrawl.tools.checkstyle.TreeWalker - "
348                     + "cannot initialize module com.puppycrawl.tools.checkstyle.checks."
349                     + "blocks.RightCurlyCheck - "
350                     + "Cannot set property 'option' to 'invalid_option'");
351         }
352     }
353 
354     @Test
355     public void testRightCurlySameAndLiteralDo() throws Exception {
356         final String[] expected = {
357             "70:9: " + getCheckMessage(MSG_KEY_LINE_SAME, "}", 9),
358             "75:13: " + getCheckMessage(MSG_KEY_LINE_SAME, "}", 13),
359             "91:9: " + getCheckMessage(MSG_KEY_LINE_SAME, "}", 9),
360         };
361         verifyWithInlineConfigParser(
362                 getPath("InputRightCurlyTestSameAndLiteralDo.java"), expected);
363     }
364 
365     @Test
366     public void testTryWithResourceSame() throws Exception {
367         final String[] expected = {
368             "19:9: " + getCheckMessage(MSG_KEY_LINE_SAME, "}", 9),
369             "33:67: " + getCheckMessage(MSG_KEY_LINE_SAME, "}", 67),
370             "44:15: " + getCheckMessage(MSG_KEY_LINE_BREAK_BEFORE, "}", 15),
371             "46:13: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 13),
372         };
373         verifyWithInlineConfigParser(
374                 getPath("InputRightCurlyTestTryWithResourceSame.java"), expected);
375     }
376 
377     @Test
378     public void testTryWithResourceAlone() throws Exception {
379         final String[] expected = {
380             "27:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
381             "33:67: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 67),
382             "34:35: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 35),
383             "37:64: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 64),
384             "37:92: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 92),
385             "44:67: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 67),
386             "46:15: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 15),
387             "48:13: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 13),
388         };
389         verifyWithInlineConfigParser(
390                 getPath("InputRightCurlyTestTryWithResourceAlone.java"), expected);
391     }
392 
393     @Test
394     public void testTryWithResourceAloneSingle() throws Exception {
395         final String[] expected = {
396             "27:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
397             "43:15: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 15),
398             "45:13: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 13),
399         };
400         verifyWithInlineConfigParser(
401                 getPath("InputRightCurlyTryWithResourceAloneSingle.java"), expected);
402     }
403 
404     @Test
405     public void testBracePolicyAloneAndSinglelineIfBlocks() throws Exception {
406         final String[] expected = {
407             "13:32: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 32),
408             "15:45: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 45),
409             "15:47: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 47),
410         };
411         verifyWithInlineConfigParser(
412                 getPath("InputRightCurlyTestSinglelineIfBlocks.java"), expected);
413     }
414 
415     @Test
416     public void testRightCurlyIsAloneLambda() throws Exception {
417         final String[] expected = CommonUtil.EMPTY_STRING_ARRAY;
418         verifyWithInlineConfigParser(
419                 getPath("InputRightCurlyTestIsAloneLambda.java"), expected);
420     }
421 
422     @Test
423     public void testRightCurlyIsAloneOrSinglelineLambda() throws Exception {
424         final String[] expected = CommonUtil.EMPTY_STRING_ARRAY;
425         verifyWithInlineConfigParser(
426                 getPath("InputRightCurlyTestIsAloneOrSinglelineLambda.java"), expected);
427     }
428 
429     @Test
430     public void testRightCurlyIsSameLambda() throws Exception {
431         final String[] expected = CommonUtil.EMPTY_STRING_ARRAY;
432         verifyWithInlineConfigParser(
433                 getPath("InputRightCurlyTestIsSameLambda.java"), expected);
434     }
435 
436     @Test
437     public void testOptionAlone() throws Exception {
438         final String[] expected = {
439             "16:15: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 15),
440             "17:21: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 21),
441             "21:26: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 26),
442             "30:37: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 37),
443             "47:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
444             "51:37: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 37),
445             "54:30: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 30),
446             "56:27: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 27),
447             "58:17: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 17),
448             "60:53: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 53),
449             "62:27: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 27),
450             "62:52: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 52),
451             "75:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
452             "75:11: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 11),
453             "79:39: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 39),
454             "81:56: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 56),
455             "84:24: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 24),
456             "96:30: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 30),
457             "99:39: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 39),
458             "105:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
459             "105:10: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 10),
460         };
461         verifyWithInlineConfigParser(
462                 getPath("InputRightCurlyTestOptionAlone.java"),
463                 expected);
464     }
465 
466     @Test
467     public void testOptionAloneOrSingleLine() throws Exception {
468         final String[] expected = {
469             "21:26: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 26),
470             "30:37: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 37),
471             "38:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
472             "47:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
473             "51:37: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 37),
474             "72:24: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 24),
475             "77:30: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 30),
476             "86:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
477             "86:10: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 10),
478         };
479         verifyWithInlineConfigParser(
480                 getPath(
481                 "InputRightCurlyTestOptionAloneOrSingleLine.java"), expected);
482     }
483 
484     @Test
485     public void testBlocksEndingWithSemiOptionSame() throws Exception {
486         final String[] expected = {
487             "16:5: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 5),
488             "21:5: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 5),
489             "27:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
490             "35:29: " + getCheckMessage(MSG_KEY_LINE_BREAK_BEFORE, "}", 29),
491             "41:5: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 5),
492             "44:5: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 5),
493             "51:20: " + getCheckMessage(MSG_KEY_LINE_BREAK_BEFORE, "}", 20),
494             "57:5: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 5),
495             "60:5: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 5),
496             "65:30: " + getCheckMessage(MSG_KEY_LINE_BREAK_BEFORE, "}", 30),
497             "74:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
498             "74:11: " + getCheckMessage(MSG_KEY_LINE_BREAK_BEFORE, "}", 11),
499             "78:5: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 5),
500         };
501         verifyWithInlineConfigParser(
502                 getPath("InputRightCurlyTestOptSameBlocksWithSemi.java"), expected);
503     }
504 
505     @Test
506     public void testBlocksEndingWithSemiOptionAlone() throws Exception {
507         final String[] expected = {
508             "13:31: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 31),
509             "16:5: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 5),
510             "18:29: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 29),
511             "21:5: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 5),
512             "24:30: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 30),
513             "27:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
514             "35:29: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 29),
515             "37:40: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 40),
516             "41:5: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 5),
517             "44:5: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 5),
518             "46:61: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 61),
519             "48:19: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 19),
520             "51:20: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 20),
521             "53:34: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 34),
522             "57:5: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 5),
523             "60:5: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 5),
524             "65:30: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 30),
525             "71:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
526             "71:11: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 11),
527             "75:5: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 5),
528         };
529         verifyWithInlineConfigParser(
530                 getPath("InputRightCurlyTestOptAloneBlocksWithSemi.java"), expected);
531     }
532 
533     @Test
534     public void testBlocksEndingWithSemiOptionAloneOrSingleLine() throws Exception {
535         final String[] expected = {
536             "16:5: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 5),
537             "21:5: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 5),
538             "27:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
539             "35:29: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 29),
540             "41:5: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 5),
541             "44:5: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 5),
542             "51:20: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 20),
543             "57:5: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 5),
544             "60:5: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 5),
545             "65:30: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 30),
546             "74:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
547             "74:11: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 11),
548             "78:5: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 5),
549         };
550         verifyWithInlineConfigParser(
551                 getPath("InputRightCurlyTestOptAloneOrSingleLineBlocksWithSemi.java"), expected);
552     }
553 
554     @Test
555     public void testNewTokensAlone() throws Exception {
556         final String[] expected = {
557             "13:19: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 19),
558             "16:20: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 20),
559             "18:34: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 34),
560         };
561         verifyWithInlineConfigParser(
562                 getPath("InputRightCurlyTestNewTokensAlone.java"), expected);
563     }
564 
565     @Test
566     public void testNewTokensAloneOrSingleLine() throws Exception {
567         final String[] expected = {
568             "16:20: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 20),
569         };
570         verifyWithInlineConfigParser(
571                 getPath("InputRightCurlyNewTokensAloneOrSingleLine.java"), expected);
572     }
573 
574     @Test
575     public void testNewTokensSame() throws Exception {
576         final String[] expected = {
577             "16:20: " + getCheckMessage(MSG_KEY_LINE_BREAK_BEFORE, "}", 20),
578         };
579         verifyWithInlineConfigParser(
580                 getPath("InputRightCurlyTestSameNewTokens.java"), expected);
581     }
582 
583     @Test
584     public void testRightCurlyDoubleBrace() throws Exception {
585         final String[] expected = {
586             "14:1: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 1),
587             "14:2: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 2),
588         };
589         verifyWithInlineConfigParser(
590                 getPath("InputRightCurlyTestDoubleBrace.java"), expected);
591     }
592 
593     @Test
594     public void testRightCurlyEmptyOnSingleLine() throws Exception {
595         final String[] expected = CommonUtil.EMPTY_STRING_ARRAY;
596         verifyWithInlineConfigParser(
597                 getPath("InputRightCurlyTestEmptyOnSingleLine.java"), expected);
598     }
599 
600     @Test
601     public void testRightCurlyEndOfFile() throws Exception {
602         final String[] expected = {
603             "16:2: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 2),
604             "16:3: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 3),
605         };
606         verifyWithInlineConfigParser(
607                 getPath("InputRightCurlyTestEndOfFile.java"), expected);
608     }
609 
610     @Test
611     public void testRightCurlyRecordsAndCompactCtors() throws Exception {
612         final String[] expected = {
613             "23:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
614             "23:11: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 11),
615             "27:21: " + getCheckMessage(MSG_KEY_LINE_BREAK_BEFORE, "}", 21),
616             "32:23: " + getCheckMessage(MSG_KEY_LINE_BREAK_BEFORE, "}", 23),
617             "34:37: " + getCheckMessage(MSG_KEY_LINE_BREAK_BEFORE, "}", 37),
618             "41:68: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 68),
619         };
620         verifyWithInlineConfigParser(
621                 getNonCompilablePath("InputRightCurlyTestRecordsAndCompactCtors.java"), expected);
622     }
623 
624     @Test
625     public void testRightCurlyWithEmoji() throws Exception {
626         final String[] expected = {
627             "24:13: " + getCheckMessage(MSG_KEY_LINE_SAME, "}", 13),
628             "28:13: " + getCheckMessage(MSG_KEY_LINE_SAME, "}", 13),
629             "49:9: " + getCheckMessage(MSG_KEY_LINE_SAME, "}", 9),
630             "69:50: " + getCheckMessage(MSG_KEY_LINE_BREAK_BEFORE, "}", 50),
631             "78:44: " + getCheckMessage(MSG_KEY_LINE_BREAK_BEFORE, "}", 44),
632             "84:41: " + getCheckMessage(MSG_KEY_LINE_BREAK_BEFORE, "}", 41),
633 
634         };
635         verifyWithInlineConfigParser(getPath("InputRightCurlyWithEmoji.java"), expected);
636     }
637 
638     @Test
639     public void testRightCurlyWithEmojiAloneOrSingleLine() throws Exception {
640         final String[] expected = {
641             "24:38: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 38),
642             "30:43: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 43),
643             "40:45: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 45),
644             "51:41: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 41),
645             "54:31: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 31),
646         };
647         verifyWithInlineConfigParser(
648                 getPath("InputRightCurlyWithEmojiAloneOrSingleLine.java"), expected);
649     }
650 
651     @Test
652     public void testUppercaseOptionProperty() throws Exception {
653         final String[] expected = {
654             "16:46: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 46),
655             "21:35: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 35),
656         };
657         verifyWithInlineConfigParser(
658                 getPath("InputRightCurlyWithUppercaseOptionProperty.java"), expected);
659     }
660 
661     @Test
662     public void testRightCurlyWithIfElseAlone() throws Exception {
663         final String[] expected = {
664             "19:12: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 12),
665             "27:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
666         };
667         verifyWithInlineConfigParser(
668                 getPath("InputRightCurlyTestIfElseAlone.java"), expected);
669     }
670 
671     @Test
672     public void testSwitchCase() throws Exception {
673         final String[] expected = {
674             "20:24: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 24),
675             "27:27: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 27),
676             "51:46: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 46),
677             "69:68: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 68),
678             "75:74: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 74),
679             "112:17: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 17),
680             "116:21: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 21),
681         };
682         verifyWithInlineConfigParser(
683                 getPath("InputRightCurlyTestSwitchCase.java"), expected);
684     }
685 
686     @Test
687     public void testSwitchCase2() throws Exception {
688         final String[] expected = {
689             "20:24: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 24),
690             "27:27: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 27),
691             "114:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
692         };
693         verifyWithInlineConfigParser(
694                 getPath("InputRightCurlyTestSwitchCase2.java"), expected);
695     }
696 
697     @Test
698     public void testSwitchCase3() throws Exception {
699         final String[] expected = {
700             "15:22: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 22),
701             "17:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
702             "19:36: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 36),
703             "25:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
704             "26:37: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 37),
705             "28:22: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 22),
706             "29:22: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 22),
707             "37:26: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 26),
708             "37:27: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 27),
709             "43:40: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 40),
710             "43:41: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 41),
711             "48:46: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 46),
712             "50:32: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 32),
713             "50:33: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 33),
714             "52:13: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 13),
715             "52:14: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 14),
716         };
717         verifyWithInlineConfigParser(
718                 getPath("InputRightCurlyTestSwitchCase3.java"), expected);
719     }
720 
721     @Test
722     public void testSwitchCase4() throws Exception {
723         final String[] expected = {
724             "17:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
725             "19:36: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 36),
726             "25:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
727             "26:37: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 37),
728             "28:22: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 22),
729             "35:41: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 41),
730             "35:42: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 42),
731             "40:46: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 46),
732             "42:32: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 32),
733         };
734         verifyWithInlineConfigParser(
735                 getPath("InputRightCurlyTestSwitchCase4.java"), expected);
736     }
737 
738     @Test
739     public void testSwitchCase5() throws Exception {
740         final String[] expected = {
741             "17:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
742             "19:36: " + getCheckMessage(MSG_KEY_LINE_BREAK_BEFORE, "}", 36),
743             "25:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
744             "26:37: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 37),
745             "28:22: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 22),
746             "35:41: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 41),
747             "35:42: " + getCheckMessage(MSG_KEY_LINE_BREAK_BEFORE, "}", 42),
748             "40:46: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 46),
749             "42:32: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 32),
750             "65:49: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 49),
751         };
752         verifyWithInlineConfigParser(
753                 getPath("InputRightCurlyTestSwitchCase5.java"), expected);
754     }
755 
756     @Test
757     public void testSwitchExpression() throws Exception {
758         final String[] expected = {
759             "48:5: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 5),
760             "56:5: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 5),
761             "92:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
762         };
763         verifyWithInlineConfigParser(
764                 getNonCompilablePath("InputRightCurlyTestSwitchExpression.java"), expected);
765     }
766 
767     @Test
768     public void testSwitchExpression2() throws Exception {
769         final String[] expected = {
770             "46:5: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 5),
771             "54:5: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 5),
772             "77:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
773             "90:9: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 9),
774         };
775         verifyWithInlineConfigParser(
776                 getNonCompilablePath("InputRightCurlyTestSwitchExpression2.java"), expected);
777     }
778 
779     @Test
780     public void testSwitchExpression3() throws Exception {
781         final String[] expected = CommonUtil.EMPTY_STRING_ARRAY;
782         verifyWithInlineConfigParser(
783                 getNonCompilablePath("InputRightCurlyTestSwitchExpression3.java"), expected);
784     }
785 
786     @Test
787     public void testSwitchExpression4() throws Exception {
788         final String[] expected = {
789             "117:28: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 28),
790         };
791         verifyWithInlineConfigParser(
792                 getNonCompilablePath("InputRightCurlyTestSwitchExpression4.java"), expected);
793     }
794 
795     @Test
796     public void testSwitchExpression5() throws Exception {
797         final String[] expected = CommonUtil.EMPTY_STRING_ARRAY;
798         verifyWithInlineConfigParser(
799                 getNonCompilablePath("InputRightCurlyTestSwitchExpression5.java"), expected);
800     }
801 
802     @Test
803     public void testSwitchWithComment() throws Exception {
804         final String[] expected = {
805             "16:66: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 66),
806             "23:61: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 61),
807             "24:57: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 57),
808             "31:23: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 23),
809             "32:19: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 19),
810             "37:23: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 23),
811             "38:33: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 33),
812         };
813         verifyWithInlineConfigParser(
814                 getPath("InputRightCurlyTestWithComment.java"), expected);
815     }
816 
817     @Test
818     public void testSwitchExpression6() throws Exception {
819         final String[] expected = CommonUtil.EMPTY_STRING_ARRAY;
820         verifyWithInlineConfigParser(
821                 getNonCompilablePath("InputRightCurlyTestSwitchExpression6.java"), expected);
822     }
823 
824     @Test
825     public void testSwitchExpression7() throws Exception {
826         final String[] expected = CommonUtil.EMPTY_STRING_ARRAY;
827         verifyWithInlineConfigParser(
828                 getNonCompilablePath("InputRightCurlyTestSwitchExpression7.java"), expected);
829     }
830 
831     @Test
832     public void testCaseBlocksInSwitchStatementAlone() throws Exception {
833         final String[] expected = {
834             "33:13: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 13),
835             "44:13: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 13),
836             "73:13: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 13),
837             "78:44: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 44),
838             "90:39: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 39),
839             "97:42: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 42),
840             "107:35: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 35),
841         };
842         verifyWithInlineConfigParser(
843                 getPath("InputRightCurlyCaseBlocksInSwitchStatementAlone.java"), expected);
844     }
845 
846     @Test
847     public void testCaseBlocksInSwitchStatementAlone2() throws Exception {
848         final String[] expected = {
849             "17:15: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 15),
850             "26:13: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 13),
851             "38:13: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 13),
852             "41:13: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 13),
853             "49:24: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 24),
854             "49:45: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 45),
855             "57:13: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 13),
856             "68:13: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 13),
857             "68:26: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 26),
858             "75:34: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 34),
859             "75:47: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 47),
860             "82:23: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 23),
861             "102:13: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 13),
862         };
863         verifyWithInlineConfigParser(
864                 getPath("InputRightCurlyCaseBlocksInSwitchStatementAlone2.java"), expected);
865     }
866 
867     @Test
868     public void testCaseBlocksInSwitchStatementAloneOrSingleLine() throws Exception {
869         final String[] expected = {
870             "33:13: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 13),
871             "44:13: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 13),
872             "73:13: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 13),
873             "78:51: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 51),
874         };
875         verifyWithInlineConfigParser(
876                 getPath("InputRightCurlyCaseBlocksInSwitchStatementAloneOrSingleline.java"),
877                 expected);
878     }
879 
880     @Test
881     public void testCaseBlocksInSwitchStatementAloneOrSingle2() throws Exception {
882         final String[] expected = {
883             "18:15: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 15),
884             "27:13: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 13),
885             "39:13: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 13),
886             "42:15: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 15),
887             "50:23: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 23),
888             "71:13: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 13),
889             "80:23: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 23),
890             "100:13: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 13),
891         };
892         verifyWithInlineConfigParser(
893                 getPath("InputRightCurlyCaseBlocksInSwitchStatementAloneOrSingleline2.java"),
894                 expected);
895     }
896 
897     @Test
898     public void testCaseBlocksInSwitchStatementSame() throws Exception {
899         final String[] expected = {
900             "33:16: " + getCheckMessage(MSG_KEY_LINE_BREAK_BEFORE, "}", 16),
901             "44:13: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 13),
902             "73:13: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 13),
903             "78:51: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 51),
904             "106:23: " + getCheckMessage(MSG_KEY_LINE_BREAK_BEFORE, "}", 23),
905         };
906         verifyWithInlineConfigParser(
907                 getPath("InputRightCurlyCaseBlocksInSwitchStatementSame.java"), expected);
908     }
909 
910     @Test
911     public void testCaseBlocksInSwitchStatementSame2() throws Exception {
912         final String[] expected = {
913             "18:13: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 13),
914             "27:13: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 13),
915             "39:13: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 13),
916             "42:13: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 13),
917             "50:13: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 13),
918             "70:13: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 13),
919             "77:34: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 34),
920             "77:47: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 47),
921             "85:23: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 23),
922             "103:13: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 13),
923         };
924         verifyWithInlineConfigParser(
925                 getPath("InputRightCurlyCaseBlocksInSwitchStatementSame2.java"), expected);
926     }
927 
928     @Test
929     public void testCaseBlocksWithSwitchRuleAlone() throws Exception {
930         final String[] expected = {
931             "32:13: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 13),
932             "44:13: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 13),
933             "45:27: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 27),
934             "56:13: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 13),
935             "69:13: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 13),
936             "74:46: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 46),
937             "83:13: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 13),
938             "83:36: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 36),
939             "93:31: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 31),
940             "94:31: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 31),
941         };
942         verifyWithInlineConfigParser(
943                 getNonCompilablePath("InputRightCurlyCaseBlocksWithSwitchRuleAlone.java"),
944                 expected);
945     }
946 
947     @Test
948     public void testCaseBlocksWithSwitchRuleAloneOrSingleLine() throws Exception {
949 
950         final String[] expected = {
951             "27:19: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 19),
952             "41:13: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 13),
953             "53:23: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 23),
954             "54:27: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 27),
955             "64:13: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 13),
956             "77:13: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 13),
957             "82:46: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 46),
958             "91:13: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 13),
959             "102:31: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 31),
960         };
961         final String fileName = "InputRightCurlyCaseBlocksWithSwitchRuleAloneOrSingleline.java";
962         verifyWithInlineConfigParser(getNonCompilablePath(fileName), expected);
963     }
964 
965     @Test
966     public void testCaseBlocksWithSwitchExpressionAlone() throws Exception {
967         final String[] expected = {
968             "63:31: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 31),
969             "86:42: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 42),
970         };
971         final String fileName = "InputRightCurlyCaseBlocksWithSwitchExpressionAlone.java";
972         verifyWithInlineConfigParser(getNonCompilablePath(fileName), expected);
973     }
974 
975     @Test
976     public void testCaseBlocksWithSwitchExpressionAloneOrSingleLine() throws Exception {
977         final String[] expected = {
978             "63:31: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}", 31),
979         };
980         final String fileName =
981                 "InputRightCurlyCaseBlocksWithSwitchExpressionAloneOrSingleline.java";
982         verifyWithInlineConfigParser(getNonCompilablePath(fileName), expected);
983     }
984 }