View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *      https://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
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  
23  import org.apache.commons.lang3.AbstractLangTest;
24  import org.junit.jupiter.api.Test;
25  
26  /**
27   * JUnit tests.
28   *
29   * @see MutableLong
30   */
31  class MutableLongTest extends AbstractLangTest {
32  
33      @Test
34      void testAddAndGetValueObject() {
35          final MutableLong mutableLong = new MutableLong(0L);
36          final long result = mutableLong.addAndGet(Long.valueOf(1L));
37  
38          assertEquals(1L, result);
39          assertEquals(1L, mutableLong.longValue());
40      }
41  
42      @Test
43      void testAddAndGetValuePrimitive() {
44          final MutableLong mutableLong = new MutableLong(0L);
45          final long result = mutableLong.addAndGet(1L);
46  
47          assertEquals(1L, result);
48          assertEquals(1L, mutableLong.longValue());
49      }
50  
51      @Test
52      void testAddValueObject() {
53          final MutableLong mutNum = new MutableLong(1);
54          mutNum.add(Long.valueOf(1));
55  
56          assertEquals(2, mutNum.intValue());
57          assertEquals(2L, mutNum.longValue());
58      }
59  
60      @Test
61      void testAddValuePrimitive() {
62          final MutableLong mutNum = new MutableLong(1);
63          mutNum.add(1);
64  
65          assertEquals(2, mutNum.intValue());
66          assertEquals(2L, mutNum.longValue());
67      }
68  
69      @Test
70      void testCompareTo() {
71          final MutableLong mutNum = new MutableLong(0);
72  
73          assertEquals(0, mutNum.compareTo(new MutableLong(0)));
74          assertEquals(+1, mutNum.compareTo(new MutableLong(-1)));
75          assertEquals(-1, mutNum.compareTo(new MutableLong(1)));
76      }
77  
78      @Test
79      void testCompareToNull() {
80          final MutableLong mutNum = new MutableLong(0);
81          assertNullPointerException(() -> mutNum.compareTo(null));
82      }
83  
84      @Test
85      void testConstructorNull() {
86          assertNullPointerException(() -> new MutableLong((Number) null));
87      }
88  
89      @Test
90      void testConstructors() {
91          assertEquals(0, new MutableLong().longValue());
92  
93          assertEquals(1, new MutableLong(1).longValue());
94  
95          assertEquals(2, new MutableLong(Long.valueOf(2)).longValue());
96          assertEquals(3, new MutableLong(new MutableLong(3)).longValue());
97  
98          assertEquals(2, new MutableLong("2").longValue());
99  
100     }
101 
102     @Test
103     void testDecrement() {
104         final MutableLong mutNum = new MutableLong(1);
105         mutNum.decrement();
106 
107         assertEquals(0, mutNum.intValue());
108         assertEquals(0L, mutNum.longValue());
109     }
110 
111     @Test
112     void testDecrementAndGet() {
113         final MutableLong mutNum = new MutableLong(1L);
114         final long result = mutNum.decrementAndGet();
115 
116         assertEquals(0, result);
117         assertEquals(0, mutNum.intValue());
118         assertEquals(0L, mutNum.longValue());
119     }
120 
121     @Test
122     void testEquals() {
123         final MutableLong mutNumA = new MutableLong(0);
124         final MutableLong mutNumB = new MutableLong(0);
125         final MutableLong mutNumC = new MutableLong(1);
126 
127         assertEquals(mutNumA, mutNumA);
128         assertEquals(mutNumA, mutNumB);
129         assertEquals(mutNumB, mutNumA);
130         assertEquals(mutNumB, mutNumB);
131         assertNotEquals(mutNumA, mutNumC);
132         assertNotEquals(mutNumB, mutNumC);
133         assertEquals(mutNumC, mutNumC);
134         assertNotEquals(null, mutNumA);
135         assertNotEquals(mutNumA, Long.valueOf(0));
136         assertNotEquals("0", mutNumA);
137     }
138 
139     @Test
140     void testGetAndAddValueObject() {
141         final MutableLong mutableLong = new MutableLong(0L);
142         final long result = mutableLong.getAndAdd(Long.valueOf(1L));
143 
144         assertEquals(0L, result);
145         assertEquals(1L, mutableLong.longValue());
146     }
147 
148     @Test
149     void testGetAndAddValuePrimitive() {
150         final MutableLong mutableLong = new MutableLong(0L);
151         final long result = mutableLong.getAndAdd(1L);
152 
153         assertEquals(0L, result);
154         assertEquals(1L, mutableLong.longValue());
155     }
156 
157     @Test
158     void testGetAndDecrement() {
159         final MutableLong mutNum = new MutableLong(1L);
160         final long result = mutNum.getAndDecrement();
161 
162         assertEquals(1, result);
163         assertEquals(0, mutNum.intValue());
164         assertEquals(0L, mutNum.longValue());
165     }
166 
167     @Test
168     void testGetAndIncrement() {
169         final MutableLong mutNum = new MutableLong(1L);
170         final long result = mutNum.getAndIncrement();
171 
172         assertEquals(1, result);
173         assertEquals(2, mutNum.intValue());
174         assertEquals(2L, mutNum.longValue());
175     }
176 
177     @Test
178     void testGetSet() {
179         final MutableLong mutNum = new MutableLong(0);
180         assertEquals(0, new MutableLong().longValue());
181         assertEquals(Long.valueOf(0), new MutableLong().get());
182         assertEquals(Long.valueOf(0), new MutableLong().getValue());
183 
184         mutNum.setValue(1);
185         assertEquals(1, mutNum.longValue());
186         assertEquals(Long.valueOf(1), mutNum.get());
187         assertEquals(Long.valueOf(1), mutNum.getValue());
188 
189         mutNum.setValue(Long.valueOf(2));
190         assertEquals(2, mutNum.longValue());
191         assertEquals(Long.valueOf(2), mutNum.get());
192         assertEquals(Long.valueOf(2), mutNum.getValue());
193 
194         mutNum.setValue(new MutableLong(3));
195         assertEquals(3, mutNum.longValue());
196         assertEquals(Long.valueOf(3), mutNum.get());
197         assertEquals(Long.valueOf(3), mutNum.getValue());
198     }
199 
200     @Test
201     void testHashCode() {
202         final MutableLong mutNumA = new MutableLong(0);
203         final MutableLong mutNumB = new MutableLong(0);
204         final MutableLong mutNumC = new MutableLong(1);
205 
206         assertEquals(mutNumA.hashCode(), mutNumA.hashCode());
207         assertEquals(mutNumA.hashCode(), mutNumB.hashCode());
208         assertNotEquals(mutNumA.hashCode(), mutNumC.hashCode());
209         assertEquals(mutNumA.hashCode(), Long.valueOf(0).hashCode());
210     }
211 
212     @Test
213     void testIncrement() {
214         final MutableLong mutNum = new MutableLong(1);
215         mutNum.increment();
216 
217         assertEquals(2, mutNum.intValue());
218         assertEquals(2L, mutNum.longValue());
219     }
220 
221     @Test
222     void testIncrementAndGet() {
223         final MutableLong mutNum = new MutableLong(1L);
224         final long result = mutNum.incrementAndGet();
225 
226         assertEquals(2, result);
227         assertEquals(2, mutNum.intValue());
228         assertEquals(2L, mutNum.longValue());
229     }
230 
231     @Test
232     void testPrimitiveValues() {
233         final MutableLong mutNum = new MutableLong(1L);
234         assertEquals(1.0F, mutNum.floatValue());
235         assertEquals(1.0, mutNum.doubleValue());
236         assertEquals((byte) 1, mutNum.byteValue());
237         assertEquals((short) 1, mutNum.shortValue());
238         assertEquals(1, mutNum.intValue());
239         assertEquals(1L, mutNum.longValue());
240     }
241 
242     @Test
243     void testSetNull() {
244         final MutableLong mutNum = new MutableLong(0);
245         assertNullPointerException(() -> mutNum.setValue(null));
246     }
247 
248     @Test
249     void testSubtractValueObject() {
250         final MutableLong mutNum = new MutableLong(1);
251         mutNum.subtract(Long.valueOf(1));
252 
253         assertEquals(0, mutNum.intValue());
254         assertEquals(0L, mutNum.longValue());
255     }
256 
257     @Test
258     void testSubtractValuePrimitive() {
259         final MutableLong mutNum = new MutableLong(1);
260         mutNum.subtract(1);
261 
262         assertEquals(0, mutNum.intValue());
263         assertEquals(0L, mutNum.longValue());
264     }
265 
266     @Test
267     void testToLong() {
268         assertEquals(Long.valueOf(0L), new MutableLong(0L).toLong());
269         assertEquals(Long.valueOf(123L), new MutableLong(123L).toLong());
270     }
271 
272     @Test
273     void testToString() {
274         assertEquals("0", new MutableLong(0).toString());
275         assertEquals("10", new MutableLong(10).toString());
276         assertEquals("-123", new MutableLong(-123).toString());
277     }
278 
279 }