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.BFPONumber;
19  import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
20  
21  
22  /**
23   * BFPONumber 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 BFPONumberTests
27   {
28    /**
29     * Not a BFPONumber constant.
30     */
31    private static final String NOT_A_BFPO_NUMBER = "Not a BFPONumber!"; //$NON-NLS-1$
32  
33    /**
34     * 1 constant.
35     */
36    private static final String ONE = "1"; //$NON-NLS-1$
37  
38  
39    /**
40     * Default constructor.
41     */
42    /* default */ BFPONumberTests()
43     {
44      super();
45     }
46  
47  
48    /**
49     * Factory string test.
50     */
51    @Test
52    /* default */ void testFactory1()
53     {
54      assertEquals(1, BFPONumber.of(ONE).intValue(), BFPONumberTests.NOT_A_BFPO_NUMBER);
55     }
56  
57  
58    /**
59     * Is bFPONumber.
60     *
61     * @param bFPONumber BFPONumber
62     */
63    @ParameterizedTest
64    @ValueSource(ints = {1, 2035})
65    /* default */ void testIsBFPONumber(final int bFPONumber)
66     {
67      assertEquals(bFPONumber, BFPONumber.of(bFPONumber).intValue(), BFPONumberTests.NOT_A_BFPO_NUMBER);
68     }
69  
70  
71    /**
72     * Is bFPONumber string.
73     *
74     * @param bFPONumber BFPONumber
75     */
76    @ParameterizedTest
77    @ValueSource(ints = {1, 2035})
78    /* default */ void testIsBFPONumberStr(final int bFPONumber)
79     {
80      assertEquals(Integer.toString(bFPONumber), BFPONumber.of(bFPONumber).stringValue(), BFPONumberTests.NOT_A_BFPO_NUMBER);
81     }
82  
83  
84    /**
85     * Is not a BFPONumber.
86     *
87     * @param bFPONumber BFPONumber
88     */
89    @ParameterizedTest
90    @ValueSource(ints = {0, 2036})
91    /* default */ void testIsNotABFPONumber(final int bFPONumber)
92     {
93      assertThrows(IndexOutOfBoundsException.class, () ->
94       {
95        /* final BFPONumber bFPONumber = */ BFPONumber.of(bFPONumber);
96       }, "Index out of bounds exception expected" //$NON-NLS-1$
97      );
98     }
99  
100 
101   /**
102    * Test hash code.
103    */
104   @Test
105   /* default */ void testHashCode()
106    {
107     final BFPONumber bFPONumber1 = BFPONumber.of(1);
108     final BFPONumber bFPONumber2 = BFPONumber.of(1);
109     final BFPONumber bFPONumber3 = BFPONumber.of(2);
110     assertAll("testHashCode", //$NON-NLS-1$
111       () -> assertEquals(bFPONumber1.hashCode(), bFPONumber2.hashCode(), "hashCodes are not equal"), //$NON-NLS-1$
112       () -> assertNotEquals(bFPONumber1.hashCode(), bFPONumber3.hashCode(), "hashCodes are equal") //$NON-NLS-1$
113     );
114    }
115 
116 
117   /**
118    * Test equals.
119    */
120   @Test
121   @SuppressWarnings("java:S5785")
122   /* default */ void testEquals()
123    {
124     final BFPONumber bFPONumber1 = BFPONumber.of(1);
125     final BFPONumber bFPONumber2 = BFPONumber.of(1);
126     final BFPONumber bFPONumber3 = BFPONumber.of(2);
127     final BFPONumber bFPONumber4 = BFPONumber.of(1);
128     assertAll("testEquals", //$NON-NLS-1$
129       () -> assertTrue(bFPONumber1.equals(bFPONumber1), "bFPONumber11 is not equal"), //$NON-NLS-1$
130       () -> assertTrue(bFPONumber1.equals(bFPONumber2), "bFPONumber12 are not equal"), //$NON-NLS-1$
131       () -> assertTrue(bFPONumber2.equals(bFPONumber1), "bFPONumber21 are not equal"), //$NON-NLS-1$
132       () -> assertTrue(bFPONumber2.equals(bFPONumber4), "bFPONumber24 are not equal"), //$NON-NLS-1$
133       () -> assertTrue(bFPONumber1.equals(bFPONumber4), "bFPONumber14 are not equal"), //$NON-NLS-1$
134       () -> assertFalse(bFPONumber1.equals(bFPONumber3), "bFPONumber13 are equal"), //$NON-NLS-1$
135       () -> assertFalse(bFPONumber3.equals(bFPONumber1), "bFPONumber31 are equal"), //$NON-NLS-1$
136       () -> assertFalse(bFPONumber1.equals(null), "bFPONumber10 is equal") //$NON-NLS-1$
137     );
138    }
139 
140 
141   /**
142    * Test toString.
143    */
144   @Test
145   /* default */ void testToString()
146    {
147     final BFPONumber bFPONumber = BFPONumber.of(1);
148     assertEquals("BFPONumber[bFPONumber=1]", bFPONumber.toString(), "toString not equal"); //$NON-NLS-1$ //$NON-NLS-2$
149    }
150 
151 
152   /**
153    * Test compareTo.
154    */
155   @Test
156   @SuppressWarnings("java:S5785")
157   /* default */ void testCompareTo()
158    {
159     final BFPONumber bFPONumber1 = BFPONumber.of(1);
160     final BFPONumber bFPONumber2 = BFPONumber.of(1);
161     final BFPONumber bFPONumber3 = BFPONumber.of(2);
162     final BFPONumber bFPONumber4 = BFPONumber.of(3);
163     final BFPONumber bFPONumber5 = BFPONumber.of(1);
164     assertAll("testCompareTo", //$NON-NLS-1$
165       () -> assertTrue(bFPONumber1.compareTo(bFPONumber2) == -bFPONumber2.compareTo(bFPONumber1), "reflexive1"), //$NON-NLS-1$
166       () -> assertTrue(bFPONumber1.compareTo(bFPONumber3) == -bFPONumber3.compareTo(bFPONumber1), "reflexive2"), //$NON-NLS-1$
167       () -> assertTrue((bFPONumber4.compareTo(bFPONumber3) > 0) && (bFPONumber3.compareTo(bFPONumber1) > 0) && (bFPONumber4.compareTo(bFPONumber1) > 0), "transitive1"), //$NON-NLS-1$
168       () -> assertTrue((bFPONumber1.compareTo(bFPONumber2) == 0) && (Math.abs(bFPONumber1.compareTo(bFPONumber5)) == Math.abs(bFPONumber2.compareTo(bFPONumber5))), "sgn1"), //$NON-NLS-1$
169       () -> assertTrue((bFPONumber1.compareTo(bFPONumber2) == 0) && bFPONumber1.equals(bFPONumber2), "equals") //$NON-NLS-1$
170     );
171    }
172 
173  }
174