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 MutableByte
30   */
31  class MutableByteTest extends AbstractLangTest {
32  
33      @Test
34      void testAddAndGetValueObject() {
35          final MutableByte mutableByte = new MutableByte((byte) 0);
36          final byte result = mutableByte.addAndGet(Byte.valueOf((byte) 1));
37  
38          assertEquals((byte) 1, result);
39          assertEquals((byte) 1, mutableByte.byteValue());
40      }
41  
42      @Test
43      void testAddAndGetValuePrimitive() {
44          final MutableByte mutableByte = new MutableByte((byte) 0);
45          final byte result = mutableByte.addAndGet((byte) 1);
46  
47          assertEquals((byte) 1, result);
48          assertEquals((byte) 1, mutableByte.byteValue());
49      }
50  
51      @Test
52      void testAddValueObject() {
53          final MutableByte mutNum = new MutableByte((byte) 1);
54          mutNum.add(Integer.valueOf(1));
55  
56          assertEquals((byte) 2, mutNum.byteValue());
57      }
58  
59      @Test
60      void testAddValuePrimitive() {
61          final MutableByte mutNum = new MutableByte((byte) 1);
62          mutNum.add((byte) 1);
63  
64          assertEquals((byte) 2, mutNum.byteValue());
65      }
66  
67      @Test
68      void testCompareTo() {
69          final MutableByte mutNum = new MutableByte((byte) 0);
70  
71          assertEquals((byte) 0, mutNum.compareTo(new MutableByte((byte) 0)));
72          assertEquals((byte) +1, mutNum.compareTo(new MutableByte((byte) -1)));
73          assertEquals((byte) -1, mutNum.compareTo(new MutableByte((byte) 1)));
74      }
75  
76      @Test
77      void testCompareToNull() {
78          final MutableByte mutNum = new MutableByte((byte) 0);
79          assertNullPointerException(() -> mutNum.compareTo(null));
80      }
81  
82      @Test
83      void testConstructorNull() {
84          assertNullPointerException(() -> new MutableByte((Number) null));
85      }
86  
87      @Test
88      void testConstructors() {
89          assertEquals((byte) 0, new MutableByte().byteValue());
90  
91          assertEquals((byte) 1, new MutableByte((byte) 1).byteValue());
92  
93          assertEquals((byte) 2, new MutableByte(Byte.valueOf((byte) 2)).byteValue());
94          assertEquals((byte) 3, new MutableByte(new MutableByte((byte) 3)).byteValue());
95  
96          assertEquals((byte) 2, new MutableByte("2").byteValue());
97  
98      }
99  
100     @Test
101     void testDecrement() {
102         final MutableByte mutNum = new MutableByte((byte) 1);
103         mutNum.decrement();
104 
105         assertEquals(0, mutNum.intValue());
106         assertEquals(0L, mutNum.longValue());
107     }
108 
109     @Test
110     void testDecrementAndGet() {
111         final MutableByte mutNum = new MutableByte((byte) 1);
112         final byte result = mutNum.decrementAndGet();
113 
114         assertEquals(0, result);
115         assertEquals(0, mutNum.intValue());
116         assertEquals(0L, mutNum.longValue());
117     }
118 
119     @Test
120     void testEquals() {
121         final MutableByte mutNumA = new MutableByte((byte) 0);
122         final MutableByte mutNumB = new MutableByte((byte) 0);
123         final MutableByte mutNumC = new MutableByte((byte) 1);
124 
125         assertEquals(mutNumA, mutNumA);
126         assertEquals(mutNumA, mutNumB);
127         assertEquals(mutNumB, mutNumA);
128         assertEquals(mutNumB, mutNumB);
129         assertNotEquals(mutNumA, mutNumC);
130         assertNotEquals(mutNumB, mutNumC);
131         assertEquals(mutNumC, mutNumC);
132         assertNotEquals(null, mutNumA);
133         assertNotEquals(mutNumA, Byte.valueOf((byte) 0));
134         assertNotEquals("0", mutNumA);
135     }
136 
137     @Test
138     void testGetAndAddValueObject() {
139         final MutableByte mutableByte = new MutableByte((byte) 0);
140         final byte result = mutableByte.getAndAdd(Byte.valueOf((byte) 1));
141 
142         assertEquals((byte) 0, result);
143         assertEquals((byte) 1, mutableByte.byteValue());
144     }
145 
146     @Test
147     void testGetAndAddValuePrimitive() {
148         final MutableByte mutableByte = new MutableByte((byte) 0);
149         final byte result = mutableByte.getAndAdd((byte) 1);
150 
151         assertEquals((byte) 0, result);
152         assertEquals((byte) 1, mutableByte.byteValue());
153     }
154 
155     @Test
156     void testGetAndDecrement() {
157         final MutableByte mutNum = new MutableByte((byte) 1);
158         final byte result = mutNum.getAndDecrement();
159 
160         assertEquals(1, result);
161         assertEquals(0, mutNum.intValue());
162         assertEquals(0L, mutNum.longValue());
163     }
164 
165     @Test
166     void testGetAndIncrement() {
167         final MutableByte mutNum = new MutableByte((byte) 1);
168         final byte result = mutNum.getAndIncrement();
169 
170         assertEquals(1, result);
171         assertEquals(2, mutNum.intValue());
172         assertEquals(2L, mutNum.longValue());
173     }
174 
175     @Test
176     void testGetSet() {
177         final MutableByte mutNum = new MutableByte((byte) 0);
178         assertEquals((byte) 0, new MutableByte().byteValue());
179         assertEquals(Byte.valueOf((byte) 0), new MutableByte().get());
180         assertEquals(Byte.valueOf((byte) 0), new MutableByte().getValue());
181 
182         mutNum.setValue((byte) 1);
183         assertEquals((byte) 1, mutNum.byteValue());
184         assertEquals(Byte.valueOf((byte) 1), mutNum.get());
185         assertEquals(Byte.valueOf((byte) 1), mutNum.getValue());
186 
187         mutNum.setValue(Byte.valueOf((byte) 2));
188         assertEquals((byte) 2, mutNum.byteValue());
189         assertEquals(Byte.valueOf((byte) 2), mutNum.get());
190         assertEquals(Byte.valueOf((byte) 2), mutNum.getValue());
191 
192         mutNum.setValue(new MutableByte((byte) 3));
193         assertEquals((byte) 3, mutNum.byteValue());
194         assertEquals(Byte.valueOf((byte) 3), mutNum.get());
195         assertEquals(Byte.valueOf((byte) 3), mutNum.getValue());
196     }
197 
198     @Test
199     void testHashCode() {
200         final MutableByte mutNumA = new MutableByte((byte) 0);
201         final MutableByte mutNumB = new MutableByte((byte) 0);
202         final MutableByte mutNumC = new MutableByte((byte) 1);
203 
204         assertEquals(mutNumA.hashCode(), mutNumA.hashCode());
205         assertEquals(mutNumA.hashCode(), mutNumB.hashCode());
206         assertNotEquals(mutNumA.hashCode(), mutNumC.hashCode());
207         assertEquals(mutNumA.hashCode(), Byte.valueOf((byte) 0).hashCode());
208     }
209 
210     @Test
211     void testIncrement() {
212         final MutableByte mutNum = new MutableByte((byte) 1);
213         mutNum.increment();
214 
215         assertEquals(2, mutNum.intValue());
216         assertEquals(2L, mutNum.longValue());
217     }
218 
219     @Test
220     void testIncrementAndGet() {
221         final MutableByte mutNum = new MutableByte((byte) 1);
222         final byte result = mutNum.incrementAndGet();
223 
224         assertEquals(2, result);
225         assertEquals(2, mutNum.intValue());
226         assertEquals(2L, mutNum.longValue());
227     }
228 
229     @Test
230     void testPrimitiveValues() {
231         final MutableByte mutNum = new MutableByte((byte) 1);
232         assertEquals(1.0F, mutNum.floatValue());
233         assertEquals(1.0, mutNum.doubleValue());
234         assertEquals((byte) 1, mutNum.byteValue());
235         assertEquals((short) 1, mutNum.shortValue());
236         assertEquals(1, mutNum.intValue());
237         assertEquals(1L, mutNum.longValue());
238     }
239 
240     @Test
241     void testSetNull() {
242         final MutableByte mutNum = new MutableByte((byte) 0);
243         assertNullPointerException(() -> mutNum.setValue(null));
244     }
245 
246     @Test
247     void testSubtractValueObject() {
248         final MutableByte mutNum = new MutableByte((byte) 1);
249         mutNum.subtract(Integer.valueOf(1));
250 
251         assertEquals((byte) 0, mutNum.byteValue());
252     }
253 
254     @Test
255     void testSubtractValuePrimitive() {
256         final MutableByte mutNum = new MutableByte((byte) 1);
257         mutNum.subtract((byte) 1);
258 
259         assertEquals((byte) 0, mutNum.byteValue());
260     }
261 
262     @Test
263     void testToByte() {
264         assertEquals(Byte.valueOf((byte) 0), new MutableByte((byte) 0).toByte());
265         assertEquals(Byte.valueOf((byte) 123), new MutableByte((byte) 123).toByte());
266     }
267 
268     @Test
269     void testToString() {
270         assertEquals("0", new MutableByte((byte) 0).toString());
271         assertEquals("10", new MutableByte((byte) 10).toString());
272         assertEquals("-123", new MutableByte((byte) -123).toString());
273     }
274 
275 }