View Javadoc
1   /*
2    * Copyright (C) 2020-2023 Dipl.-Inform. Kai Hofmann. All rights reserved!
3    */
4   package de.powerstat.validation.values.test;
5   
6   
7   import static org.junit.jupiter.api.Assertions.assertAll;
8   import static org.junit.jupiter.api.Assertions.assertEquals;
9   import static org.junit.jupiter.api.Assertions.assertFalse;
10  import static org.junit.jupiter.api.Assertions.assertNotEquals;
11  import static org.junit.jupiter.api.Assertions.assertThrows;
12  import static org.junit.jupiter.api.Assertions.assertTrue;
13  
14  import org.junit.jupiter.api.Test;
15  
16  import de.powerstat.validation.values.IPV4Mask;
17  import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
18  
19  
20  /**
21   * IP V4 mask tests.
22   */
23  @SuppressFBWarnings({"EC_NULL_ARG", "RV_NEGATING_RESULT_OF_COMPARETO", "RV_RETURN_VALUE_IGNORED_NO_SIDE_EFFECT", "SPP_USE_ZERO_WITH_COMPARATOR", "PRMC_POSSIBLY_REDUNDANT_METHOD_CALLS"})
24  final class IPV4MaskTests
25   {
26    /**
27     * IP address mask 255.0.0.0.
28     */
29    private static final String IPMASK_255_0_0_0 = "255.0.0.0"; //$NON-NLS-1$
30  
31    /**
32     * IP address mask 255.255.0.0.
33     */
34    private static final String IPMASK_255_255_0_0 = "255.255.0.0"; //$NON-NLS-1$
35  
36    /**
37     * IP address mask 255.255.255.0.
38     */
39    private static final String IPMASK_255_255_255_0 = "255.255.255.0"; //$NON-NLS-1$
40  
41    /**
42     * IP address mask 255.255.255.255.
43     */
44    private static final String IP255 = "255.255.255.255"; //$NON-NLS-1$
45  
46    /**
47     * P address mask 0.0.0.0.
48     */
49    private static final String IP_ZERO = "0.0.0.0"; //$NON-NLS-1$
50  
51    /**
52     * Illegal argument exception expected constant.
53     */
54    private static final String ILLEGAL_ARGUMENT = "Illegal argument exception expected"; //$NON-NLS-1$
55  
56    /**
57     * Index out of bounds exception expected constant.
58     */
59    private static final String INDEX_OUT_OF_BOUNDS = "Index out of bounds exception expected"; //$NON-NLS-1$
60  
61    /**
62     * Error message: length is not equal.
63     */
64    private static final String LENGTH_IS_NOT_EQUAL = "length is not equal"; //$NON-NLS-1$
65  
66    /**
67     * Error message: mask is not equal.
68     */
69    private static final String MASK_IS_NOT_EQUAL = "mask is not equal"; //$NON-NLS-1$
70  
71  
72    /**
73     * Default constructor.
74     */
75    /* default */ IPV4MaskTests()
76     {
77      super();
78     }
79  
80  
81    /**
82     * Test constructor failure.
83     */
84    @Test
85    /* default */ void testConstructorFailure0()
86     {
87      assertThrows(IndexOutOfBoundsException.class, () ->
88       {
89        /* final IPV4Mask mask = */ IPV4Mask.of(-1);
90       }, IPV4MaskTests.INDEX_OUT_OF_BOUNDS
91      );
92     }
93  
94  
95    /**
96     * Test constructor failure.
97     */
98    @Test
99    /* default */ void testConstructorFailure1()
100    {
101     assertThrows(IndexOutOfBoundsException.class, () ->
102      {
103       /* final IPV4Mask mask = */ IPV4Mask.of(33);
104      }, IPV4MaskTests.INDEX_OUT_OF_BOUNDS
105     );
106    }
107 
108 
109   /**
110    * Test constructor failure.
111    */
112   @Test
113   /* default */ void testConstructorFailure2()
114    {
115     assertThrows(IllegalArgumentException.class, () ->
116      {
117       /* final IPV4Mask mask = */ IPV4Mask.of("255.255.129.0"); //$NON-NLS-1$
118      }, IPV4MaskTests.ILLEGAL_ARGUMENT
119     );
120    }
121 
122 
123   /**
124    * Test constructor failure.
125    */
126   @Test
127   /* default */ void testConstructorFailure3()
128    {
129     assertThrows(NullPointerException.class, () ->
130      {
131       /* final IPV4Mask mask = */ IPV4Mask.of(null);
132      }, "Null pointer exception expected" //$NON-NLS-1$
133     );
134    }
135 
136 
137   /**
138    * Test constructor failure.
139    */
140   @Test
141   /* default */ void testCnstructorFailure4()
142    {
143     assertThrows(IllegalArgumentException.class, () ->
144      {
145       /* final IPV4Mask mask = */ IPV4Mask.of("255.255.255.255."); //$NON-NLS-1$
146      }, IPV4MaskTests.ILLEGAL_ARGUMENT
147     );
148    }
149 
150 
151   /**
152    * Test constructor failure.
153    */
154   @Test
155   /* default */ void testConstructorFailure5()
156    {
157     assertThrows(IllegalArgumentException.class, () ->
158      {
159       /* final IPV4Mask mask = */ IPV4Mask.of("0.0.0."); //$NON-NLS-1$
160      }, IPV4MaskTests.ILLEGAL_ARGUMENT
161     );
162    }
163 
164 
165   /**
166    * Test constructor success.
167    */
168   @Test
169   /* default */ void testConstructorSuccess0()
170    {
171     final IPV4Mask mask = IPV4Mask.of(0);
172     assertAll("constructorSuccess0", //$NON-NLS-1$
173       () -> assertEquals(0, mask.intValue(), IPV4MaskTests.LENGTH_IS_NOT_EQUAL),
174       () -> assertEquals(IPV4MaskTests.IP_ZERO, mask.stringValue(), IPV4MaskTests.MASK_IS_NOT_EQUAL)
175     );
176    }
177 
178 
179   /**
180    * Test constructor success.
181    */
182   @Test
183   /* default */ void testConstructorSuccess1()
184    {
185     final IPV4Mask mask = IPV4Mask.of(32);
186     assertAll("constructorSuccess1", //$NON-NLS-1$
187       () -> assertEquals(32, mask.intValue(), IPV4MaskTests.LENGTH_IS_NOT_EQUAL),
188       () -> assertEquals(IPV4MaskTests.IP255, mask.stringValue(), IPV4MaskTests.MASK_IS_NOT_EQUAL)
189     );
190    }
191 
192 
193   /**
194    * Test constructor success.
195    */
196   @Test
197   /* default */ void testConstructorSuccess2()
198    {
199     final IPV4Mask mask = IPV4Mask.of(IPV4MaskTests.IP_ZERO);
200     assertAll("constructorSuccess2", //$NON-NLS-1$
201       () -> assertEquals(0, mask.intValue(), IPV4MaskTests.LENGTH_IS_NOT_EQUAL),
202       () -> assertEquals(IPV4MaskTests.IP_ZERO, mask.stringValue(), IPV4MaskTests.MASK_IS_NOT_EQUAL)
203     );
204    }
205 
206 
207   /**
208    * Test constructor success.
209    */
210   @Test
211   /* default */ void testConstructorSuccess3()
212    {
213     final IPV4Mask mask = IPV4Mask.of(IPV4MaskTests.IP255);
214     assertAll("constructorSuccess3", //$NON-NLS-1$
215       () -> assertEquals(32, mask.intValue(), IPV4MaskTests.LENGTH_IS_NOT_EQUAL),
216       () -> assertEquals(IPV4MaskTests.IP255, mask.stringValue(), IPV4MaskTests.MASK_IS_NOT_EQUAL)
217     );
218    }
219 
220 
221   /**
222    * Test constructor success.
223    */
224   @Test
225   /* default */ void testConstructorSuccess4()
226    {
227     final IPV4Mask mask = IPV4Mask.of(8);
228     assertAll("constructorSuccess4", //$NON-NLS-1$
229       () -> assertEquals(8, mask.intValue(), IPV4MaskTests.LENGTH_IS_NOT_EQUAL),
230       () -> assertEquals(IPV4MaskTests.IPMASK_255_0_0_0, mask.stringValue(), IPV4MaskTests.MASK_IS_NOT_EQUAL)
231     );
232    }
233 
234 
235   /**
236    * Test constructor success.
237    */
238   @Test
239   /* default */ void testConstructorSuccess5()
240    {
241     final IPV4Mask mask = IPV4Mask.of(16);
242     assertAll("constructorSuccess5", //$NON-NLS-1$
243       () -> assertEquals(16, mask.intValue(), IPV4MaskTests.LENGTH_IS_NOT_EQUAL),
244       () -> assertEquals(IPV4MaskTests.IPMASK_255_255_0_0, mask.stringValue(), IPV4MaskTests.MASK_IS_NOT_EQUAL)
245     );
246    }
247 
248 
249   /**
250    * Test constructor success.
251    */
252   @Test
253   /* default */ void testConstructorSuccess6()
254    {
255     final IPV4Mask mask = IPV4Mask.of(24);
256     assertAll("constructorSuccess6", //$NON-NLS-1$
257       () -> assertEquals(24, mask.intValue(), IPV4MaskTests.LENGTH_IS_NOT_EQUAL),
258       () -> assertEquals(IPV4MaskTests.IPMASK_255_255_255_0, mask.stringValue(), IPV4MaskTests.MASK_IS_NOT_EQUAL)
259     );
260    }
261 
262 
263   /**
264    * Test constructor success.
265    */
266   @Test
267   /* default */ void testConstructorSuccess7()
268    {
269     final IPV4Mask mask = IPV4Mask.of(IPV4MaskTests.IPMASK_255_255_255_0);
270     assertAll("constructorSuccess7", //$NON-NLS-1$
271       () -> assertEquals(24, mask.intValue(), IPV4MaskTests.LENGTH_IS_NOT_EQUAL),
272       () -> assertEquals(IPV4MaskTests.IPMASK_255_255_255_0, mask.stringValue(), IPV4MaskTests.MASK_IS_NOT_EQUAL)
273     );
274    }
275 
276 
277   /**
278    * Test constructor success.
279    */
280   @Test
281   /* default */ void testConstructorSuccess8()
282    {
283     final IPV4Mask mask = IPV4Mask.of(IPV4MaskTests.IPMASK_255_255_0_0);
284     assertAll("constructorSuccess8", //$NON-NLS-1$
285       () -> assertEquals(16, mask.intValue(), IPV4MaskTests.LENGTH_IS_NOT_EQUAL),
286       () -> assertEquals(IPV4MaskTests.IPMASK_255_255_0_0, mask.stringValue(), IPV4MaskTests.MASK_IS_NOT_EQUAL)
287     );
288    }
289 
290 
291   /**
292    * Test constructor success.
293    */
294   @Test
295   /* default */ void testConstructorSuccess9()
296    {
297     final IPV4Mask mask = IPV4Mask.of(IPV4MaskTests.IPMASK_255_0_0_0);
298     assertAll("constructorSuccess9", //$NON-NLS-1$
299       () -> assertEquals(8, mask.intValue(), IPV4MaskTests.LENGTH_IS_NOT_EQUAL),
300       () -> assertEquals(IPV4MaskTests.IPMASK_255_0_0_0, mask.stringValue(), IPV4MaskTests.MASK_IS_NOT_EQUAL)
301     );
302    }
303 
304 
305   /**
306    * Test constructor success.
307    */
308   @Test
309   /* default */ void testConstructorSuccess10()
310    {
311     final IPV4Mask mask = IPV4Mask.of(9);
312     assertAll("constructorSuccess10", //$NON-NLS-1$
313       () -> assertEquals(9, mask.intValue(), IPV4MaskTests.LENGTH_IS_NOT_EQUAL),
314       () -> assertEquals("255.128.0.0", mask.stringValue(), IPV4MaskTests.MASK_IS_NOT_EQUAL) //$NON-NLS-1$
315     );
316    }
317 
318 
319   /**
320    * Test constructor success.
321    */
322   @Test
323   /* default */ void testConstructorSuccess11()
324    {
325     final IPV4Mask mask = IPV4Mask.of(17);
326     assertAll("constructorSuccess11", //$NON-NLS-1$
327       () -> assertEquals(17, mask.intValue(), IPV4MaskTests.LENGTH_IS_NOT_EQUAL),
328       () -> assertEquals("255.255.128.0", mask.stringValue(), IPV4MaskTests.MASK_IS_NOT_EQUAL) //$NON-NLS-1$
329     );
330    }
331 
332 
333   /**
334    * Test hash code.
335    */
336   @Test
337   /* default */ void testHashCode()
338    {
339     final IPV4Mask mask1 = IPV4Mask.of(IPV4MaskTests.IPMASK_255_255_255_0);
340     final IPV4Mask mask2 = IPV4Mask.of(IPV4MaskTests.IPMASK_255_255_255_0);
341     final IPV4Mask mask3 = IPV4Mask.of(IPV4MaskTests.IPMASK_255_255_0_0);
342     assertAll("testHashCode", //$NON-NLS-1$
343       () -> assertEquals(mask1.hashCode(), mask2.hashCode(), "hashCodes are not equal"), //$NON-NLS-1$
344       () -> assertNotEquals(mask1.hashCode(), mask3.hashCode(), "hashCodes are equal") //$NON-NLS-1$
345     );
346    }
347 
348 
349   /**
350    * Test equals.
351    */
352   @Test
353   @SuppressWarnings("java:S5785")
354   /* default */ void testEquals()
355    {
356     final IPV4Mask mask1 = IPV4Mask.of(IPV4MaskTests.IPMASK_255_255_255_0);
357     final IPV4Mask mask2 = IPV4Mask.of(IPV4MaskTests.IPMASK_255_255_255_0);
358     final IPV4Mask mask3 = IPV4Mask.of(IPV4MaskTests.IPMASK_255_255_0_0);
359     final IPV4Mask mask4 = IPV4Mask.of(IPV4MaskTests.IPMASK_255_255_255_0);
360     assertAll("testEquals", //$NON-NLS-1$
361       () -> assertTrue(mask1.equals(mask1), "mask11 is not equal"), //$NON-NLS-1$
362       () -> assertTrue(mask1.equals(mask2), "mask12 are not equal"), //$NON-NLS-1$
363       () -> assertTrue(mask2.equals(mask1), "mask21 are not equal"), //$NON-NLS-1$
364       () -> assertTrue(mask2.equals(mask4), "mask24 are not equal"), //$NON-NLS-1$
365       () -> assertTrue(mask1.equals(mask4), "mask14 are not equal"), //$NON-NLS-1$
366       () -> assertFalse(mask1.equals(mask3), "mask13 are equal"), //$NON-NLS-1$
367       () -> assertFalse(mask3.equals(mask1), "mask31 are equal"), //$NON-NLS-1$
368       () -> assertFalse(mask1.equals(null), "mask10 is equal") //$NON-NLS-1$
369     );
370    }
371 
372 
373   /**
374    * Test toString.
375    */
376   @Test
377   /* default */ void testToString()
378    {
379     final IPV4Mask mask = IPV4Mask.of(IPV4MaskTests.IPMASK_255_255_255_0);
380     assertEquals("IPV4Mask[length=24, mask=255.255.255.0]", mask.toString(), "toString not equal"); //$NON-NLS-1$ //$NON-NLS-2$
381    }
382 
383 
384   /**
385    * Test compareTo.
386    */
387   @Test
388   @SuppressWarnings("java:S5785")
389   /* default */ void testCompareTo()
390    {
391     final IPV4Mask mask1 = IPV4Mask.of(IPV4MaskTests.IPMASK_255_0_0_0);
392     final IPV4Mask mask2 = IPV4Mask.of(IPV4MaskTests.IPMASK_255_0_0_0);
393     final IPV4Mask mask3 = IPV4Mask.of(IPV4MaskTests.IPMASK_255_255_0_0);
394     final IPV4Mask mask4 = IPV4Mask.of(IPV4MaskTests.IPMASK_255_255_255_0);
395     final IPV4Mask mask5 = IPV4Mask.of(IPV4MaskTests.IPMASK_255_0_0_0);
396     assertAll("testCompareTo", //$NON-NLS-1$
397       () -> assertTrue(mask1.compareTo(mask2) == -mask2.compareTo(mask1), "reflexive1"), //$NON-NLS-1$
398       () -> assertTrue(mask1.compareTo(mask3) == -mask3.compareTo(mask1), "reflexive2"), //$NON-NLS-1$
399       () -> assertTrue((mask4.compareTo(mask3) > 0) && (mask3.compareTo(mask1) > 0) && (mask4.compareTo(mask1) > 0), "transitive1"), //$NON-NLS-1$
400       () -> assertTrue((mask1.compareTo(mask2) == 0) && (Math.abs(mask1.compareTo(mask5)) == Math.abs(mask2.compareTo(mask5))), "sgn1"), //$NON-NLS-1$
401       () -> assertTrue((mask1.compareTo(mask2) == 0) && mask1.equals(mask2), "equals") //$NON-NLS-1$
402     );
403    }
404 
405  }