1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.lang3.mutable;
18
19 import static org.apache.commons.lang3.LangAssertions.assertNullPointerException;
20 import static org.junit.jupiter.api.Assertions.assertEquals;
21 import static org.junit.jupiter.api.Assertions.assertNotEquals;
22 import static org.junit.jupiter.api.Assertions.assertTrue;
23
24 import org.apache.commons.lang3.AbstractLangTest;
25 import org.junit.jupiter.api.Test;
26
27
28
29
30
31
32 class MutableFloatTest extends AbstractLangTest {
33
34 @Test
35 void testAddAndGetValueObject() {
36 final MutableFloat mutableFloat = new MutableFloat(5f);
37 final float result = mutableFloat.addAndGet(Float.valueOf(2.5f));
38
39 assertEquals(7.5f, result, 0.01f);
40 assertEquals(7.5f, mutableFloat.floatValue(), 0.01f);
41 }
42
43 @Test
44 void testAddAndGetValuePrimitive() {
45 final MutableFloat mutableFloat = new MutableFloat(0.5f);
46 final float result = mutableFloat.addAndGet(1f);
47
48 assertEquals(1.5f, result, 0.01f);
49 assertEquals(1.5f, mutableFloat.floatValue(), 0.01f);
50 }
51
52 @Test
53 void testAddValueObject() {
54 final MutableFloat mutNum = new MutableFloat(1);
55 mutNum.add(Float.valueOf(1.1f));
56
57 assertEquals(2.1f, mutNum.floatValue(), 0.01f);
58 }
59
60 @Test
61 void testAddValuePrimitive() {
62 final MutableFloat mutNum = new MutableFloat(1);
63 mutNum.add(1.1f);
64
65 assertEquals(2.1f, mutNum.floatValue(), 0.01f);
66 }
67
68 @Test
69 void testCompareTo() {
70 final MutableFloat mutNum = new MutableFloat(0f);
71
72 assertEquals(0, mutNum.compareTo(new MutableFloat(0f)));
73 assertEquals(+1, mutNum.compareTo(new MutableFloat(-1f)));
74 assertEquals(-1, mutNum.compareTo(new MutableFloat(1f)));
75 }
76
77 @Test
78 void testCompareToNull() {
79 final MutableFloat mutNum = new MutableFloat(0f);
80 assertNullPointerException(() -> mutNum.compareTo(null));
81 }
82
83 @Test
84 void testConstructorNull() {
85 assertNullPointerException(() -> new MutableFloat((Number) null));
86 }
87
88 @Test
89 void testConstructors() {
90 assertEquals(0f, new MutableFloat().floatValue(), 0.0001f);
91
92 assertEquals(1f, new MutableFloat(1f).floatValue(), 0.0001f);
93
94 assertEquals(2f, new MutableFloat(Float.valueOf(2f)).floatValue(), 0.0001f);
95 assertEquals(3f, new MutableFloat(new MutableFloat(3f)).floatValue(), 0.0001f);
96
97 assertEquals(2f, new MutableFloat("2.0").floatValue(), 0.0001f);
98
99 }
100
101 @Test
102 void testDecrement() {
103 final MutableFloat mutNum = new MutableFloat(1);
104 mutNum.decrement();
105
106 assertEquals(0, mutNum.intValue());
107 assertEquals(0L, mutNum.longValue());
108 }
109
110 @Test
111 void testDecrementAndGet() {
112 final MutableFloat mutNum = new MutableFloat(1f);
113 final float result = mutNum.decrementAndGet();
114
115 assertEquals(0f, result, 0.01f);
116 assertEquals(0, mutNum.intValue());
117 assertEquals(0L, mutNum.longValue());
118 }
119
120 @Test
121 void testEquals() {
122 final MutableFloat mutNumA = new MutableFloat(0f);
123 final MutableFloat mutNumB = new MutableFloat(0f);
124 final MutableFloat mutNumC = new MutableFloat(1f);
125
126 assertEquals(mutNumA, mutNumA);
127 assertEquals(mutNumA, mutNumB);
128 assertEquals(mutNumB, mutNumA);
129 assertEquals(mutNumB, mutNumB);
130 assertNotEquals(mutNumA, mutNumC);
131 assertNotEquals(mutNumB, mutNumC);
132 assertEquals(mutNumC, mutNumC);
133 assertNotEquals(null, mutNumA);
134 assertNotEquals(mutNumA, Float.valueOf(0f));
135 assertNotEquals("0", mutNumA);
136 }
137
138 @Test
139 void testGetAndAddValueObject() {
140 final MutableFloat mutableFloat = new MutableFloat(7.75f);
141 final float result = mutableFloat.getAndAdd(Float.valueOf(2.25f));
142
143 assertEquals(7.75f, result, 0.01f);
144 assertEquals(10f, mutableFloat.floatValue(), 0.01f);
145 }
146
147 @Test
148 void testGetAndAddValuePrimitive() {
149 final MutableFloat mutableFloat = new MutableFloat(1.25f);
150 final float result = mutableFloat.getAndAdd(0.75f);
151
152 assertEquals(1.25f, result, 0.01f);
153 assertEquals(2f, mutableFloat.floatValue(), 0.01f);
154 }
155
156 @Test
157 void testGetAndDecrement() {
158 final MutableFloat mutNum = new MutableFloat(1f);
159 final float result = mutNum.getAndDecrement();
160
161 assertEquals(1f, result, 0.01f);
162 assertEquals(0, mutNum.intValue());
163 assertEquals(0L, mutNum.longValue());
164 }
165
166 @Test
167 void testGetAndIncrement() {
168 final MutableFloat mutNum = new MutableFloat(1f);
169 final float result = mutNum.getAndIncrement();
170
171 assertEquals(1f, result, 0.01f);
172 assertEquals(2, mutNum.intValue());
173 assertEquals(2L, mutNum.longValue());
174 }
175
176 @Test
177 void testGetSet() {
178 final MutableFloat mutNum = new MutableFloat(0f);
179 assertEquals(0f, new MutableFloat().floatValue(), 0.0001f);
180 assertEquals(Float.valueOf(0), new MutableFloat().get());
181 assertEquals(Float.valueOf(0), new MutableFloat().getValue());
182
183 mutNum.setValue(1);
184 assertEquals(1f, mutNum.floatValue(), 0.0001f);
185 assertEquals(Float.valueOf(1f), mutNum.get());
186 assertEquals(Float.valueOf(1f), mutNum.getValue());
187
188 mutNum.setValue(Float.valueOf(2f));
189 assertEquals(2f, mutNum.floatValue(), 0.0001f);
190 assertEquals(Float.valueOf(2f), mutNum.get());
191 assertEquals(Float.valueOf(2f), mutNum.getValue());
192
193 mutNum.setValue(new MutableFloat(3f));
194 assertEquals(3f, mutNum.floatValue(), 0.0001f);
195 assertEquals(Float.valueOf(3f), mutNum.get());
196 assertEquals(Float.valueOf(3f), mutNum.getValue());
197 }
198
199 @Test
200 void testHashCode() {
201 final MutableFloat mutNumA = new MutableFloat(0f);
202 final MutableFloat mutNumB = new MutableFloat(0f);
203 final MutableFloat mutNumC = new MutableFloat(1f);
204
205 assertEquals(mutNumA.hashCode(), mutNumA.hashCode());
206 assertEquals(mutNumA.hashCode(), mutNumB.hashCode());
207 assertNotEquals(mutNumA.hashCode(), mutNumC.hashCode());
208 assertEquals(mutNumA.hashCode(), Float.valueOf(0f).hashCode());
209 }
210
211 @Test
212 void testIncrement() {
213 final MutableFloat mutNum = new MutableFloat(1);
214 mutNum.increment();
215
216 assertEquals(2, mutNum.intValue());
217 assertEquals(2L, mutNum.longValue());
218 }
219
220 @Test
221 void testIncrementAndGet() {
222 final MutableFloat mutNum = new MutableFloat(1f);
223 final float result = mutNum.incrementAndGet();
224
225 assertEquals(2f, result, 0.01f);
226 assertEquals(2, mutNum.intValue());
227 assertEquals(2L, mutNum.longValue());
228 }
229
230 @Test
231 void testNanInfinite() {
232 MutableFloat mutNum = new MutableFloat(Float.NaN);
233 assertTrue(mutNum.isNaN());
234
235 mutNum = new MutableFloat(Float.POSITIVE_INFINITY);
236 assertTrue(mutNum.isInfinite());
237
238 mutNum = new MutableFloat(Float.NEGATIVE_INFINITY);
239 assertTrue(mutNum.isInfinite());
240 }
241
242 @Test
243 void testPrimitiveValues() {
244 final MutableFloat mutNum = new MutableFloat(1.7F);
245
246 assertEquals(1, mutNum.intValue());
247 assertEquals(1.7, mutNum.doubleValue(), 0.00001);
248 assertEquals((byte) 1, mutNum.byteValue());
249 assertEquals((short) 1, mutNum.shortValue());
250 assertEquals(1, mutNum.intValue());
251 assertEquals(1L, mutNum.longValue());
252 }
253
254 @Test
255 void testSetNull() {
256 final MutableFloat mutNum = new MutableFloat(0f);
257 assertNullPointerException(() -> mutNum.setValue(null));
258 }
259
260 @Test
261 void testSubtractValueObject() {
262 final MutableFloat mutNum = new MutableFloat(1);
263 mutNum.subtract(Float.valueOf(0.9f));
264
265 assertEquals(0.1f, mutNum.floatValue(), 0.01f);
266 }
267
268 @Test
269 void testSubtractValuePrimitive() {
270 final MutableFloat mutNum = new MutableFloat(1);
271 mutNum.subtract(0.9f);
272
273 assertEquals(0.1f, mutNum.floatValue(), 0.01f);
274 }
275
276 @Test
277 void testToFloat() {
278 assertEquals(Float.valueOf(0f), new MutableFloat(0f).toFloat());
279 assertEquals(Float.valueOf(12.3f), new MutableFloat(12.3f).toFloat());
280 }
281
282 @Test
283 void testToString() {
284 assertEquals("0.0", new MutableFloat(0f).toString());
285 assertEquals("10.0", new MutableFloat(10f).toString());
286 assertEquals("-123.0", new MutableFloat(-123f).toString());
287 }
288
289 }