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.coding;
21  
22  import static com.puppycrawl.tools.checkstyle.checks.coding.MagicNumberCheck.MSG_KEY;
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 MagicNumberCheckTest
30      extends AbstractModuleTestSupport {
31  
32      @Override
33      protected String getPackageLocation() {
34          return "com/puppycrawl/tools/checkstyle/checks/coding/magicnumber";
35      }
36  
37      @Test
38      public void testLocalVariables()
39              throws Exception {
40          final String[] expected = CommonUtil.EMPTY_STRING_ARRAY;
41          verifyWithInlineConfigParser(
42                  getPath("InputMagicNumberLocalVariables.java"), expected);
43      }
44  
45      @Test
46      public void testLocalVariables2()
47              throws Exception {
48          final String[] expected = {
49              "25:17: " + getCheckMessage(MSG_KEY, "8"),
50          };
51          verifyWithInlineConfigParser(
52                  getPath("InputMagicNumberLocalVariables2.java"), expected);
53      }
54  
55      @Test
56      public void testDefault1()
57              throws Exception {
58          final String[] expected = {
59              "54:26: " + getCheckMessage(MSG_KEY, "3_000"),
60              "55:32: " + getCheckMessage(MSG_KEY, "1.5_0"),
61              "56:27: " + getCheckMessage(MSG_KEY, "3"),
62              "56:31: " + getCheckMessage(MSG_KEY, "4"),
63              "58:29: " + getCheckMessage(MSG_KEY, "3"),
64              "60:23: " + getCheckMessage(MSG_KEY, "3"),
65              "61:26: " + getCheckMessage(MSG_KEY, "1.5"),
66              "63:22: " + getCheckMessage(MSG_KEY, "3"),
67              "63:29: " + getCheckMessage(MSG_KEY, "5"),
68              "63:37: " + getCheckMessage(MSG_KEY, "3"),
69              "67:26: " + getCheckMessage(MSG_KEY, "3"),
70              "68:39: " + getCheckMessage(MSG_KEY, "3"),
71              "72:25: " + getCheckMessage(MSG_KEY, "010"),
72              "73:25: " + getCheckMessage(MSG_KEY, "011"),
73              "75:30: " + getCheckMessage(MSG_KEY, "0_10L"),
74              "76:30: " + getCheckMessage(MSG_KEY, "011l"),
75              "79:24: " + getCheckMessage(MSG_KEY, "0x10"),
76              "80:24: " + getCheckMessage(MSG_KEY, "0X011"),
77              "82:29: " + getCheckMessage(MSG_KEY, "0x10L"),
78              "83:29: " + getCheckMessage(MSG_KEY, "0X11l"),
79              "96:28: " + getCheckMessage(MSG_KEY, "3"),
80          };
81          verifyWithInlineConfigParser(
82                  getPath("InputMagicNumberDefault1.java"), expected);
83      }
84  
85      @Test
86      public void testDefault2()
87              throws Exception {
88          final String[] expected = {
89              "21:14: " + getCheckMessage(MSG_KEY, "0xffffffffL"),
90              "28:30: " + getCheckMessage(MSG_KEY, "+3"),
91              "29:29: " + getCheckMessage(MSG_KEY, "-2"),
92              "30:35: " + getCheckMessage(MSG_KEY, "+3.5"),
93              "31:36: " + getCheckMessage(MSG_KEY, "-2.5"),
94              "38:35: " + getCheckMessage(MSG_KEY, "0x80000000"),
95              "39:36: " + getCheckMessage(MSG_KEY, "0x8000000000000000L"),
96              "42:37: " + getCheckMessage(MSG_KEY, "020000000000"),
97              "43:38: " + getCheckMessage(MSG_KEY, "01000000000000000000000L"),
98              "50:20: " + getCheckMessage(MSG_KEY, "378"),
99          };
100         verifyWithInlineConfigParser(
101                 getPath("InputMagicNumberDefault2.java"), expected);
102     }
103 
104     @Test
105     public void testDefault3()
106             throws Exception {
107         final String[] expected = {
108             "20:16: " + getCheckMessage(MSG_KEY, "31"),
109             "25:16: " + getCheckMessage(MSG_KEY, "42"),
110             "30:16: " + getCheckMessage(MSG_KEY, "13"),
111             "34:15: " + getCheckMessage(MSG_KEY, "21"),
112             "38:15: " + getCheckMessage(MSG_KEY, "37"),
113             "42:15: " + getCheckMessage(MSG_KEY, "101"),
114             "45:42: " + getCheckMessage(MSG_KEY, "42"),
115             "49:48: " + getCheckMessage(MSG_KEY, "43"),
116             "53:42: " + getCheckMessage(MSG_KEY, "-44"),
117             "57:48: " + getCheckMessage(MSG_KEY, "-45"),
118             "74:20: " + getCheckMessage(MSG_KEY, "0b101"),
119             "75:14: " + getCheckMessage(MSG_KEY,
120                     "0b1010000101000101101000010100010110100001010001011010000101000101L"),
121             "85:21: " + getCheckMessage(MSG_KEY, "122"),
122 
123         };
124         verifyWithInlineConfigParser(
125                 getPath("InputMagicNumberDefault3.java"), expected);
126     }
127 
128     @Test
129     public void testIgnoreSome1()
130             throws Exception {
131         final String[] expected = {
132             "36:25: " + getCheckMessage(MSG_KEY, "2"),
133             "42:35: " + getCheckMessage(MSG_KEY, "2"),
134             "44:24: " + getCheckMessage(MSG_KEY, "2"),
135             "46:29: " + getCheckMessage(MSG_KEY, "2.0"),
136             "48:29: " + getCheckMessage(MSG_KEY, "2"),
137             "50:17: " + getCheckMessage(MSG_KEY, "2"),
138             "52:19: " + getCheckMessage(MSG_KEY, "2.0"),
139             "56:32: " + getCheckMessage(MSG_KEY, "1.5_0"),
140             "57:31: " + getCheckMessage(MSG_KEY, "4"),
141             "62:26: " + getCheckMessage(MSG_KEY, "1.5"),
142             "64:29: " + getCheckMessage(MSG_KEY, "5"),
143             "75:25: " + getCheckMessage(MSG_KEY, "011"),
144             "78:30: " + getCheckMessage(MSG_KEY, "011l"),
145             "83:24: " + getCheckMessage(MSG_KEY, "0X011"),
146             "86:29: " + getCheckMessage(MSG_KEY, "0X11l"),
147         };
148         verifyWithInlineConfigParser(
149                 getPath("InputMagicNumberIgnoreSome1.java"), expected);
150     }
151 
152     @Test
153     public void testIgnoreSome2()
154             throws Exception {
155         final String[] expected = {
156             "21:14: " + getCheckMessage(MSG_KEY, "0xffffffffL"),
157             "30:29: " + getCheckMessage(MSG_KEY, "-2"),
158             "31:35: " + getCheckMessage(MSG_KEY, "+3.5"),
159             "32:36: " + getCheckMessage(MSG_KEY, "-2.5"),
160             "37:34: " + getCheckMessage(MSG_KEY, "0xffffffff"),
161             "38:36: " + getCheckMessage(MSG_KEY, "0xffffffffffffffffL"),
162             "39:35: " + getCheckMessage(MSG_KEY, "0x80000000"),
163             "40:36: " + getCheckMessage(MSG_KEY, "0x8000000000000000L"),
164             "41:36: " + getCheckMessage(MSG_KEY, "037777777777"),
165             "42:38: " + getCheckMessage(MSG_KEY, "01777777777777777777777L"),
166             "43:37: " + getCheckMessage(MSG_KEY, "020000000000"),
167             "44:38: " + getCheckMessage(MSG_KEY, "01000000000000000000000L"),
168             "49:20: " + getCheckMessage(MSG_KEY, "378"),
169         };
170         verifyWithInlineConfigParser(
171                 getPath("InputMagicNumberIgnoreSome2.java"), expected);
172     }
173 
174     @Test
175     public void testIgnoreSome3()
176             throws Exception {
177         final String[] expected = {
178             "21:16: " + getCheckMessage(MSG_KEY, "31"),
179             "26:16: " + getCheckMessage(MSG_KEY, "42"),
180             "31:16: " + getCheckMessage(MSG_KEY, "13"),
181             "35:15: " + getCheckMessage(MSG_KEY, "21"),
182             "39:15: " + getCheckMessage(MSG_KEY, "37"),
183             "43:15: " + getCheckMessage(MSG_KEY, "101"),
184             "75:20: " + getCheckMessage(MSG_KEY, "0b101"),
185             "76:14: " + getCheckMessage(MSG_KEY,
186                     "0b1010000101000101101000010100010110100001010001011010000101000101L"),
187             "86:21: " + getCheckMessage(MSG_KEY, "122"),
188         };
189         verifyWithInlineConfigParser(
190                 getPath("InputMagicNumberIgnoreSome3.java"), expected);
191     }
192 
193     @Test
194     public void testIgnoreNone1()
195             throws Exception {
196         final String[] expected = {
197             "41:24: " + getCheckMessage(MSG_KEY, "1"),
198             "42:25: " + getCheckMessage(MSG_KEY, "2"),
199             "43:26: " + getCheckMessage(MSG_KEY, "0L"),
200             "44:26: " + getCheckMessage(MSG_KEY, "0l"),
201             "45:30: " + getCheckMessage(MSG_KEY, "0D"),
202             "46:30: " + getCheckMessage(MSG_KEY, "0d"),
203             "48:35: " + getCheckMessage(MSG_KEY, "2"),
204             "50:20: " + getCheckMessage(MSG_KEY, "1"),
205             "50:24: " + getCheckMessage(MSG_KEY, "2"),
206             "51:21: " + getCheckMessage(MSG_KEY, "1"),
207             "52:23: " + getCheckMessage(MSG_KEY, "1.0"),
208             "52:29: " + getCheckMessage(MSG_KEY, "2.0"),
209             "54:22: " + getCheckMessage(MSG_KEY, "0"),
210             "54:29: " + getCheckMessage(MSG_KEY, "2"),
211             "56:13: " + getCheckMessage(MSG_KEY, "1"),
212             "56:17: " + getCheckMessage(MSG_KEY, "2"),
213             "58:13: " + getCheckMessage(MSG_KEY, "1.0"),
214             "58:19: " + getCheckMessage(MSG_KEY, "2.0"),
215             "61:26: " + getCheckMessage(MSG_KEY, "3_000"),
216             "62:32: " + getCheckMessage(MSG_KEY, "1.5_0"),
217             "63:27: " + getCheckMessage(MSG_KEY, "3"),
218             "63:31: " + getCheckMessage(MSG_KEY, "4"),
219             "65:29: " + getCheckMessage(MSG_KEY, "3"),
220             "67:23: " + getCheckMessage(MSG_KEY, "3"),
221             "68:26: " + getCheckMessage(MSG_KEY, "1.5"),
222             "70:22: " + getCheckMessage(MSG_KEY, "3"),
223             "70:29: " + getCheckMessage(MSG_KEY, "5"),
224             "70:37: " + getCheckMessage(MSG_KEY, "3"),
225             "74:26: " + getCheckMessage(MSG_KEY, "3"),
226             "75:39: " + getCheckMessage(MSG_KEY, "3"),
227             "79:25: " + getCheckMessage(MSG_KEY, "00"),
228             "80:25: " + getCheckMessage(MSG_KEY, "010"),
229             "81:25: " + getCheckMessage(MSG_KEY, "011"),
230             "83:30: " + getCheckMessage(MSG_KEY, "0_10L"),
231             "84:30: " + getCheckMessage(MSG_KEY, "011l"),
232             "87:23: " + getCheckMessage(MSG_KEY, "0x0"),
233             "88:24: " + getCheckMessage(MSG_KEY, "0x10"),
234             "89:24: " + getCheckMessage(MSG_KEY, "0X011"),
235             "90:28: " + getCheckMessage(MSG_KEY, "0x0L"),
236             "91:29: " + getCheckMessage(MSG_KEY, "0x10L"),
237             "92:29: " + getCheckMessage(MSG_KEY, "0X11l"),
238             "105:28: " + getCheckMessage(MSG_KEY, "3"),
239         };
240         verifyWithInlineConfigParser(
241                 getPath("InputMagicNumberIgnoreNone1.java"), expected);
242     }
243 
244     @Test
245     public void testIgnoreNone2()
246             throws Exception {
247         final String[] expected = {
248             "19:14: " + getCheckMessage(MSG_KEY, "0xffffffffL"),
249             "26:30: " + getCheckMessage(MSG_KEY, "+3"),
250             "27:29: " + getCheckMessage(MSG_KEY, "-2"),
251             "28:35: " + getCheckMessage(MSG_KEY, "+3.5"),
252             "29:36: " + getCheckMessage(MSG_KEY, "-2.5"),
253             "34:34: " + getCheckMessage(MSG_KEY, "0xffffffff"),
254             "35:36: " + getCheckMessage(MSG_KEY, "0xffffffffffffffffL"),
255             "36:35: " + getCheckMessage(MSG_KEY, "0x80000000"),
256             "37:36: " + getCheckMessage(MSG_KEY, "0x8000000000000000L"),
257             "38:36: " + getCheckMessage(MSG_KEY, "037777777777"),
258             "39:38: " + getCheckMessage(MSG_KEY, "01777777777777777777777L"),
259             "40:37: " + getCheckMessage(MSG_KEY, "020000000000"),
260             "41:38: " + getCheckMessage(MSG_KEY, "01000000000000000000000L"),
261             "47:20: " + getCheckMessage(MSG_KEY, "378"),
262         };
263         verifyWithInlineConfigParser(
264                 getPath("InputMagicNumberIgnoreNone2.java"), expected);
265     }
266 
267     @Test
268     public void testIgnoreNone3()
269             throws Exception {
270         final String[] expected = {
271             "20:16: " + getCheckMessage(MSG_KEY, "31"),
272             "25:16: " + getCheckMessage(MSG_KEY, "42"),
273             "30:16: " + getCheckMessage(MSG_KEY, "13"),
274             "34:15: " + getCheckMessage(MSG_KEY, "21"),
275             "38:15: " + getCheckMessage(MSG_KEY, "37"),
276             "42:15: " + getCheckMessage(MSG_KEY, "101"),
277             "74:20: " + getCheckMessage(MSG_KEY, "0b101"),
278             "75:14: " + getCheckMessage(MSG_KEY,
279                     "0b1010000101000101101000010100010110100001010001011010000101000101L"),
280             "85:21: " + getCheckMessage(MSG_KEY, "122"),
281         };
282         verifyWithInlineConfigParser(
283                 getPath("InputMagicNumberIgnoreNone3.java"), expected);
284     }
285 
286     @Test
287     public void testIntegersOnly1()
288             throws Exception {
289         final String[] expected = {
290             "55:26: " + getCheckMessage(MSG_KEY, "3_000"),
291             "57:27: " + getCheckMessage(MSG_KEY, "3"),
292             "57:31: " + getCheckMessage(MSG_KEY, "4"),
293             "59:29: " + getCheckMessage(MSG_KEY, "3"),
294             "61:23: " + getCheckMessage(MSG_KEY, "3"),
295             "64:22: " + getCheckMessage(MSG_KEY, "3"),
296             "64:29: " + getCheckMessage(MSG_KEY, "5"),
297             "64:37: " + getCheckMessage(MSG_KEY, "3"),
298             "68:26: " + getCheckMessage(MSG_KEY, "3"),
299             "69:39: " + getCheckMessage(MSG_KEY, "3"),
300             "74:25: " + getCheckMessage(MSG_KEY, "010"),
301             "75:25: " + getCheckMessage(MSG_KEY, "011"),
302             "77:30: " + getCheckMessage(MSG_KEY, "0_10L"),
303             "78:30: " + getCheckMessage(MSG_KEY, "011l"),
304             "82:24: " + getCheckMessage(MSG_KEY, "0x10"),
305             "83:24: " + getCheckMessage(MSG_KEY, "0X011"),
306             "85:29: " + getCheckMessage(MSG_KEY, "0x10L"),
307             "86:29: " + getCheckMessage(MSG_KEY, "0X11l"),
308             "99:28: " + getCheckMessage(MSG_KEY, "3"),
309         };
310         verifyWithInlineConfigParser(
311                 getPath("InputMagicNumberIntegersOnly1.java"), expected);
312     }
313 
314     @Test
315     public void testIntegersOnly2()
316             throws Exception {
317         final String[] expected = {
318             "20:14: " + getCheckMessage(MSG_KEY, "0xffffffffL"),
319             "28:30: " + getCheckMessage(MSG_KEY, "+3"),
320             "29:29: " + getCheckMessage(MSG_KEY, "-2"),
321             "38:35: " + getCheckMessage(MSG_KEY, "0x80000000"),
322             "39:36: " + getCheckMessage(MSG_KEY, "0x8000000000000000L"),
323             "42:37: " + getCheckMessage(MSG_KEY, "020000000000"),
324             "43:38: " + getCheckMessage(MSG_KEY, "01000000000000000000000L"),
325             "49:20: " + getCheckMessage(MSG_KEY, "378"),
326         };
327         verifyWithInlineConfigParser(
328                 getPath("InputMagicNumberIntegersOnly2.java"), expected);
329     }
330 
331     @Test
332     public void testIntegersOnly3()
333             throws Exception {
334         final String[] expected = {
335             "20:16: " + getCheckMessage(MSG_KEY, "31"),
336             "25:16: " + getCheckMessage(MSG_KEY, "42"),
337             "30:16: " + getCheckMessage(MSG_KEY, "13"),
338             "34:15: " + getCheckMessage(MSG_KEY, "21"),
339             "38:15: " + getCheckMessage(MSG_KEY, "37"),
340             "42:15: " + getCheckMessage(MSG_KEY, "101"),
341             "74:20: " + getCheckMessage(MSG_KEY, "0b101"),
342             "75:14: " + getCheckMessage(MSG_KEY,
343                     "0b1010000101000101101000010100010110100001010001011010000101000101L"),
344             "85:21: " + getCheckMessage(MSG_KEY, "122"),
345         };
346         verifyWithInlineConfigParser(
347                 getPath("InputMagicNumberIntegersOnly3.java"), expected);
348     }
349 
350     @Test
351     public void testIgnoreNegativeOctalHex1() throws Exception {
352         final String[] expected = {
353             "55:26: " + getCheckMessage(MSG_KEY, "3_000"),
354             "57:27: " + getCheckMessage(MSG_KEY, "3"),
355             "57:31: " + getCheckMessage(MSG_KEY, "4"),
356             "59:29: " + getCheckMessage(MSG_KEY, "3"),
357             "61:23: " + getCheckMessage(MSG_KEY, "3"),
358             "64:22: " + getCheckMessage(MSG_KEY, "3"),
359             "64:29: " + getCheckMessage(MSG_KEY, "5"),
360             "64:37: " + getCheckMessage(MSG_KEY, "3"),
361             "68:26: " + getCheckMessage(MSG_KEY, "3"),
362             "69:39: " + getCheckMessage(MSG_KEY, "3"),
363             "74:25: " + getCheckMessage(MSG_KEY, "010"),
364             "75:25: " + getCheckMessage(MSG_KEY, "011"),
365             "77:30: " + getCheckMessage(MSG_KEY, "0_10L"),
366             "78:30: " + getCheckMessage(MSG_KEY, "011l"),
367             "82:24: " + getCheckMessage(MSG_KEY, "0x10"),
368             "83:24: " + getCheckMessage(MSG_KEY, "0X011"),
369             "85:29: " + getCheckMessage(MSG_KEY, "0x10L"),
370             "86:29: " + getCheckMessage(MSG_KEY, "0X11l"),
371             "99:28: " + getCheckMessage(MSG_KEY, "3"),
372         };
373         verifyWithInlineConfigParser(
374                 getPath("InputMagicNumberIgnoreNegativeOctalHex1.java"), expected);
375     }
376 
377     @Test
378     public void testIgnoreNegativeOctalHex2() throws Exception {
379         final String[] expected = {
380             "20:14: " + getCheckMessage(MSG_KEY, "0xffffffffL"),
381             "28:30: " + getCheckMessage(MSG_KEY, "+3"),
382             "50:20: " + getCheckMessage(MSG_KEY, "378"),
383         };
384         verifyWithInlineConfigParser(
385                 getPath("InputMagicNumberIgnoreNegativeOctalHex2.java"), expected);
386     }
387 
388     @Test
389     public void testIgnoreNegativeOctalHex3() throws Exception {
390         final String[] expected = {
391             "20:16: " + getCheckMessage(MSG_KEY, "31"),
392             "25:16: " + getCheckMessage(MSG_KEY, "42"),
393             "30:16: " + getCheckMessage(MSG_KEY, "13"),
394             "34:15: " + getCheckMessage(MSG_KEY, "21"),
395             "38:15: " + getCheckMessage(MSG_KEY, "37"),
396             "42:15: " + getCheckMessage(MSG_KEY, "101"),
397             "75:20: " + getCheckMessage(MSG_KEY, "0b101"),
398             "76:14: " + getCheckMessage(MSG_KEY,
399                     "0b1010000101000101101000010100010110100001010001011010000101000101L"),
400             "86:21: " + getCheckMessage(MSG_KEY, "122"),
401         };
402         verifyWithInlineConfigParser(
403                 getPath("InputMagicNumberIgnoreNegativeOctalHex3.java"), expected);
404     }
405 
406     @Test
407     public void testIgnoreHashCodeMethod() throws Exception {
408         final String[] expected = {
409             "55:26: " + getCheckMessage(MSG_KEY, "3_000"),
410             "56:32: " + getCheckMessage(MSG_KEY, "1.5_0"),
411             "57:27: " + getCheckMessage(MSG_KEY, "3"),
412             "57:31: " + getCheckMessage(MSG_KEY, "4"),
413             "59:29: " + getCheckMessage(MSG_KEY, "3"),
414             "61:23: " + getCheckMessage(MSG_KEY, "3"),
415             "62:26: " + getCheckMessage(MSG_KEY, "1.5"),
416             "64:22: " + getCheckMessage(MSG_KEY, "3"),
417             "64:29: " + getCheckMessage(MSG_KEY, "5"),
418             "64:37: " + getCheckMessage(MSG_KEY, "3"),
419             "68:26: " + getCheckMessage(MSG_KEY, "3"),
420             "69:39: " + getCheckMessage(MSG_KEY, "3"),
421             "74:25: " + getCheckMessage(MSG_KEY, "010"),
422             "75:25: " + getCheckMessage(MSG_KEY, "011"),
423             "77:30: " + getCheckMessage(MSG_KEY, "0_10L"),
424             "78:30: " + getCheckMessage(MSG_KEY, "011l"),
425             "82:24: " + getCheckMessage(MSG_KEY, "0x10"),
426             "83:24: " + getCheckMessage(MSG_KEY, "0X011"),
427             "85:29: " + getCheckMessage(MSG_KEY, "0x10L"),
428             "86:29: " + getCheckMessage(MSG_KEY, "0X11l"),
429             "99:28: " + getCheckMessage(MSG_KEY, "3"),
430         };
431         verifyWithInlineConfigParser(
432                 getPath("InputMagicNumberIgnoreHashCodeMethod1.java"), expected);
433     }
434 
435     @Test
436     public void testIgnoreHashCodeMethod2() throws Exception {
437         final String[] expected = {
438             "20:14: " + getCheckMessage(MSG_KEY, "0xffffffffL"),
439             "27:30: " + getCheckMessage(MSG_KEY, "+3"),
440             "28:29: " + getCheckMessage(MSG_KEY, "-2"),
441             "29:35: " + getCheckMessage(MSG_KEY, "+3.5"),
442             "30:36: " + getCheckMessage(MSG_KEY, "-2.5"),
443             "37:35: " + getCheckMessage(MSG_KEY, "0x80000000"),
444             "38:36: " + getCheckMessage(MSG_KEY, "0x8000000000000000L"),
445             "41:37: " + getCheckMessage(MSG_KEY, "020000000000"),
446             "42:38: " + getCheckMessage(MSG_KEY, "01000000000000000000000L"),
447             "49:20: " + getCheckMessage(MSG_KEY, "378"),
448         };
449         verifyWithInlineConfigParser(
450                 getPath("InputMagicNumberIgnoreHashCodeMethod2.java"), expected);
451     }
452 
453     @Test
454     public void testIgnoreHashCodeMethod3() throws Exception {
455         final String[] expected = {
456             "25:16: " + getCheckMessage(MSG_KEY, "42"),
457             "30:16: " + getCheckMessage(MSG_KEY, "13"),
458             "34:15: " + getCheckMessage(MSG_KEY, "21"),
459             "38:15: " + getCheckMessage(MSG_KEY, "37"),
460             "42:15: " + getCheckMessage(MSG_KEY, "101"),
461             "75:20: " + getCheckMessage(MSG_KEY, "0b101"),
462             "76:14: " + getCheckMessage(MSG_KEY,
463                     "0b1010000101000101101000010100010110100001010001011010000101000101L"),
464             "86:21: " + getCheckMessage(MSG_KEY, "122"),
465         };
466         verifyWithInlineConfigParser(
467                 getPath("InputMagicNumberIgnoreHashCodeMethod3.java"), expected);
468     }
469 
470     @Test
471     public void testIgnoreFieldDeclaration1()
472             throws Exception {
473         final String[] expected = {
474             "55:26: " + getCheckMessage(MSG_KEY, "3_000"),
475             "56:32: " + getCheckMessage(MSG_KEY, "1.5_0"),
476             "57:27: " + getCheckMessage(MSG_KEY, "3"),
477             "57:31: " + getCheckMessage(MSG_KEY, "4"),
478             "59:29: " + getCheckMessage(MSG_KEY, "3"),
479             "61:23: " + getCheckMessage(MSG_KEY, "3"),
480             "62:26: " + getCheckMessage(MSG_KEY, "1.5"),
481             "64:22: " + getCheckMessage(MSG_KEY, "3"),
482             "64:29: " + getCheckMessage(MSG_KEY, "5"),
483             "64:37: " + getCheckMessage(MSG_KEY, "3"),
484             "68:26: " + getCheckMessage(MSG_KEY, "3"),
485             "69:39: " + getCheckMessage(MSG_KEY, "3"),
486             "74:25: " + getCheckMessage(MSG_KEY, "010"),
487             "75:25: " + getCheckMessage(MSG_KEY, "011"),
488             "77:30: " + getCheckMessage(MSG_KEY, "0_10L"),
489             "78:30: " + getCheckMessage(MSG_KEY, "011l"),
490             "82:24: " + getCheckMessage(MSG_KEY, "0x10"),
491             "83:24: " + getCheckMessage(MSG_KEY, "0X011"),
492             "85:29: " + getCheckMessage(MSG_KEY, "0x10L"),
493             "86:29: " + getCheckMessage(MSG_KEY, "0X11l"),
494         };
495         verifyWithInlineConfigParser(
496                 getPath("InputMagicNumberIgnoreFieldDeclaration1.java"), expected);
497     }
498 
499     @Test
500     public void testIgnoreFieldDeclaration2()
501             throws Exception {
502         final String[] expected = {
503             "49:20: " + getCheckMessage(MSG_KEY, "378"),
504         };
505         verifyWithInlineConfigParser(
506                 getPath("InputMagicNumberIgnoreFieldDeclaration2.java"), expected);
507     }
508 
509     @Test
510     public void testIgnoreFieldDeclaration3()
511             throws Exception {
512         final String[] expected = {
513             "20:16: " + getCheckMessage(MSG_KEY, "31"),
514             "25:16: " + getCheckMessage(MSG_KEY, "42"),
515             "30:16: " + getCheckMessage(MSG_KEY, "13"),
516             "34:15: " + getCheckMessage(MSG_KEY, "21"),
517             "38:15: " + getCheckMessage(MSG_KEY, "37"),
518             "42:15: " + getCheckMessage(MSG_KEY, "101"),
519             "45:42: " + getCheckMessage(MSG_KEY, "42"),
520             "49:48: " + getCheckMessage(MSG_KEY, "43"),
521             "53:42: " + getCheckMessage(MSG_KEY, "-44"),
522             "57:48: " + getCheckMessage(MSG_KEY, "-45"),
523             "86:21: " + getCheckMessage(MSG_KEY, "122"),
524         };
525         verifyWithInlineConfigParser(
526                 getPath("InputMagicNumberIgnoreFieldDeclaration3.java"), expected);
527     }
528 
529     @Test
530     public void testWaiverParentToken()
531             throws Exception {
532         final String[] expected = {
533             "55:26: " + getCheckMessage(MSG_KEY, "3_000"),
534             "56:32: " + getCheckMessage(MSG_KEY, "1.5_0"),
535             "57:27: " + getCheckMessage(MSG_KEY, "3"),
536             "57:31: " + getCheckMessage(MSG_KEY, "4"),
537             "59:29: " + getCheckMessage(MSG_KEY, "3"),
538             "61:23: " + getCheckMessage(MSG_KEY, "3"),
539             "62:26: " + getCheckMessage(MSG_KEY, "1.5"),
540             "64:22: " + getCheckMessage(MSG_KEY, "3"),
541             "64:29: " + getCheckMessage(MSG_KEY, "5"),
542             "64:37: " + getCheckMessage(MSG_KEY, "3"),
543             "68:26: " + getCheckMessage(MSG_KEY, "3"),
544             "69:39: " + getCheckMessage(MSG_KEY, "3"),
545             "74:25: " + getCheckMessage(MSG_KEY, "010"),
546             "75:25: " + getCheckMessage(MSG_KEY, "011"),
547             "77:30: " + getCheckMessage(MSG_KEY, "0_10L"),
548             "78:30: " + getCheckMessage(MSG_KEY, "011l"),
549             "82:24: " + getCheckMessage(MSG_KEY, "0x10"),
550             "83:24: " + getCheckMessage(MSG_KEY, "0X011"),
551             "85:29: " + getCheckMessage(MSG_KEY, "0x10L"),
552             "86:29: " + getCheckMessage(MSG_KEY, "0X11l"),
553             "99:28: " + getCheckMessage(MSG_KEY, "3"),
554         };
555         verifyWithInlineConfigParser(
556                 getPath("InputMagicNumberWaiverParentToken1.java"), expected);
557     }
558 
559     @Test
560     public void testWaiverParentToken2()
561             throws Exception {
562         final String[] expected = {
563             "20:14: " + getCheckMessage(MSG_KEY, "0xffffffffL"),
564             "28:30: " + getCheckMessage(MSG_KEY, "+3"),
565             "29:29: " + getCheckMessage(MSG_KEY, "-2"),
566             "30:35: " + getCheckMessage(MSG_KEY, "+3.5"),
567             "31:36: " + getCheckMessage(MSG_KEY, "-2.5"),
568             "38:35: " + getCheckMessage(MSG_KEY, "0x80000000"),
569             "39:36: " + getCheckMessage(MSG_KEY, "0x8000000000000000L"),
570             "42:37: " + getCheckMessage(MSG_KEY, "020000000000"),
571             "43:38: " + getCheckMessage(MSG_KEY, "01000000000000000000000L"),
572             "49:20: " + getCheckMessage(MSG_KEY, "378"),
573             "54:52: " + getCheckMessage(MSG_KEY, "27"),
574             "57:57: " + getCheckMessage(MSG_KEY, "3"),
575             "57:60: " + getCheckMessage(MSG_KEY, "3"),
576             "57:63: " + getCheckMessage(MSG_KEY, "3"),
577             "57:66: " + getCheckMessage(MSG_KEY, "3"),
578         };
579         verifyWithInlineConfigParser(
580                 getPath("InputMagicNumberWaiverParentToken2.java"), expected);
581     }
582 
583     @Test
584     public void testWaiverParentToken3()
585             throws Exception {
586         final String[] expected = {
587             "20:16: " + getCheckMessage(MSG_KEY, "31"),
588             "25:16: " + getCheckMessage(MSG_KEY, "42"),
589             "30:16: " + getCheckMessage(MSG_KEY, "13"),
590             "34:15: " + getCheckMessage(MSG_KEY, "21"),
591             "38:15: " + getCheckMessage(MSG_KEY, "37"),
592             "42:15: " + getCheckMessage(MSG_KEY, "101"),
593             "45:42: " + getCheckMessage(MSG_KEY, "42"),
594             "49:48: " + getCheckMessage(MSG_KEY, "43"),
595             "53:42: " + getCheckMessage(MSG_KEY, "-44"),
596             "57:48: " + getCheckMessage(MSG_KEY, "-45"),
597             "70:54: " + getCheckMessage(MSG_KEY, "62"),
598             "75:20: " + getCheckMessage(MSG_KEY, "0b101"),
599             "76:14: " + getCheckMessage(MSG_KEY,
600                     "0b1010000101000101101000010100010110100001010001011010000101000101L"),
601             "86:21: " + getCheckMessage(MSG_KEY, "122"),
602         };
603         verifyWithInlineConfigParser(
604                 getPath("InputMagicNumberWaiverParentToken3.java"), expected);
605     }
606 
607     @Test
608     public void testMagicNumberRecordsDefault()
609             throws Exception {
610         final String[] expected = {
611             "19:11: " + getCheckMessage(MSG_KEY, "6"),
612             "21:36: " + getCheckMessage(MSG_KEY, "7"),
613             "25:29: " + getCheckMessage(MSG_KEY, "8"),
614             "29:29: " + getCheckMessage(MSG_KEY, "8"),
615             "33:20: " + getCheckMessage(MSG_KEY, "10"),
616         };
617         verifyWithInlineConfigParser(
618                 getNonCompilablePath("InputMagicNumberRecordsDefault.java"), expected);
619     }
620 
621     @Test
622     public void testMagicNumberIgnoreFieldDeclarationRecords()
623             throws Exception {
624         final String[] expected = {
625             "19:11: " + getCheckMessage(MSG_KEY, "6"),
626             "25:29: " + getCheckMessage(MSG_KEY, "8"),
627             "29:29: " + getCheckMessage(MSG_KEY, "8"),
628             "33:20: " + getCheckMessage(MSG_KEY, "10"),
629         };
630         verifyWithInlineConfigParser(
631                 getNonCompilablePath("InputMagicNumberIgnoreFieldDeclarationRecords.java"),
632                 expected);
633     }
634 
635     @Test
636     public void testMagicNumberIgnoreFieldDeclarationWithAnnotation()
637             throws Exception {
638         final String[] expected = {
639             "16:38: " + getCheckMessage(MSG_KEY, "3"),
640             "20:40: " + getCheckMessage(MSG_KEY, "60"),
641             "21:34: " + getCheckMessage(MSG_KEY, "20"),
642         };
643         verifyWithInlineConfigParser(
644                 getPath("InputMagicNumberIgnoreFieldDeclarationWithAnnotation.java"),
645                 expected);
646     }
647 
648     @Test
649     public void testIgnoreInAnnotationElementDefault() throws Exception {
650         final String[] expected = {
651             "18:29: " + getCheckMessage(MSG_KEY, "10"),
652             "19:33: " + getCheckMessage(MSG_KEY, "11"),
653         };
654         verifyWithInlineConfigParser(
655                 getPath("InputMagicNumberAnnotationElement.java"), expected);
656     }
657 
658     @Test
659     public void testMagicNumber()
660             throws Exception {
661         final String[] expected = {
662             "38:29: " + getCheckMessage(MSG_KEY, "3.0"),
663             "39:32: " + getCheckMessage(MSG_KEY, "1.5_0"),
664             "40:19: " + getCheckMessage(MSG_KEY, "3.0"),
665             "41:26: " + getCheckMessage(MSG_KEY, "1.5"),
666             "49:50: " + getCheckMessage(MSG_KEY, "5"),
667             "50:42: " + getCheckMessage(MSG_KEY, "3"),
668             "51:44: " + getCheckMessage(MSG_KEY, "3"),
669             "52:37: " + getCheckMessage(MSG_KEY, "8"),
670             "55:33: " + getCheckMessage(MSG_KEY, "3.0"),
671             "56:36: " + getCheckMessage(MSG_KEY, "1.5_0"),
672             "57:23: " + getCheckMessage(MSG_KEY, "3.0"),
673             "58:30: " + getCheckMessage(MSG_KEY, "1.5"),
674             "68:33: " + getCheckMessage(MSG_KEY, "3.0"),
675             "69:36: " + getCheckMessage(MSG_KEY, "1.5_0"),
676             "70:23: " + getCheckMessage(MSG_KEY, "3.0"),
677             "71:30: " + getCheckMessage(MSG_KEY, "1.5"),
678             "78:33: " + getCheckMessage(MSG_KEY, "3.0"),
679             "79:36: " + getCheckMessage(MSG_KEY, "1.5_0"),
680             "80:23: " + getCheckMessage(MSG_KEY, "3.0"),
681             "81:30: " + getCheckMessage(MSG_KEY, "1.5"),
682             "90:33: " + getCheckMessage(MSG_KEY, "3.0"),
683             "91:36: " + getCheckMessage(MSG_KEY, "1.5_0"),
684             "92:23: " + getCheckMessage(MSG_KEY, "3.0"),
685             "93:30: " + getCheckMessage(MSG_KEY, "1.5"),
686             "100:33: " + getCheckMessage(MSG_KEY, "3.0"),
687             "101:36: " + getCheckMessage(MSG_KEY, "1.5_0"),
688             "102:23: " + getCheckMessage(MSG_KEY, "3.0"),
689             "103:30: " + getCheckMessage(MSG_KEY, "1.5"),
690             "112:33: " + getCheckMessage(MSG_KEY, "3.0"),
691             "113:36: " + getCheckMessage(MSG_KEY, "1.5_0"),
692             "114:23: " + getCheckMessage(MSG_KEY, "3.0"),
693             "115:30: " + getCheckMessage(MSG_KEY, "1.5"),
694         };
695         verifyWithInlineConfigParser(
696                 getPath("InputMagicNumberMagicNumber.java"), expected);
697     }
698 
699     @Test
700     public void testMagicNumber2() throws Exception {
701         final String[] expected = {
702             "25:17: " + getCheckMessage(MSG_KEY, "9"),
703             "27:20: " + getCheckMessage(MSG_KEY, "5.5"),
704             "28:19: " + getCheckMessage(MSG_KEY, "12.2f"),
705             "33:28: " + getCheckMessage(MSG_KEY, "45"),
706             "41:21: " + getCheckMessage(MSG_KEY, "9"),
707             "43:24: " + getCheckMessage(MSG_KEY, "5.5"),
708             "44:23: " + getCheckMessage(MSG_KEY, "12.2f"),
709             "49:46: " + getCheckMessage(MSG_KEY, "5"),
710             "50:38: " + getCheckMessage(MSG_KEY, "5"),
711             "51:40: " + getCheckMessage(MSG_KEY, "5"),
712             "52:31: " + getCheckMessage(MSG_KEY, "5"),
713             "53:49: " + getCheckMessage(MSG_KEY, "5"),
714             "66:50: " + getCheckMessage(MSG_KEY, "5"),
715             "67:42: " + getCheckMessage(MSG_KEY, "5"),
716             "68:44: " + getCheckMessage(MSG_KEY, "5"),
717             "69:35: " + getCheckMessage(MSG_KEY, "5"),
718             "70:53: " + getCheckMessage(MSG_KEY, "5"),
719         };
720         verifyWithInlineConfigParser(
721                 getPath("InputMagicNumberMagicNumber2.java"), expected);
722     }
723 
724     @Test
725     public void testMagicNumber3() throws Exception {
726         final String[] expected = CommonUtil.EMPTY_STRING_ARRAY;
727         verifyWithInlineConfigParser(
728                 getPath("InputMagicNumberMagicNumber3.java"), expected);
729     }
730 
731     @Test
732     public void testMagicNumberInGuards() throws Exception {
733         final String[] expected = {
734             "21:63: " + getCheckMessage(MSG_KEY, "3"),
735             "21:72: " + getCheckMessage(MSG_KEY, "8"),
736             "27:58: " + getCheckMessage(MSG_KEY, "3"),
737             "27:68: " + getCheckMessage(MSG_KEY, "6"),
738             "31:50: " + getCheckMessage(MSG_KEY, "10.88"),
739             "33:46: " + getCheckMessage(MSG_KEY, "6"),
740             "39:59: " + getCheckMessage(MSG_KEY, "0.5"),
741             "39:67: " + getCheckMessage(MSG_KEY, "5"),
742             "44:23: " + getCheckMessage(MSG_KEY, "6"),
743         };
744         verifyWithInlineConfigParser(
745                 getNonCompilablePath("InputMagicNumberMagicNumberInGuards.java"), expected);
746     }
747 
748     @Test
749     public void testMagicNumberWithUnnamedVariables() throws Exception {
750         final String[] expected = {
751             "20:17: " + getCheckMessage(MSG_KEY, "9"),
752             "22:21: " + getCheckMessage(MSG_KEY, "17"),
753             "23:20: " + getCheckMessage(MSG_KEY, "3.1415"),
754         };
755         verifyWithInlineConfigParser(
756                 getNonCompilablePath("InputMagicNumberMagicNumberWithUnnamedVariables.java"),
757                 expected);
758     }
759 }