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.IPV6Mask;
17  import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
18  
19  
20  /**
21   * IP V6 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 IPV6MaskTests
25   {
26    /**
27     * Length is not equal constant.
28     */
29    private static final String LENGTH_IS_NOT_EQUAL = "length is not equal"; //$NON-NLS-1$
30  
31    /**
32     * Index out of bounds exception expected constant.
33     */
34    private static final String INDEX_OUT_OF_BOUNDS = "Index out of bounds exception expected"; //$NON-NLS-1$
35  
36    /**
37     * Constructor success constant.
38     */
39    private static final String CONSTRUCTOR_SUCCESS = "constructorSuccess"; //$NON-NLS-1$
40  
41  
42    /**
43     * Default constructor.
44     */
45    /* default */ IPV6MaskTests()
46     {
47      super();
48     }
49  
50  
51    /**
52     * Test constructor failure.
53     */
54    @Test
55    /* default */ void testConstructorFailure0()
56     {
57      assertThrows(IndexOutOfBoundsException.class, () ->
58       {
59        /* final IPV6Mask mask = */ IPV6Mask.of(-1);
60       }, IPV6MaskTests.INDEX_OUT_OF_BOUNDS
61      );
62     }
63  
64  
65    /**
66     * Test constructor failure.
67     */
68    @Test
69    /* default */ void testConstructorFailure1()
70     {
71      assertThrows(IndexOutOfBoundsException.class, () ->
72       {
73        /* final IPV6Mask mask = */ IPV6Mask.of(129);
74       }, IPV6MaskTests.INDEX_OUT_OF_BOUNDS
75      );
76     }
77  
78  
79    /**
80     * Test constructor success.
81     */
82    @Test
83    /* default */ void testConstructorSuccess0()
84     {
85      final IPV6Mask mask = IPV6Mask.of(0);
86      assertAll("constructorSuccess0", //$NON-NLS-1$
87        () -> assertEquals(0, mask.intValue(), IPV6MaskTests.LENGTH_IS_NOT_EQUAL)
88      );
89     }
90  
91  
92    /**
93     * Test constructor success.
94     */
95    @Test
96    /* default */ void testConstructorSuccess1()
97     {
98      final IPV6Mask mask = IPV6Mask.of(128);
99      assertAll(CONSTRUCTOR_SUCCESS,
100       () -> assertEquals(128, mask.intValue(), IPV6MaskTests.LENGTH_IS_NOT_EQUAL)
101     );
102    }
103 
104 
105   /**
106    * Test constructor success.
107    */
108   @Test
109   /* default */ void testConstructorSuccess2()
110    {
111     final IPV6Mask mask = IPV6Mask.of("128");
112     assertAll(CONSTRUCTOR_SUCCESS,
113       () -> assertEquals(128, mask.intValue(), IPV6MaskTests.LENGTH_IS_NOT_EQUAL)
114     );
115    }
116 
117 
118   /**
119    * Test intValue.
120    */
121   @Test
122   /* default */ void testIntValue()
123    {
124     final IPV6Mask mask = IPV6Mask.of(0);
125     assertEquals(0, mask.intValue(), IPV6MaskTests.LENGTH_IS_NOT_EQUAL);
126    }
127 
128 
129   /**
130    * Test stringValue.
131    */
132   @Test
133   /* default */ void testStringValue()
134    {
135     final IPV6Mask mask = IPV6Mask.of(0);
136     assertEquals("0", mask.stringValue(), IPV6MaskTests.LENGTH_IS_NOT_EQUAL);
137    }
138 
139 
140   /**
141    * Test hash code.
142    */
143   @Test
144   /* default */ void testHashCode()
145    {
146     final IPV6Mask mask1 = IPV6Mask.of(112);
147     final IPV6Mask mask2 = IPV6Mask.of(112);
148     final IPV6Mask mask3 = IPV6Mask.of(96);
149     assertAll("testHashCode", //$NON-NLS-1$
150       () -> assertEquals(mask1.hashCode(), mask2.hashCode(), "hashCodes are not equal"), //$NON-NLS-1$
151       () -> assertNotEquals(mask1.hashCode(), mask3.hashCode(), "hashCodes are equal") //$NON-NLS-1$
152     );
153    }
154 
155 
156   /**
157    * Test equals.
158    */
159   @Test
160   @SuppressWarnings("java:S5785")
161   /* default */ void testEquals()
162    {
163     final IPV6Mask mask1 = IPV6Mask.of(112);
164     final IPV6Mask mask2 = IPV6Mask.of(112);
165     final IPV6Mask mask3 = IPV6Mask.of(96);
166     final IPV6Mask mask4 = IPV6Mask.of(112);
167     assertAll("testEquals", //$NON-NLS-1$
168       () -> assertTrue(mask1.equals(mask1), "mask11 is not equal"), //$NON-NLS-1$
169       () -> assertTrue(mask1.equals(mask2), "mask12 are not equal"), //$NON-NLS-1$
170       () -> assertTrue(mask2.equals(mask1), "mask21 are not equal"), //$NON-NLS-1$
171       () -> assertTrue(mask2.equals(mask4), "mask24 are not equal"), //$NON-NLS-1$
172       () -> assertTrue(mask1.equals(mask4), "mask14 are not equal"), //$NON-NLS-1$
173       () -> assertFalse(mask1.equals(mask3), "mask13 are equal"), //$NON-NLS-1$
174       () -> assertFalse(mask3.equals(mask1), "mask31 are equal"), //$NON-NLS-1$
175       () -> assertFalse(mask1.equals(null), "mask10 is equal") //$NON-NLS-1$
176     );
177    }
178 
179 
180   /**
181    * Test toString.
182    */
183   @Test
184   /* default */ void testToString()
185    {
186     final IPV6Mask mask = IPV6Mask.of(112);
187     assertEquals("IPV6Mask[length=112]", mask.toString(), "toString not equal"); //$NON-NLS-1$ //$NON-NLS-2$
188    }
189 
190 
191   /**
192    * Test compareTo.
193    */
194   @Test
195   @SuppressWarnings("java:S5785")
196   /* default */ void testCompareTo()
197    {
198     final IPV6Mask mask1 = IPV6Mask.of(16);
199     final IPV6Mask mask2 = IPV6Mask.of(16);
200     final IPV6Mask mask3 = IPV6Mask.of(32);
201     final IPV6Mask mask4 = IPV6Mask.of(48);
202     final IPV6Mask mask5 = IPV6Mask.of(16);
203     assertAll("testCompareTo", //$NON-NLS-1$
204       () -> assertTrue(mask1.compareTo(mask2) == -mask2.compareTo(mask1), "reflexive1"), //$NON-NLS-1$
205       () -> assertTrue(mask1.compareTo(mask3) == -mask3.compareTo(mask1), "reflexive2"), //$NON-NLS-1$
206       () -> assertTrue((mask4.compareTo(mask3) > 0) && (mask3.compareTo(mask1) > 0) && (mask4.compareTo(mask1) > 0), "transitive1"), //$NON-NLS-1$
207       () -> assertTrue((mask1.compareTo(mask2) == 0) && (Math.abs(mask1.compareTo(mask5)) == Math.abs(mask2.compareTo(mask5))), "sgn1"), //$NON-NLS-1$
208       () -> assertTrue((mask1.compareTo(mask2) == 0) && mask1.equals(mask2), "equals") //$NON-NLS-1$
209     );
210    }
211 
212  }