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  import org.junit.jupiter.params.ParameterizedTest;
16  import org.junit.jupiter.params.provider.ValueSource;
17  
18  import de.powerstat.validation.values.PoBoxNumber;
19  import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
20  
21  
22  /**
23   * Post office  box number tests.
24   */
25  @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"})
26  final class PoBoxNumberTests
27   {
28    /**
29     * Not a po box number constant.
30     */
31    private static final String NOT_A_PO_BOX_NUMBER = "Not a po box number!"; //$NON-NLS-1$
32  
33    /**
34     * Result 10 constant.
35     */
36    private static final String RESULT10 = "10"; //$NON-NLS-1$
37  
38  
39    /**
40     * Default constructor.
41     */
42    /* default */ PoBoxNumberTests()
43     {
44      super();
45     }
46  
47  
48    /**
49     * Factory string test.
50     */
51    @Test
52    /* default */ void testFactory1()
53     {
54      assertEquals(1, PoBoxNumber.of("1").longValue(), PoBoxNumberTests.NOT_A_PO_BOX_NUMBER);
55     }
56  
57  
58    /**
59     * Is po box number.
60     *
61     * @param poBoxNumber PO box number
62     */
63    @ParameterizedTest
64    @ValueSource(longs = {1, 99999})
65    /* default */ void testIsPoBoxNumber(final long poBoxNumber)
66     {
67      assertEquals(poBoxNumber, PoBoxNumber.of(poBoxNumber).longValue(), PoBoxNumberTests.NOT_A_PO_BOX_NUMBER);
68     }
69  
70  
71    /**
72     * Is po box number string.
73     *
74     * @param poBoxNumber PO box number
75     */
76    @ParameterizedTest
77    @ValueSource(strings = {"1", "99999"})
78    /* default */ void testIsPoBoxNumberStr(final String poBoxNumber)
79     {
80      assertEquals(poBoxNumber, PoBoxNumber.of(Long.parseLong(poBoxNumber)).stringValue(), PoBoxNumberTests.NOT_A_PO_BOX_NUMBER);
81     }
82  
83  
84    /**
85     * Is not a po box number.
86     *
87     * @param poBoxNumber PO box number
88     */
89    @ParameterizedTest
90    @ValueSource(longs = {0})
91    /* default */ void testIsNotAPoBoxNumber(final long poBoxNumber)
92     {
93      assertThrows(IndexOutOfBoundsException.class, () ->
94       {
95        /* final PoBoxNumber poBoxNumber = */ PoBoxNumber.of(poBoxNumber);
96       }, "Index out of bounds exception expected" //$NON-NLS-1$
97      );
98     }
99  
100 
101   /**
102    * longValue.
103    */
104   @Test
105   /* default */ void testLongValue()
106    {
107     assertEquals(10, PoBoxNumber.of(10).longValue(), PoBoxNumberTests.NOT_A_PO_BOX_NUMBER);
108    }
109 
110 
111   /**
112    * stringValue.
113    */
114   @Test
115   /* default */ void testStringValue()
116    {
117     assertEquals(PoBoxNumberTests.RESULT10, PoBoxNumber.of(10).stringValue(), PoBoxNumberTests.NOT_A_PO_BOX_NUMBER);
118    }
119 
120 
121   /**
122    * Test hash code.
123    */
124   @Test
125   /* default */ void testHashCode()
126    {
127     final PoBoxNumber poBoxNumber1 = PoBoxNumber.of(1);
128     final PoBoxNumber poBoxNumber2 = PoBoxNumber.of(1);
129     final PoBoxNumber poBoxNumber3 = PoBoxNumber.of(2);
130     assertAll("testHashCode", //$NON-NLS-1$
131       () -> assertEquals(poBoxNumber1.hashCode(), poBoxNumber2.hashCode(), "hashCodes are not equal"), //$NON-NLS-1$
132       () -> assertNotEquals(poBoxNumber1.hashCode(), poBoxNumber3.hashCode(), "hashCodes are equal") //$NON-NLS-1$
133     );
134    }
135 
136 
137   /**
138    * Test equals.
139    */
140   @Test
141   @SuppressWarnings("java:S5785")
142   /* default */ void testEquals()
143    {
144     final PoBoxNumber poBoxNumber1 = PoBoxNumber.of(1);
145     final PoBoxNumber poBoxNumber2 = PoBoxNumber.of(1);
146     final PoBoxNumber poBoxNumber3 = PoBoxNumber.of(2);
147     final PoBoxNumber poBoxNumber4 = PoBoxNumber.of(1);
148     assertAll("testEquals", //$NON-NLS-1$
149       () -> assertTrue(poBoxNumber1.equals(poBoxNumber1), "poBox11 is not equal"), //$NON-NLS-1$
150       () -> assertTrue(poBoxNumber1.equals(poBoxNumber2), "poBox12 are not equal"), //$NON-NLS-1$
151       () -> assertTrue(poBoxNumber2.equals(poBoxNumber1), "poBox21 are not equal"), //$NON-NLS-1$
152       () -> assertTrue(poBoxNumber2.equals(poBoxNumber4), "poBox24 are not equal"), //$NON-NLS-1$
153       () -> assertTrue(poBoxNumber1.equals(poBoxNumber4), "poBox14 are not equal"), //$NON-NLS-1$
154       () -> assertFalse(poBoxNumber1.equals(poBoxNumber3), "poBox13 are equal"), //$NON-NLS-1$
155       () -> assertFalse(poBoxNumber3.equals(poBoxNumber1), "poBox31 are equal"), //$NON-NLS-1$
156       () -> assertFalse(poBoxNumber1.equals(null), "poBox10 is equal") //$NON-NLS-1$
157     );
158    }
159 
160 
161   /**
162    * Test toString.
163    */
164   @Test
165   /* default */ void testToString()
166    {
167     final PoBoxNumber poBoxNumber = PoBoxNumber.of(1);
168     assertEquals("PoBoxNumber[poBoxNumber=1]", poBoxNumber.toString(), "toString not equal"); //$NON-NLS-1$ //$NON-NLS-2$
169    }
170 
171 
172   /**
173    * Test compareTo.
174    */
175   @Test
176   @SuppressWarnings("java:S5785")
177   /* default */ void testCompareTo()
178    {
179     final PoBoxNumber pobox1 = PoBoxNumber.of(1);
180     final PoBoxNumber pobox2 = PoBoxNumber.of(1);
181     final PoBoxNumber pobox3 = PoBoxNumber.of(2);
182     final PoBoxNumber pobox4 = PoBoxNumber.of(3);
183     final PoBoxNumber pobox5 = PoBoxNumber.of(1);
184     assertAll("testCompareTo", //$NON-NLS-1$
185       () -> assertTrue(pobox1.compareTo(pobox2) == -pobox2.compareTo(pobox1), "reflexive1"), //$NON-NLS-1$
186       () -> assertTrue(pobox1.compareTo(pobox3) == -pobox3.compareTo(pobox1), "reflexive2"), //$NON-NLS-1$
187       () -> assertTrue((pobox4.compareTo(pobox3) > 0) && (pobox3.compareTo(pobox1) > 0) && (pobox4.compareTo(pobox1) > 0), "transitive1"), //$NON-NLS-1$
188       () -> assertTrue((pobox1.compareTo(pobox2) == 0) && (Math.abs(pobox1.compareTo(pobox5)) == Math.abs(pobox2.compareTo(pobox5))), "sgn1"), //$NON-NLS-1$
189       () -> assertTrue((pobox1.compareTo(pobox2) == 0) && pobox1.equals(pobox2), "equals") //$NON-NLS-1$
190     );
191    }
192 
193  }