View Javadoc
1   ///////////////////////////////////////////////////////////////////////////////////////////////
2   // checkstyle: Checks Java source code and other text files for adherence to a set of rules.
3   // Copyright (C) 2001-2025 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              "27: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              "56:26: " + getCheckMessage(MSG_KEY, "3_000"),
60              "57:32: " + getCheckMessage(MSG_KEY, "1.5_0"),
61              "58:27: " + getCheckMessage(MSG_KEY, "3"),
62              "58:31: " + getCheckMessage(MSG_KEY, "4"),
63              "60:29: " + getCheckMessage(MSG_KEY, "3"),
64              "62:23: " + getCheckMessage(MSG_KEY, "3"),
65              "63:26: " + getCheckMessage(MSG_KEY, "1.5"),
66              "65:22: " + getCheckMessage(MSG_KEY, "3"),
67              "65:29: " + getCheckMessage(MSG_KEY, "5"),
68              "65:37: " + getCheckMessage(MSG_KEY, "3"),
69              "69:26: " + getCheckMessage(MSG_KEY, "3"),
70              "70:39: " + getCheckMessage(MSG_KEY, "3"),
71              "74:25: " + getCheckMessage(MSG_KEY, "010"),
72              "75:25: " + getCheckMessage(MSG_KEY, "011"),
73              "77:30: " + getCheckMessage(MSG_KEY, "0_10L"),
74              "78:30: " + getCheckMessage(MSG_KEY, "011l"),
75              "81:24: " + getCheckMessage(MSG_KEY, "0x10"),
76              "82:24: " + getCheckMessage(MSG_KEY, "0X011"),
77              "84:29: " + getCheckMessage(MSG_KEY, "0x10L"),
78              "85:29: " + getCheckMessage(MSG_KEY, "0X11l"),
79              "98: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              "23:14: " + getCheckMessage(MSG_KEY, "0xffffffffL"),
90              "30:30: " + getCheckMessage(MSG_KEY, "+3"),
91              "31:29: " + getCheckMessage(MSG_KEY, "-2"),
92              "32:35: " + getCheckMessage(MSG_KEY, "+3.5"),
93              "33:36: " + getCheckMessage(MSG_KEY, "-2.5"),
94              "40:35: " + getCheckMessage(MSG_KEY, "0x80000000"),
95              "41:36: " + getCheckMessage(MSG_KEY, "0x8000000000000000L"),
96              "44:37: " + getCheckMessage(MSG_KEY, "020000000000"),
97              "45:38: " + getCheckMessage(MSG_KEY, "01000000000000000000000L"),
98              "52: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             "22:16: " + getCheckMessage(MSG_KEY, "31"),
109             "27:16: " + getCheckMessage(MSG_KEY, "42"),
110             "32:16: " + getCheckMessage(MSG_KEY, "13"),
111             "36:15: " + getCheckMessage(MSG_KEY, "21"),
112             "40:15: " + getCheckMessage(MSG_KEY, "37"),
113             "44:15: " + getCheckMessage(MSG_KEY, "101"),
114             "47:42: " + getCheckMessage(MSG_KEY, "42"),
115             "51:48: " + getCheckMessage(MSG_KEY, "43"),
116             "55:42: " + getCheckMessage(MSG_KEY, "-44"),
117             "59:48: " + getCheckMessage(MSG_KEY, "-45"),
118             "76:20: " + getCheckMessage(MSG_KEY, "0b101"),
119             "77:14: " + getCheckMessage(MSG_KEY,
120                     "0b1010000101000101101000010100010110100001010001011010000101000101L"),
121             "87: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             "38:25: " + getCheckMessage(MSG_KEY, "2"),
133             "44:35: " + getCheckMessage(MSG_KEY, "2"),
134             "46:24: " + getCheckMessage(MSG_KEY, "2"),
135             "48:29: " + getCheckMessage(MSG_KEY, "2.0"),
136             "50:29: " + getCheckMessage(MSG_KEY, "2"),
137             "52:17: " + getCheckMessage(MSG_KEY, "2"),
138             "54:19: " + getCheckMessage(MSG_KEY, "2.0"),
139             "58:32: " + getCheckMessage(MSG_KEY, "1.5_0"),
140             "59:31: " + getCheckMessage(MSG_KEY, "4"),
141             "64:26: " + getCheckMessage(MSG_KEY, "1.5"),
142             "66:29: " + getCheckMessage(MSG_KEY, "5"),
143             "77:25: " + getCheckMessage(MSG_KEY, "011"),
144             "80:30: " + getCheckMessage(MSG_KEY, "011l"),
145             "85:24: " + getCheckMessage(MSG_KEY, "0X011"),
146             "88: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             "23:14: " + getCheckMessage(MSG_KEY, "0xffffffffL"),
157             "32:29: " + getCheckMessage(MSG_KEY, "-2"),
158             "33:35: " + getCheckMessage(MSG_KEY, "+3.5"),
159             "34:36: " + getCheckMessage(MSG_KEY, "-2.5"),
160             "39:34: " + getCheckMessage(MSG_KEY, "0xffffffff"),
161             "40:36: " + getCheckMessage(MSG_KEY, "0xffffffffffffffffL"),
162             "41:35: " + getCheckMessage(MSG_KEY, "0x80000000"),
163             "42:36: " + getCheckMessage(MSG_KEY, "0x8000000000000000L"),
164             "43:36: " + getCheckMessage(MSG_KEY, "037777777777"),
165             "44:38: " + getCheckMessage(MSG_KEY, "01777777777777777777777L"),
166             "45:37: " + getCheckMessage(MSG_KEY, "020000000000"),
167             "46:38: " + getCheckMessage(MSG_KEY, "01000000000000000000000L"),
168             "51: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             "23:16: " + getCheckMessage(MSG_KEY, "31"),
179             "28:16: " + getCheckMessage(MSG_KEY, "42"),
180             "33:16: " + getCheckMessage(MSG_KEY, "13"),
181             "37:15: " + getCheckMessage(MSG_KEY, "21"),
182             "41:15: " + getCheckMessage(MSG_KEY, "37"),
183             "45:15: " + getCheckMessage(MSG_KEY, "101"),
184             "77:20: " + getCheckMessage(MSG_KEY, "0b101"),
185             "78:14: " + getCheckMessage(MSG_KEY,
186                     "0b1010000101000101101000010100010110100001010001011010000101000101L"),
187             "88: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             "43:24: " + getCheckMessage(MSG_KEY, "1"),
198             "44:25: " + getCheckMessage(MSG_KEY, "2"),
199             "45:26: " + getCheckMessage(MSG_KEY, "0L"),
200             "46:26: " + getCheckMessage(MSG_KEY, "0l"),
201             "47:30: " + getCheckMessage(MSG_KEY, "0D"),
202             "48:30: " + getCheckMessage(MSG_KEY, "0d"),
203             "50:35: " + getCheckMessage(MSG_KEY, "2"),
204             "52:20: " + getCheckMessage(MSG_KEY, "1"),
205             "52:24: " + getCheckMessage(MSG_KEY, "2"),
206             "53:21: " + getCheckMessage(MSG_KEY, "1"),
207             "54:23: " + getCheckMessage(MSG_KEY, "1.0"),
208             "54:29: " + getCheckMessage(MSG_KEY, "2.0"),
209             "56:22: " + getCheckMessage(MSG_KEY, "0"),
210             "56:29: " + getCheckMessage(MSG_KEY, "2"),
211             "58:13: " + getCheckMessage(MSG_KEY, "1"),
212             "58:17: " + getCheckMessage(MSG_KEY, "2"),
213             "60:13: " + getCheckMessage(MSG_KEY, "1.0"),
214             "60:19: " + getCheckMessage(MSG_KEY, "2.0"),
215             "63:26: " + getCheckMessage(MSG_KEY, "3_000"),
216             "64:32: " + getCheckMessage(MSG_KEY, "1.5_0"),
217             "65:27: " + getCheckMessage(MSG_KEY, "3"),
218             "65:31: " + getCheckMessage(MSG_KEY, "4"),
219             "67:29: " + getCheckMessage(MSG_KEY, "3"),
220             "69:23: " + getCheckMessage(MSG_KEY, "3"),
221             "70:26: " + getCheckMessage(MSG_KEY, "1.5"),
222             "72:22: " + getCheckMessage(MSG_KEY, "3"),
223             "72:29: " + getCheckMessage(MSG_KEY, "5"),
224             "72:37: " + getCheckMessage(MSG_KEY, "3"),
225             "76:26: " + getCheckMessage(MSG_KEY, "3"),
226             "77:39: " + getCheckMessage(MSG_KEY, "3"),
227             "81:25: " + getCheckMessage(MSG_KEY, "00"),
228             "82:25: " + getCheckMessage(MSG_KEY, "010"),
229             "83:25: " + getCheckMessage(MSG_KEY, "011"),
230             "85:30: " + getCheckMessage(MSG_KEY, "0_10L"),
231             "86:30: " + getCheckMessage(MSG_KEY, "011l"),
232             "89:23: " + getCheckMessage(MSG_KEY, "0x0"),
233             "90:24: " + getCheckMessage(MSG_KEY, "0x10"),
234             "91:24: " + getCheckMessage(MSG_KEY, "0X011"),
235             "92:28: " + getCheckMessage(MSG_KEY, "0x0L"),
236             "93:29: " + getCheckMessage(MSG_KEY, "0x10L"),
237             "94:29: " + getCheckMessage(MSG_KEY, "0X11l"),
238             "107: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             "21:14: " + getCheckMessage(MSG_KEY, "0xffffffffL"),
249             "28:30: " + getCheckMessage(MSG_KEY, "+3"),
250             "29:29: " + getCheckMessage(MSG_KEY, "-2"),
251             "30:35: " + getCheckMessage(MSG_KEY, "+3.5"),
252             "31:36: " + getCheckMessage(MSG_KEY, "-2.5"),
253             "36:34: " + getCheckMessage(MSG_KEY, "0xffffffff"),
254             "37:36: " + getCheckMessage(MSG_KEY, "0xffffffffffffffffL"),
255             "38:35: " + getCheckMessage(MSG_KEY, "0x80000000"),
256             "39:36: " + getCheckMessage(MSG_KEY, "0x8000000000000000L"),
257             "40:36: " + getCheckMessage(MSG_KEY, "037777777777"),
258             "41:38: " + getCheckMessage(MSG_KEY, "01777777777777777777777L"),
259             "42:37: " + getCheckMessage(MSG_KEY, "020000000000"),
260             "43:38: " + getCheckMessage(MSG_KEY, "01000000000000000000000L"),
261             "49: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             "22:16: " + getCheckMessage(MSG_KEY, "31"),
272             "27:16: " + getCheckMessage(MSG_KEY, "42"),
273             "32:16: " + getCheckMessage(MSG_KEY, "13"),
274             "36:15: " + getCheckMessage(MSG_KEY, "21"),
275             "40:15: " + getCheckMessage(MSG_KEY, "37"),
276             "44:15: " + getCheckMessage(MSG_KEY, "101"),
277             "76:20: " + getCheckMessage(MSG_KEY, "0b101"),
278             "77:14: " + getCheckMessage(MSG_KEY,
279                     "0b1010000101000101101000010100010110100001010001011010000101000101L"),
280             "87: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             "57:26: " + getCheckMessage(MSG_KEY, "3_000"),
291             "59:27: " + getCheckMessage(MSG_KEY, "3"),
292             "59:31: " + getCheckMessage(MSG_KEY, "4"),
293             "61:29: " + getCheckMessage(MSG_KEY, "3"),
294             "63:23: " + getCheckMessage(MSG_KEY, "3"),
295             "66:22: " + getCheckMessage(MSG_KEY, "3"),
296             "66:29: " + getCheckMessage(MSG_KEY, "5"),
297             "66:37: " + getCheckMessage(MSG_KEY, "3"),
298             "70:26: " + getCheckMessage(MSG_KEY, "3"),
299             "71:39: " + getCheckMessage(MSG_KEY, "3"),
300             "76:25: " + getCheckMessage(MSG_KEY, "010"),
301             "77:25: " + getCheckMessage(MSG_KEY, "011"),
302             "79:30: " + getCheckMessage(MSG_KEY, "0_10L"),
303             "80:30: " + getCheckMessage(MSG_KEY, "011l"),
304             "84:24: " + getCheckMessage(MSG_KEY, "0x10"),
305             "85:24: " + getCheckMessage(MSG_KEY, "0X011"),
306             "87:29: " + getCheckMessage(MSG_KEY, "0x10L"),
307             "88:29: " + getCheckMessage(MSG_KEY, "0X11l"),
308             "101: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             "22:14: " + getCheckMessage(MSG_KEY, "0xffffffffL"),
319             "30:30: " + getCheckMessage(MSG_KEY, "+3"),
320             "31:29: " + getCheckMessage(MSG_KEY, "-2"),
321             "40:35: " + getCheckMessage(MSG_KEY, "0x80000000"),
322             "41:36: " + getCheckMessage(MSG_KEY, "0x8000000000000000L"),
323             "44:37: " + getCheckMessage(MSG_KEY, "020000000000"),
324             "45:38: " + getCheckMessage(MSG_KEY, "01000000000000000000000L"),
325             "51: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             "22:16: " + getCheckMessage(MSG_KEY, "31"),
336             "27:16: " + getCheckMessage(MSG_KEY, "42"),
337             "32:16: " + getCheckMessage(MSG_KEY, "13"),
338             "36:15: " + getCheckMessage(MSG_KEY, "21"),
339             "40:15: " + getCheckMessage(MSG_KEY, "37"),
340             "44:15: " + getCheckMessage(MSG_KEY, "101"),
341             "76:20: " + getCheckMessage(MSG_KEY, "0b101"),
342             "77:14: " + getCheckMessage(MSG_KEY,
343                     "0b1010000101000101101000010100010110100001010001011010000101000101L"),
344             "87: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             "57:26: " + getCheckMessage(MSG_KEY, "3_000"),
354             "59:27: " + getCheckMessage(MSG_KEY, "3"),
355             "59:31: " + getCheckMessage(MSG_KEY, "4"),
356             "61:29: " + getCheckMessage(MSG_KEY, "3"),
357             "63:23: " + getCheckMessage(MSG_KEY, "3"),
358             "66:22: " + getCheckMessage(MSG_KEY, "3"),
359             "66:29: " + getCheckMessage(MSG_KEY, "5"),
360             "66:37: " + getCheckMessage(MSG_KEY, "3"),
361             "70:26: " + getCheckMessage(MSG_KEY, "3"),
362             "71:39: " + getCheckMessage(MSG_KEY, "3"),
363             "76:25: " + getCheckMessage(MSG_KEY, "010"),
364             "77:25: " + getCheckMessage(MSG_KEY, "011"),
365             "79:30: " + getCheckMessage(MSG_KEY, "0_10L"),
366             "80:30: " + getCheckMessage(MSG_KEY, "011l"),
367             "84:24: " + getCheckMessage(MSG_KEY, "0x10"),
368             "85:24: " + getCheckMessage(MSG_KEY, "0X011"),
369             "87:29: " + getCheckMessage(MSG_KEY, "0x10L"),
370             "88:29: " + getCheckMessage(MSG_KEY, "0X11l"),
371             "101: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             "22:14: " + getCheckMessage(MSG_KEY, "0xffffffffL"),
381             "30:30: " + getCheckMessage(MSG_KEY, "+3"),
382             "52: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             "22:16: " + getCheckMessage(MSG_KEY, "31"),
392             "27:16: " + getCheckMessage(MSG_KEY, "42"),
393             "32:16: " + getCheckMessage(MSG_KEY, "13"),
394             "36:15: " + getCheckMessage(MSG_KEY, "21"),
395             "40:15: " + getCheckMessage(MSG_KEY, "37"),
396             "44:15: " + getCheckMessage(MSG_KEY, "101"),
397             "77:20: " + getCheckMessage(MSG_KEY, "0b101"),
398             "78:14: " + getCheckMessage(MSG_KEY,
399                     "0b1010000101000101101000010100010110100001010001011010000101000101L"),
400             "88: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             "57:26: " + getCheckMessage(MSG_KEY, "3_000"),
410             "58:32: " + getCheckMessage(MSG_KEY, "1.5_0"),
411             "59:27: " + getCheckMessage(MSG_KEY, "3"),
412             "59:31: " + getCheckMessage(MSG_KEY, "4"),
413             "61:29: " + getCheckMessage(MSG_KEY, "3"),
414             "63:23: " + getCheckMessage(MSG_KEY, "3"),
415             "64:26: " + getCheckMessage(MSG_KEY, "1.5"),
416             "66:22: " + getCheckMessage(MSG_KEY, "3"),
417             "66:29: " + getCheckMessage(MSG_KEY, "5"),
418             "66:37: " + getCheckMessage(MSG_KEY, "3"),
419             "70:26: " + getCheckMessage(MSG_KEY, "3"),
420             "71:39: " + getCheckMessage(MSG_KEY, "3"),
421             "76:25: " + getCheckMessage(MSG_KEY, "010"),
422             "77:25: " + getCheckMessage(MSG_KEY, "011"),
423             "79:30: " + getCheckMessage(MSG_KEY, "0_10L"),
424             "80:30: " + getCheckMessage(MSG_KEY, "011l"),
425             "84:24: " + getCheckMessage(MSG_KEY, "0x10"),
426             "85:24: " + getCheckMessage(MSG_KEY, "0X011"),
427             "87:29: " + getCheckMessage(MSG_KEY, "0x10L"),
428             "88:29: " + getCheckMessage(MSG_KEY, "0X11l"),
429             "101: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             "22:14: " + getCheckMessage(MSG_KEY, "0xffffffffL"),
439             "29:30: " + getCheckMessage(MSG_KEY, "+3"),
440             "30:29: " + getCheckMessage(MSG_KEY, "-2"),
441             "31:35: " + getCheckMessage(MSG_KEY, "+3.5"),
442             "32:36: " + getCheckMessage(MSG_KEY, "-2.5"),
443             "39:35: " + getCheckMessage(MSG_KEY, "0x80000000"),
444             "40:36: " + getCheckMessage(MSG_KEY, "0x8000000000000000L"),
445             "43:37: " + getCheckMessage(MSG_KEY, "020000000000"),
446             "44:38: " + getCheckMessage(MSG_KEY, "01000000000000000000000L"),
447             "51: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             "27:16: " + getCheckMessage(MSG_KEY, "42"),
457             "32:16: " + getCheckMessage(MSG_KEY, "13"),
458             "36:15: " + getCheckMessage(MSG_KEY, "21"),
459             "40:15: " + getCheckMessage(MSG_KEY, "37"),
460             "44:15: " + getCheckMessage(MSG_KEY, "101"),
461             "77:20: " + getCheckMessage(MSG_KEY, "0b101"),
462             "78:14: " + getCheckMessage(MSG_KEY,
463                     "0b1010000101000101101000010100010110100001010001011010000101000101L"),
464             "88: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             "57:26: " + getCheckMessage(MSG_KEY, "3_000"),
475             "58:32: " + getCheckMessage(MSG_KEY, "1.5_0"),
476             "59:27: " + getCheckMessage(MSG_KEY, "3"),
477             "59:31: " + getCheckMessage(MSG_KEY, "4"),
478             "61:29: " + getCheckMessage(MSG_KEY, "3"),
479             "63:23: " + getCheckMessage(MSG_KEY, "3"),
480             "64:26: " + getCheckMessage(MSG_KEY, "1.5"),
481             "66:22: " + getCheckMessage(MSG_KEY, "3"),
482             "66:29: " + getCheckMessage(MSG_KEY, "5"),
483             "66:37: " + getCheckMessage(MSG_KEY, "3"),
484             "70:26: " + getCheckMessage(MSG_KEY, "3"),
485             "71:39: " + getCheckMessage(MSG_KEY, "3"),
486             "76:25: " + getCheckMessage(MSG_KEY, "010"),
487             "77:25: " + getCheckMessage(MSG_KEY, "011"),
488             "79:30: " + getCheckMessage(MSG_KEY, "0_10L"),
489             "80:30: " + getCheckMessage(MSG_KEY, "011l"),
490             "84:24: " + getCheckMessage(MSG_KEY, "0x10"),
491             "85:24: " + getCheckMessage(MSG_KEY, "0X011"),
492             "87:29: " + getCheckMessage(MSG_KEY, "0x10L"),
493             "88: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             "51: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             "22:16: " + getCheckMessage(MSG_KEY, "31"),
514             "27:16: " + getCheckMessage(MSG_KEY, "42"),
515             "32:16: " + getCheckMessage(MSG_KEY, "13"),
516             "36:15: " + getCheckMessage(MSG_KEY, "21"),
517             "40:15: " + getCheckMessage(MSG_KEY, "37"),
518             "44:15: " + getCheckMessage(MSG_KEY, "101"),
519             "47:42: " + getCheckMessage(MSG_KEY, "42"),
520             "51:48: " + getCheckMessage(MSG_KEY, "43"),
521             "55:42: " + getCheckMessage(MSG_KEY, "-44"),
522             "59:48: " + getCheckMessage(MSG_KEY, "-45"),
523             "88:21: " + getCheckMessage(MSG_KEY, "122"),
524         };
525         verifyWithInlineConfigParser(
526                 getPath("InputMagicNumberIgnoreFieldDeclaration3.java"), expected);
527     }
528 
529     @Test
530     public void testIgnoreFieldDeclaration4()
531             throws Exception {
532         final String[] expected = {
533             "29:27: " + getCheckMessage(MSG_KEY, "5"),
534             "36:26: " + getCheckMessage(MSG_KEY, "86400_000"),
535             "45:31: " + getCheckMessage(MSG_KEY, "5"),
536             "46:32: " + getCheckMessage(MSG_KEY, "69"),
537             "55:27: " + getCheckMessage(MSG_KEY, "5"),
538             "62:26: " + getCheckMessage(MSG_KEY, "86400_000"),
539             "71:31: " + getCheckMessage(MSG_KEY, "5"),
540             "72:32: " + getCheckMessage(MSG_KEY, "69"),
541         };
542         verifyWithInlineConfigParser(
543                 getPath("InputMagicNumberIgnoreFieldDeclaration4.java"), expected);
544     }
545 
546     @Test
547     public void testIgnoreFieldDeclaration5()
548             throws Exception {
549         final String[] expected = {
550             "17:32: " + getCheckMessage(MSG_KEY, "22"),
551             "17:37: " + getCheckMessage(MSG_KEY, "7.0"),
552             "23:20: " + getCheckMessage(MSG_KEY, "10"),
553             "24:20: " + getCheckMessage(MSG_KEY, "10"),
554             "24:25: " + getCheckMessage(MSG_KEY, "20"),
555             "28:30: " + getCheckMessage(MSG_KEY, "4"),
556             "28:33: " + getCheckMessage(MSG_KEY, "5"),
557             "28:36: " + getCheckMessage(MSG_KEY, "6"),
558             "28:39: " + getCheckMessage(MSG_KEY, "7"),
559             "35:26: " + getCheckMessage(MSG_KEY, "2023"),
560             "35:32: " + getCheckMessage(MSG_KEY, "11"),
561             "35:36: " + getCheckMessage(MSG_KEY, "11"),
562             "35:40: " + getCheckMessage(MSG_KEY, "11"),
563             "42:16: " + getCheckMessage(MSG_KEY, "11"),
564             "42:20: " + getCheckMessage(MSG_KEY, "11"),
565             "42:24: " + getCheckMessage(MSG_KEY, "11"),
566             "48:41: " + getCheckMessage(MSG_KEY, "3"),
567             "49:61: " + getCheckMessage(MSG_KEY, "4"),
568         };
569         verifyWithInlineConfigParser(
570                 getPath("InputMagicNumberIgnoreFieldDeclaration5.java"), expected);
571     }
572 
573     @Test
574     public void testIgnoreFieldDeclaration6()
575             throws Exception {
576         final String[] expected = {
577             "16:38: " + getCheckMessage(MSG_KEY, "10"),
578             "17:46: " + getCheckMessage(MSG_KEY, "15"),
579         };
580         verifyWithInlineConfigParser(
581                 getPath("InputMagicNumberIgnoreFieldDeclaration6.java"), expected);
582     }
583 
584     @Test
585     public void testWaiverParentToken()
586             throws Exception {
587         final String[] expected = {
588             "55:26: " + getCheckMessage(MSG_KEY, "3_000"),
589             "56:32: " + getCheckMessage(MSG_KEY, "1.5_0"),
590             "57:27: " + getCheckMessage(MSG_KEY, "3"),
591             "57:31: " + getCheckMessage(MSG_KEY, "4"),
592             "59:29: " + getCheckMessage(MSG_KEY, "3"),
593             "61:23: " + getCheckMessage(MSG_KEY, "3"),
594             "62:26: " + getCheckMessage(MSG_KEY, "1.5"),
595             "64:22: " + getCheckMessage(MSG_KEY, "3"),
596             "64:29: " + getCheckMessage(MSG_KEY, "5"),
597             "64:37: " + getCheckMessage(MSG_KEY, "3"),
598             "68:26: " + getCheckMessage(MSG_KEY, "3"),
599             "69:39: " + getCheckMessage(MSG_KEY, "3"),
600             "74:25: " + getCheckMessage(MSG_KEY, "010"),
601             "75:25: " + getCheckMessage(MSG_KEY, "011"),
602             "77:30: " + getCheckMessage(MSG_KEY, "0_10L"),
603             "78:30: " + getCheckMessage(MSG_KEY, "011l"),
604             "82:24: " + getCheckMessage(MSG_KEY, "0x10"),
605             "83:24: " + getCheckMessage(MSG_KEY, "0X011"),
606             "85:29: " + getCheckMessage(MSG_KEY, "0x10L"),
607             "86:29: " + getCheckMessage(MSG_KEY, "0X11l"),
608             "99:28: " + getCheckMessage(MSG_KEY, "3"),
609         };
610         verifyWithInlineConfigParser(
611                 getPath("InputMagicNumberWaiverParentToken1.java"), expected);
612     }
613 
614     @Test
615     public void testWaiverParentToken2()
616             throws Exception {
617         final String[] expected = {
618             "20:14: " + getCheckMessage(MSG_KEY, "0xffffffffL"),
619             "28:30: " + getCheckMessage(MSG_KEY, "+3"),
620             "29:29: " + getCheckMessage(MSG_KEY, "-2"),
621             "30:35: " + getCheckMessage(MSG_KEY, "+3.5"),
622             "31:36: " + getCheckMessage(MSG_KEY, "-2.5"),
623             "38:35: " + getCheckMessage(MSG_KEY, "0x80000000"),
624             "39:36: " + getCheckMessage(MSG_KEY, "0x8000000000000000L"),
625             "42:37: " + getCheckMessage(MSG_KEY, "020000000000"),
626             "43:38: " + getCheckMessage(MSG_KEY, "01000000000000000000000L"),
627             "49:20: " + getCheckMessage(MSG_KEY, "378"),
628             "54:52: " + getCheckMessage(MSG_KEY, "27"),
629             "57:57: " + getCheckMessage(MSG_KEY, "3"),
630             "57:60: " + getCheckMessage(MSG_KEY, "3"),
631             "57:63: " + getCheckMessage(MSG_KEY, "3"),
632             "57:66: " + getCheckMessage(MSG_KEY, "3"),
633         };
634         verifyWithInlineConfigParser(
635                 getPath("InputMagicNumberWaiverParentToken2.java"), expected);
636     }
637 
638     @Test
639     public void testWaiverParentToken3()
640             throws Exception {
641         final String[] expected = {
642             "20:16: " + getCheckMessage(MSG_KEY, "31"),
643             "25:16: " + getCheckMessage(MSG_KEY, "42"),
644             "30:16: " + getCheckMessage(MSG_KEY, "13"),
645             "34:15: " + getCheckMessage(MSG_KEY, "21"),
646             "38:15: " + getCheckMessage(MSG_KEY, "37"),
647             "42:15: " + getCheckMessage(MSG_KEY, "101"),
648             "45:42: " + getCheckMessage(MSG_KEY, "42"),
649             "49:48: " + getCheckMessage(MSG_KEY, "43"),
650             "53:42: " + getCheckMessage(MSG_KEY, "-44"),
651             "57:48: " + getCheckMessage(MSG_KEY, "-45"),
652             "70:54: " + getCheckMessage(MSG_KEY, "62"),
653             "75:20: " + getCheckMessage(MSG_KEY, "0b101"),
654             "76:14: " + getCheckMessage(MSG_KEY,
655                     "0b1010000101000101101000010100010110100001010001011010000101000101L"),
656             "86:21: " + getCheckMessage(MSG_KEY, "122"),
657         };
658         verifyWithInlineConfigParser(
659                 getPath("InputMagicNumberWaiverParentToken3.java"), expected);
660     }
661 
662     @Test
663     public void testMagicNumberRecordsDefault()
664             throws Exception {
665         final String[] expected = {
666             "21:11: " + getCheckMessage(MSG_KEY, "6"),
667             "23:36: " + getCheckMessage(MSG_KEY, "7"),
668             "27:29: " + getCheckMessage(MSG_KEY, "8"),
669             "31:29: " + getCheckMessage(MSG_KEY, "8"),
670             "35:20: " + getCheckMessage(MSG_KEY, "10"),
671         };
672         verifyWithInlineConfigParser(
673                 getNonCompilablePath("InputMagicNumberRecordsDefault.java"), expected);
674     }
675 
676     @Test
677     public void testMagicNumberIgnoreFieldDeclarationRecords()
678             throws Exception {
679         final String[] expected = {
680             "21:11: " + getCheckMessage(MSG_KEY, "6"),
681             "27:29: " + getCheckMessage(MSG_KEY, "8"),
682             "31:29: " + getCheckMessage(MSG_KEY, "8"),
683             "35:20: " + getCheckMessage(MSG_KEY, "10"),
684         };
685         verifyWithInlineConfigParser(
686                 getNonCompilablePath("InputMagicNumberIgnoreFieldDeclarationRecords.java"),
687                 expected);
688     }
689 
690     @Test
691     public void testMagicNumberIgnoreFieldDeclarationWithAnnotation()
692             throws Exception {
693         final String[] expected = {
694             "18:38: " + getCheckMessage(MSG_KEY, "3"),
695             "22:40: " + getCheckMessage(MSG_KEY, "60"),
696             "23:34: " + getCheckMessage(MSG_KEY, "20"),
697         };
698         verifyWithInlineConfigParser(
699                 getPath("InputMagicNumberIgnoreFieldDeclarationWithAnnotation.java"),
700                 expected);
701     }
702 
703     @Test
704     public void testIgnoreInAnnotationElementDefault() throws Exception {
705         final String[] expected = {
706             "20:29: " + getCheckMessage(MSG_KEY, "10"),
707             "21:33: " + getCheckMessage(MSG_KEY, "11"),
708         };
709         verifyWithInlineConfigParser(
710                 getPath("InputMagicNumberAnnotationElement.java"), expected);
711     }
712 
713     @Test
714     public void testMagicNumber()
715             throws Exception {
716         final String[] expected = {
717             "40:29: " + getCheckMessage(MSG_KEY, "3.0"),
718             "41:32: " + getCheckMessage(MSG_KEY, "1.5_0"),
719             "42:19: " + getCheckMessage(MSG_KEY, "3.0"),
720             "43:26: " + getCheckMessage(MSG_KEY, "1.5"),
721             "51:50: " + getCheckMessage(MSG_KEY, "5"),
722             "52:42: " + getCheckMessage(MSG_KEY, "3"),
723             "53:44: " + getCheckMessage(MSG_KEY, "3"),
724             "54:37: " + getCheckMessage(MSG_KEY, "8"),
725             "57:33: " + getCheckMessage(MSG_KEY, "3.0"),
726             "58:36: " + getCheckMessage(MSG_KEY, "1.5_0"),
727             "59:23: " + getCheckMessage(MSG_KEY, "3.0"),
728             "60:30: " + getCheckMessage(MSG_KEY, "1.5"),
729             "70:33: " + getCheckMessage(MSG_KEY, "3.0"),
730             "71:36: " + getCheckMessage(MSG_KEY, "1.5_0"),
731             "72:23: " + getCheckMessage(MSG_KEY, "3.0"),
732             "73:30: " + getCheckMessage(MSG_KEY, "1.5"),
733             "80:33: " + getCheckMessage(MSG_KEY, "3.0"),
734             "81:36: " + getCheckMessage(MSG_KEY, "1.5_0"),
735             "82:23: " + getCheckMessage(MSG_KEY, "3.0"),
736             "83:30: " + getCheckMessage(MSG_KEY, "1.5"),
737             "92:33: " + getCheckMessage(MSG_KEY, "3.0"),
738             "93:36: " + getCheckMessage(MSG_KEY, "1.5_0"),
739             "94:23: " + getCheckMessage(MSG_KEY, "3.0"),
740             "95:30: " + getCheckMessage(MSG_KEY, "1.5"),
741             "102:33: " + getCheckMessage(MSG_KEY, "3.0"),
742             "103:36: " + getCheckMessage(MSG_KEY, "1.5_0"),
743             "104:23: " + getCheckMessage(MSG_KEY, "3.0"),
744             "105:30: " + getCheckMessage(MSG_KEY, "1.5"),
745             "114:33: " + getCheckMessage(MSG_KEY, "3.0"),
746             "115:36: " + getCheckMessage(MSG_KEY, "1.5_0"),
747             "116:23: " + getCheckMessage(MSG_KEY, "3.0"),
748             "117:30: " + getCheckMessage(MSG_KEY, "1.5"),
749         };
750         verifyWithInlineConfigParser(
751                 getPath("InputMagicNumberMagicNumber.java"), expected);
752     }
753 
754     @Test
755     public void testMagicNumber2() throws Exception {
756         final String[] expected = {
757             "27:17: " + getCheckMessage(MSG_KEY, "9"),
758             "29:20: " + getCheckMessage(MSG_KEY, "5.5"),
759             "30:19: " + getCheckMessage(MSG_KEY, "12.2f"),
760             "35:28: " + getCheckMessage(MSG_KEY, "45"),
761             "43:21: " + getCheckMessage(MSG_KEY, "9"),
762             "45:24: " + getCheckMessage(MSG_KEY, "5.5"),
763             "46:23: " + getCheckMessage(MSG_KEY, "12.2f"),
764             "51:46: " + getCheckMessage(MSG_KEY, "5"),
765             "52:38: " + getCheckMessage(MSG_KEY, "5"),
766             "53:40: " + getCheckMessage(MSG_KEY, "5"),
767             "54:31: " + getCheckMessage(MSG_KEY, "5"),
768             "55:49: " + getCheckMessage(MSG_KEY, "5"),
769             "68:50: " + getCheckMessage(MSG_KEY, "5"),
770             "69:42: " + getCheckMessage(MSG_KEY, "5"),
771             "70:44: " + getCheckMessage(MSG_KEY, "5"),
772             "71:35: " + getCheckMessage(MSG_KEY, "5"),
773             "72:53: " + getCheckMessage(MSG_KEY, "5"),
774         };
775         verifyWithInlineConfigParser(
776                 getPath("InputMagicNumberMagicNumber2.java"), expected);
777     }
778 
779     @Test
780     public void testMagicNumber3() throws Exception {
781         final String[] expected = CommonUtil.EMPTY_STRING_ARRAY;
782         verifyWithInlineConfigParser(
783                 getPath("InputMagicNumberMagicNumber3.java"), expected);
784     }
785 
786     @Test
787     public void testMagicNumberInGuards() throws Exception {
788         final String[] expected = {
789             "23:63: " + getCheckMessage(MSG_KEY, "3"),
790             "23:72: " + getCheckMessage(MSG_KEY, "8"),
791             "29:58: " + getCheckMessage(MSG_KEY, "3"),
792             "29:68: " + getCheckMessage(MSG_KEY, "6"),
793             "33:50: " + getCheckMessage(MSG_KEY, "10.88"),
794             "35:46: " + getCheckMessage(MSG_KEY, "6"),
795             "41:59: " + getCheckMessage(MSG_KEY, "0.5"),
796             "41:67: " + getCheckMessage(MSG_KEY, "5"),
797             "46:23: " + getCheckMessage(MSG_KEY, "6"),
798         };
799         verifyWithInlineConfigParser(
800                 getNonCompilablePath("InputMagicNumberMagicNumberInGuards.java"), expected);
801     }
802 
803     @Test
804     public void testMagicNumberWithUnnamedVariables() throws Exception {
805         final String[] expected = {
806             "22:17: " + getCheckMessage(MSG_KEY, "9"),
807             "24:21: " + getCheckMessage(MSG_KEY, "17"),
808             "25:20: " + getCheckMessage(MSG_KEY, "3.1415"),
809         };
810         verifyWithInlineConfigParser(
811                 getNonCompilablePath("InputMagicNumberMagicNumberWithUnnamedVariables.java"),
812                 expected);
813     }
814 
815     @Test
816     public void testMagicNumberWithOperatorsWithIgnoreFieldsTrue() throws Exception {
817         final String[] expected = {
818             "35:35: " + getCheckMessage(MSG_KEY, "3"),
819             "36:35: " + getCheckMessage(MSG_KEY, "3"),
820             "37:36: " + getCheckMessage(MSG_KEY, "3"),
821             "38:34: " + getCheckMessage(MSG_KEY, "3"),
822             "39:34: " + getCheckMessage(MSG_KEY, "3"),
823             "40:34: " + getCheckMessage(MSG_KEY, "3"),
824             "41:34: " + getCheckMessage(MSG_KEY, "3"),
825             "42:31: " + getCheckMessage(MSG_KEY, "3"),
826             "55:25: " + getCheckMessage(MSG_KEY, "3"),
827             "54:25: " + getCheckMessage(MSG_KEY, "3"),
828             "56:26: " + getCheckMessage(MSG_KEY, "3"),
829             "57:24: " + getCheckMessage(MSG_KEY, "3"),
830             "58:24: " + getCheckMessage(MSG_KEY, "3"),
831             "59:24: " + getCheckMessage(MSG_KEY, "3"),
832             "60:24: " + getCheckMessage(MSG_KEY, "3"),
833             "61:21: " + getCheckMessage(MSG_KEY, "3"),
834         };
835         verifyWithInlineConfigParser(
836                 getPath("InputMagicNumberWithOperatorsWithIgnoreFieldsTrue.java"),
837                 expected);
838     }
839 
840     @Test
841     public void testMagicNumberWithOperatorsWithIgnoreFieldsFalse() throws Exception {
842         final String[] expected = {
843             "54:25: " + getCheckMessage(MSG_KEY, "3"),
844             "55:25: " + getCheckMessage(MSG_KEY, "3"),
845             "56:26: " + getCheckMessage(MSG_KEY, "3"),
846             "57:24: " + getCheckMessage(MSG_KEY, "3"),
847             "58:24: " + getCheckMessage(MSG_KEY, "3"),
848             "59:24: " + getCheckMessage(MSG_KEY, "3"),
849             "60:24: " + getCheckMessage(MSG_KEY, "3"),
850             "61:21: " + getCheckMessage(MSG_KEY, "3"),
851         };
852         verifyWithInlineConfigParser(
853                 getPath("InputMagicNumberWithOperatorsWithIgnoreFieldsFalse.java"),
854                 expected);
855     }
856 }