1
2
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
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
30
31 private static final String NOT_A_BFPO_NUMBER = "Not a BFPONumber!";
32
33
34
35
36 private static final String ONE = "1";
37
38
39
40
41
42 BFPONumberTests()
43 {
44 super();
45 }
46
47
48
49
50
51 @Test
52 void testFactory1()
53 {
54 assertEquals(1, BFPONumber.of(ONE).intValue(), BFPONumberTests.NOT_A_BFPO_NUMBER);
55 }
56
57
58
59
60
61
62
63 @ParameterizedTest
64 @ValueSource(ints = {1, 2035})
65 void testIsBFPONumber(final int bFPONumber)
66 {
67 assertEquals(bFPONumber, BFPONumber.of(bFPONumber).intValue(), BFPONumberTests.NOT_A_BFPO_NUMBER);
68 }
69
70
71
72
73
74
75
76 @ParameterizedTest
77 @ValueSource(ints = {1, 2035})
78 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
86
87
88
89 @ParameterizedTest
90 @ValueSource(ints = {0, 2036})
91 void testIsNotABFPONumber(final int bFPONumber)
92 {
93 assertThrows(IndexOutOfBoundsException.class, () ->
94 {
95 BFPONumber.of(bFPONumber);
96 }, "Index out of bounds exception expected"
97 );
98 }
99
100
101
102
103
104 @Test
105 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",
111 () -> assertEquals(bFPONumber1.hashCode(), bFPONumber2.hashCode(), "hashCodes are not equal"),
112 () -> assertNotEquals(bFPONumber1.hashCode(), bFPONumber3.hashCode(), "hashCodes are equal")
113 );
114 }
115
116
117
118
119
120 @Test
121 @SuppressWarnings("java:S5785")
122 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",
129 () -> assertTrue(bFPONumber1.equals(bFPONumber1), "bFPONumber11 is not equal"),
130 () -> assertTrue(bFPONumber1.equals(bFPONumber2), "bFPONumber12 are not equal"),
131 () -> assertTrue(bFPONumber2.equals(bFPONumber1), "bFPONumber21 are not equal"),
132 () -> assertTrue(bFPONumber2.equals(bFPONumber4), "bFPONumber24 are not equal"),
133 () -> assertTrue(bFPONumber1.equals(bFPONumber4), "bFPONumber14 are not equal"),
134 () -> assertFalse(bFPONumber1.equals(bFPONumber3), "bFPONumber13 are equal"),
135 () -> assertFalse(bFPONumber3.equals(bFPONumber1), "bFPONumber31 are equal"),
136 () -> assertFalse(bFPONumber1.equals(null), "bFPONumber10 is equal")
137 );
138 }
139
140
141
142
143
144 @Test
145 void testToString()
146 {
147 final BFPONumber bFPONumber = BFPONumber.of(1);
148 assertEquals("BFPONumber[bFPONumber=1]", bFPONumber.toString(), "toString not equal");
149 }
150
151
152
153
154
155 @Test
156 @SuppressWarnings("java:S5785")
157 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",
165 () -> assertTrue(bFPONumber1.compareTo(bFPONumber2) == -bFPONumber2.compareTo(bFPONumber1), "reflexive1"),
166 () -> assertTrue(bFPONumber1.compareTo(bFPONumber3) == -bFPONumber3.compareTo(bFPONumber1), "reflexive2"),
167 () -> assertTrue((bFPONumber4.compareTo(bFPONumber3) > 0) && (bFPONumber3.compareTo(bFPONumber1) > 0) && (bFPONumber4.compareTo(bFPONumber1) > 0), "transitive1"),
168 () -> assertTrue((bFPONumber1.compareTo(bFPONumber2) == 0) && (Math.abs(bFPONumber1.compareTo(bFPONumber5)) == Math.abs(bFPONumber2.compareTo(bFPONumber5))), "sgn1"),
169 () -> assertTrue((bFPONumber1.compareTo(bFPONumber2) == 0) && bFPONumber1.equals(bFPONumber2), "equals")
170 );
171 }
172
173 }
174